我有一个关于给一个情节一个标题和/或标签的问题。大多数时候我更喜欢使用这样的系统:
import matplotlib.pyplot as plt
x = [1,2,3,4]
y = [20, 21, 20.5, 20.8]
fig, axarr = plt.subplots(n,m)
axarr[n,m] = plt.plot(x,y)
axarr[n,m].set_xlabel('x label')
axarr[n,m].set_ylabel('y label')
axarr[n,m].set_xlabel('title')
etc
但是现在我转换了一个matlab脚本,为了尽可能接近,我想尝试一下那个系统。我希望我的代码看起来像这样:
import matplotlib.pyplot as plt
x = [1,2,3,4]
y = [20, 21, 20.5, 20.8]
ax = plt.plot(x,y)
ax.set_xlabel('x label')
ax.set_ylabel('y label')
ax.set_xlabel('title')
etc
但现在标签/标题给予错误AttributeError: 'list' object has no attribute 'set_xlabel'
所以我四处寻找,在https://sites.google.com/site/scigraphs/tutorial上发现下面的代码可以工作。
#import matplotlib libary
import matplotlib.pyplot as plt
#define some data
x = [1,2,3,4]
y = [20, 21, 20.5, 20.8]
#plot data
plt.plot(x, y, linestyle="dashed", marker="o", color="green")
#configure X axes
plt.xlim(0.5,4.5)
plt.xticks([1,2,3,4])
#configure Y axes
plt.ylim(19.8,21.2)
plt.yticks([20, 21, 20.5, 20.8])
#labels
plt.xlabel("this is X")
plt.ylabel("this is Y")
#title
plt.title("Simple plot")
#show plot
plt.show()
所以基本上是我的问题,为什么我不能使用中间的方法来添加标签或标题(请也为什么),但我需要或子情节(方法1)或示例的方法?
1条答案
按热度按时间u3r8eeie1#
正如
plot()
的文档所解释的那样,plot()
返回Line2D
对象的列表,而不是Axes
,这就是第二个代码不起作用的原因。本质上,有两种方法可以使用matplotlib:
import matplotlib.pyplot as plt
)。然后每个命令都以plt.xxxxx()
开始,它们作用于最后创建的Axes对象,你通常不需要显式引用它。那么,您的代码将是:
你的代码应该写在哪里:
通常不建议混合使用这两种方法。pyplot API对于从MATLAB迁移的人来说很有用,但是对于几个子图,很难确定一个人正在使用哪个Axes,因此推荐使用OO方法。
请参阅matplotlib常见问题解答的这一部分以获取更多信息。