第一个Jupyter细胞:
import matplotlib.pyplot as plt
import numpy as np
import matplotlib.animation as animation
%matplotlib notebook
plt.figure()
plt.plot((1,2,3))
labels = [item.get_text() for item in plt.gca().get_xticklabels()]
print("Labels are: {}".format(labels))
输出是(除了图表):
标签是:['','','','','&#39 ;,''','','','',&#39 ;']
现在,在另一个单元格中,如果我运行相同的代码:
labels = [item.get_text() for item in plt.gca().get_xticklabels()]
print("Labels are: {}".format(labels))
输出是:
标签是:['',' 0.00',' 0.25',' 0.50',' 0.75',' 1.00',' 1.25',' 1.50',' 1.75',' 2.00','']
为什么引用相同Axes的相同代码会返回不同的结果?
答案 0 :(得分:0)
而不是:
%matplotlib notebook
使用:
%matplotlib inline
答案 1 :(得分:0)
这是一个有趣的问题,据我所知,当你在两个代码中引用相同的对象时,jupyter所做的实际绘图并不是 - 无效。
当单元格中的代码完成运行时(至少使用笔记本后端)生成绘图本身,并且在生成期间,将填充诸如xtick-labels之类的详细信息。天真地我认为这是因为你可以在图中添加额外的东西来改变图中的 x 和 y 限制,只有这样才能做到这一点。我们需要看到它。
请注意,如果您提前知道它们将会是什么(或者您希望它们是什么),您可以手动在生成图表之前设置xtick-labels:< / p>
plt.gca().set_xticklabels(list_of_labels)
但是,如果在生成绘图之前确实需要标签值,则可以始终使用
plt.gca().get_xticks()
这将返回刻度线的位置列表,从那里可以很容易地制作标签
import matplotlib.pyplot as plt
import numpy as np
import matplotlib.animation as animation
%matplotlib notebook
# generate the figure and axes objects
plt.figure()
plt.plot((1, 2, 3)) # plot the data
# now we can look at the xtick positions, and infer the labels
labels = ["{:.2f}".format(item) for item in plt.gca().get_xticks()]
print("Labels are: {}".format(labels))