当前位置: 首页 > 知识库问答 >
问题:

修改勾号标签文本

魏烨熠
2023-03-14

我想对绘图中的几个选定记号标签进行一些修改。

例如,如果我这样做:

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”的记号。

共有3个答案

关翰
2023-03-14

在较新版本的matplotlib中,如果您没有设置带有一堆str值的刻度标签,默认情况下它们是"(当绘制图时,标签只是刻度值)。知道这一点,要获得你想要的输出,需要这样的东西:

>>> from pylab import *
>>> axes = figure().add_subplot(111)
>>> a=axes.get_xticks().tolist()
>>> a[1]='change'
>>> axes.set_xticklabels(a)
[<matplotlib.text.Text object at 0x539aa50>, <matplotlib.text.Text object at 0x53a0c90>, 
<matplotlib.text.Text object at 0x53a73d0>, <matplotlib.text.Text object at 0x53a7a50>, 
<matplotlib.text.Text object at 0x53aa110>, <matplotlib.text.Text object at 0x53aa790>]
>>> plt.show()

现在,如果你检查\xticklabel,它们不再是一堆'

>>> [item.get_text() for item in axes.get_xticklabels()]
['0.0', 'change', '1.0', '1.5', '2.0']

它适用于从1.1.1rc1到当前版本2.0的版本。

韩佐
2023-03-14

你也可以用pylab和xticks来实现这一点

import matplotlib
import matplotlib.pyplot as plt
x = [0,1,2]
y = [90,40,65]
labels = ['high', 'low', 37337]
plt.plot(x,y, 'r')
plt.xticks(x, labels, rotation='vertical')
plt.show()

https://matplotlib.org/stable/gallery/ticks_and_spines/ticklabels_rotation.html

许高峻
2023-03-14

警告:除非ticklabels已设置为字符串(如箱线图中通常的情况),否则这将不适用于任何比1.1更新的matplotlib版本。0。如果您使用的是当前的github主机,则此操作将不起作用。我还不确定问题出在哪里。。。这可能是无意中的改变,也可能不是。。。

通常,你会按照以下思路做一些事情:

import matplotlib.pyplot as plt

fig, ax = plt.subplots()

# We need to draw the canvas, otherwise the labels won't be positioned and 
# won't have values yet.
fig.canvas.draw()

labels = [item.get_text() for item in ax.get_xticklabels()]
labels[1] = 'Testing'

ax.set_xticklabels(labels)

plt.show()

要理解为什么需要跨越这么多障碍,需要进一步了解matplotlib的结构。

Matplotlib故意避免对记号等进行“静态”定位,除非明确要求这样做。假设您希望与绘图交互,因此绘图的边界、记号、标签等将动态更改。

因此,不能只设置给定记号标签的文本。默认情况下,每次绘制绘图时,轴的定位器和格式设置程序都会重新设置它。

但是,如果定位器和格式设置为静态(分别为FixedLocatorFixedFor事),则刻度标签保持不变。

这就是set_*ticklebalsax*轴设置标签does。

希望这能让我们更清楚地了解为什么更改单个蜱虫标签有点复杂。

通常,你实际上想做的只是注释某个位置。在这种情况下,请改为查看注释

 类似资料:
  • 问题内容: 我想对图中的几个选定的刻度线标签进行一些修改。 例如,如果我这样做: 字体大小和刻度标签的方向已更改。 但是,如果尝试: 蜱标签不修改。另外,如果我这样做: 什么都不会打印。 这里有些奇怪。当我尝试这个: 仅打印空字符串,但图中包含标记为“ 0.0”,“ 0.5”,“ 1.0”,“ 1.5”和“ 2.0”的刻度。 问题答案: 警告:除非已设置为字符串(例如在boxplot中通常是这种情

  • OK!所以,我有一个大图表,包含了双轴例子中的几个元素 现在我的问题是,Y轴标题的大小和字体已经修改,并且在主Y轴上显示正确。在第二个(有问题的“lulu”)中,我得到了一个自定义字体和大小。显然,两者不匹配,我需要更改secondary NumberAxis标题标签的字体和大小以与原始标签相对应。 除了用我自己的字体和大小对NumberAxis和plugin进行子类化之外,还有什么方法可以更改标

  • 在Matplotlib中创建子地块数组时,有没有一种方法可以完全去掉勾号标签?我目前需要根据绘图对应的较大数据集的行和列指定每个绘图。我尝试使用ax.setxticks([])和类似的y轴命令,但没有成功。 我认识到,这可能是一个不寻常的要求,希望作出一个绘图没有轴数据,但这是我需要的。我需要它自动应用于数组中的所有子地块。

  • 问题内容: 我正在使用docx4j读取Word文档的内容。 core.xml有一个标签,我想在正在阅读的文档中对其进行修改。 最好的方法是什么?我是否必须阅读文档的全部内容并使用docx4j创建一个新文档并更改标签,或者是否可以仅更改标签而不修改和/或阅读->复制文档的内容? 问题答案: 有关如何获取核心道具部分的信息,请参阅第64行的DocProps.java示例。 然后是这样的: 然后修改该列

  • 我正在尝试为用Java编写的应用程序制作GUI。 我用Scene Builder制作了fxml文档,正确设置了fx: id,现在我正在尝试对表单进行简单的更改。 我的DocumentController: 我的外汇主文件: 我现在想要的一切,都是将LabelData设置为实际时间戳,但当我运行FX主文件时,什么都不会发生。有人能帮我吗? 谢谢你保罗 更新时间: 我的整个FXML文档: 我想要的一切

  • 本文向大家介绍批量修改标签css样式以input标签为例,包括了批量修改标签css样式以input标签为例的使用技巧和注意事项,需要的朋友参考一下