我想对绘图中的几个选定记号标签进行一些修改
例如,如果我这样做:
label = axes.yaxis.get_major_ticks()[2].label
label.set_fontsize(size)
label.set_rotation('vertical')
勾号标签的字体大小和方向已更改
但是,如果尝试:
label.set_text('Foo')
勾号标签未修改。如果我这样做:
print label.get_text()
没有打印任何内容
还有一些奇怪的地方。当我尝试这样做时:
from pylab import *
axes = figure().add_subplot(111)
t = arange(0.0, 2.0, 0.01)
s = sin(2*pi*t)
axes.plot(t, s)
for ticklabel in axes.get_xticklabels():
print ticklabel.get_text()
仅打印空字符串,但绘图包含标记为“0.0”、“0.5”、“1.0”、“1.5”和“2.0”的记号
也可以使用pylab和xticks
https://matplotlib.org/stable/gallery/ticks_and_spines/ticklabels_rotation.html
在较新版本的
matplotlib
中,如果未使用一组str
值设置记号标签,则默认情况下它们为''
(绘制绘图时,标签仅为记号值)。要知道,要获得所需的输出,需要以下内容:结果是:
现在如果你检查
_xticklabels
,它们不再是一群''
它在从
1.1.1rc1
到当前版本2.0
的版本中工作警告:除非ticklabels已设置为字符串(如方框图中通常的情况),否则这将不适用于任何比
1.1.0
更新的matplotlib版本。如果您使用的是当前的github主机,则此操作将不起作用。我还不确定问题出在哪里。。。这可能是无意中的改变,也可能不是通常,你会按照以下思路做一些事情:
要理解为什么需要跨越这么多障碍,需要进一步了解matplotlib的结构
Matplotlib故意避免对记号等进行“静态”定位,除非明确要求这样做。假设您希望与绘图交互,因此绘图的边界、记号、标签等将动态更改
因此,不能只设置给定记号标签的文本。默认情况下,每次绘制绘图时,轴的定位器和格式设置程序都会重新设置它
但是,如果定位器和格式化程序设置为静态(
FixedLocator
和FixedFormatter
),则记号标签保持不变这就是
set_*ticklabels
或ax.*axis.set_ticklabels
所做的希望这能让我们更清楚地了解为什么更改单个蜱虫标签有点复杂
通常,你真正想做的只是注释一个特定的位置。在这种情况下,请查看
annotate
相关问题 更多 >
编程相关推荐