ax.plot3D添加图例
时间: 2023-08-30 18:05:08 浏览: 102
要在3D图中添加图例,可以使用`legend()`方法。下面是一个示例:
```python
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
ax = fig.add_subplot(projection='3d')
# 生成数据
x = np.linspace(-5, 5, 100)
y = np.linspace(-5, 5, 100)
X, Y = np.meshgrid(x, y)
Z = np.sin(np.sqrt(X**2 + Y**2))
# 绘制曲面图
surf = ax.plot_surface(X, Y, Z, cmap='coolwarm')
# 添加图例
fig.colorbar(surf, shrink=0.5, aspect=5)
plt.show()
```
在这个例子中,我们生成了一个二维的网格数据,并使用`sin`函数生成了一个曲面。使用`plot_surface()`方法绘制曲面图,并使用`cmap`参数指定颜色映射。然后,使用`colorbar()`方法添加图例。`shrink`参数指定图例的缩放比例,`aspect`参数指定图例的宽高比。
相关问题
为什么没有曲线 # 创建一个画布 fig, ax = plt.subplots() # 绘制连接散点图 plt.subplot(231), ax.plot(x, y1, 'r-', label='W') plt.subplot(232), ax.plot(x, y2, 'b-', label='i') plt.subplot(233), ax.plot(x, y3, 'g-', label='K') # 设置图像标题和轴标签 ax.set_title('Scatter Plot with Lines') ax.set_xlabel('X-axis') ax.set_ylabel('Y-axis') plt.show()
这段代码中,绘制曲线的部分存在问题。 `plt.subplot(231)` 这样的语法是不正确的,因为 `plt.subplot()` 函数的返回值是 AxesSubplot 对象,而不是一个元组。因此,可以将绘图命令与 `plt.subplot()` 函数分开,并将其分配给一个变量,然后使用该变量来添加曲线。另外,这段代码中没有给数据 x 和 y1、y2、y3 赋值,所以绘图的数据不正确。下面是修改后的代码示例:
```
import matplotlib.pyplot as plt
import numpy as np
# 生成测试数据
x = np.arange(0, 10, 0.1)
y1 = np.sin(x)
y2 = np.cos(x)
y3 = np.tan(x)
# 创建一个画布
fig, ax = plt.subplots()
# 绘制连接散点图
ax.plot(x, y1, 'r-', label='W')
ax.plot(x, y2, 'b-', label='i')
ax.plot(x, y3, 'g-', label='K')
# 设置图像标题和轴标签
ax.set_title('Scatter Plot with Lines')
ax.set_xlabel('X-axis')
ax.set_ylabel('Y-axis')
# 添加图例
ax.legend()
# 显示图像
plt.show()
```
这段代码将生成包含三条曲线的图形,并将其显示出来。
写一个类似x= np.linspace(-5,2,100) y1=x**3+5*x**2+10 y2=3*x**2+10*x y3=6*x+10 fig, ax=plt.subplots() ax.plot(x,y1,color="blue",label="y(x)") ax.plot(x,y2,color="red",label="y'(x)") ax.plot(x,y3,color="green",label="y''(x)") ax.set_xlabel("x") ax.set_ylabel("y") ax.legend()
好的,这是一个在Python中使用matplotlib库绘制三条曲线的例子。你可以将代码复制到Python环境中运行,或者在Jupyter Notebook中使用。代码如下:
```
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-5, 2, 100)
y1 = x**3 + 5*x**2 + 10
y2 = 3*x**2 + 10*x
y3 = 6*x + 10
fig, ax = plt.subplots()
ax.plot(x, y1, color='blue', label='y(x)')
ax.plot(x, y2, color='red', label="y'(x)")
ax.plot(x, y3, color='green', label="y''(x)")
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.legend()
plt.show()
```
这个例子使用了numpy库生成一个从-5到2的等差数列,然后通过数学公式计算y1、y2和y3的值。接着使用matplotlib库中的subplots()函数创建一个新的图形,并使用plot()函数在图形上绘制三条曲线。最后,使用set_xlabel()和set_ylabel()函数设置x轴和y轴的标签,并使用legend()函数添加图例。最后使用show()函数显示图形。
阅读全文