当前位置: 首页 > 面试题库 >

Python-修改刻度标签文本

池照
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”的刻度。


问题答案:

警告:除非ticklabel已设置为字符串(例如在boxplot中通常是这种情况),否则这不适用于任何比Matplotlib更新的版本1.1.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故意避免对刻度等进行“静态”定位,除非明确告知。假设你要与图进行交互,因此图的边界,刻度线,刻度标签等将动态变化。

因此,你不能只设置给定刻度标签的文本。默认情况下,每次绘制绘图时,都会通过轴的“定位器”和“格式化程序”将其重置。

但是,如果将“定位器”和“格式化程序”设置为静态(分别为FixedLocatorFixedFormatter),则刻度线标签保持不变。

这是什么set_*ticklabelsax.*axis.set_ticklabels做。

希望这可以使我们更加清楚地知道为什么更改单个刻度标签有些麻烦。

通常,你实际要做的只是注释特定位置。在这种情况下,请查看annotate



 类似资料:
  • 问题内容: 对于y轴上的每个刻度标签,我想更改: 我正在绘制对数日志数据(以2为底),但是我希望标签显示原始数据值。 我知道我可以得到当前的y标签 这给了我一个列表: 每个列表都是 我在http://matplotlib.org/users/text_props.html上查看了文本对象的文档, 但是我仍然不确定更改每个文本标签中的字符串的正确语法是什么。 更改标签后,可以使用以下方法在轴上设置它

  • 问题内容: 我可以用 但这也会删除标签。我可以以任何方式绘制刻度标签,但不能绘制刻度和书脊 问题答案: 您可以使用(http://matplotlib.org/api/axes_api.html#matplotlib.axes.Axes.tick_params)将刻度长度设置为0 :

  • 我想对绘图中的几个选定记号标签进行一些修改。 例如,如果我这样做: 刻度标签的字体大小和方向会改变。 但是,如果尝试: 刻度标签未被修改。另外,如果我这样做: 没有打印任何内容。 还有一些奇怪的地方。当我尝试这样做时: 仅打印空字符串,但绘图包含标记为“0.0”、“0.5”、“1.0”、“1.5”和“2.0”的记号。

  • 刻度指的是轴上数据点的标记,Matplotlib 能够自动的在 x 、y 轴上绘制出刻度。这一功能的实现得益于 Matplotlib 内置的刻度定位器和格式化器(两个内建类)。在大多数情况下,这两个内建类完全能够满足我们的绘图需求,但是在某些情况下,刻度标签或刻度也需要满足特定的要求,比如将刻度设置为“英文数字形式”或者“大写阿拉伯数字”,此时就需要对它们重新设置。 xticks() 和 ytic

  • 我需要移动轴中所有刻度线的标签(),使文本位于其自己的刻度线和下一个刻度线的中间。 我正在使用Roland的甘特图控件(经过一些修改)和Christian Schudt的DateAxis作为我的X轴。我的目标是根据Date值绘制甘特图(忽略时间;所有时间值都被截断)。 我的甘特图对每个任务都有一个“开始日期”和“结束日期”(即在图表上,它由一个条形图表示)。 考虑一下: 我有一个从2月1日开始的任

  • 问题内容: 我已经用JFreeChart制作了以下图表: 替代文字 是否有可能(如果可以的话)在x轴上扩展日期,使其包含年份,例如。2010年4月2日,2010年5月2日,…,2010年6月3日? 问题答案: 目前尚不清楚,你现在是如何格式化日期,但 在 允许你指定一个合适的。 如果还没有,你应该能够覆盖 在 为罗马数字。 附录:为进行正确的本地化,执行以下操作可能会更容易