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

在python matplotlib中旋转轴文本

东郭昌胤
2023-03-14

我不知道如何在X轴上旋转文本。这是一个时间戳,所以随着样本数量的增加,它们越来越接近,直到它们重叠。我想将文本旋转90度,这样随着样本越来越近,它们就不会重叠。

下面是我所拥有的,它工作正常,除了我不知道如何旋转X轴文本。

import sys

import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
import datetime

font = {'family' : 'normal',
        'weight' : 'bold',
        'size'   : 8}

matplotlib.rc('font', **font)

values = open('stats.csv', 'r').readlines()

time = [datetime.datetime.fromtimestamp(float(i.split(',')[0].strip())) for i in values[1:]]
delay = [float(i.split(',')[1].strip()) for i in values[1:]]

plt.plot(time, delay)
plt.grid(b='on')

plt.savefig('test.png')

共有3个答案

萧无尘
2023-03-14

简单的方法

如这里所述,在matplotlib.pyplot类中有一个现有的方法可以自动为您的图适当地旋转日期。

您可以在绘制数据后调用它(即ax.plot(dates,ydata)

fig.autofmt_xdate()

如果您需要进一步格式化标签,请检查上面的链接。

非日期时间对象

根据Langitar的评论,我为非日期时间xticks建议的方法在缩放等时不会正确更新。如果它不是用作x轴数据datetime对象,您应该遵循Tommy的回答:

for tick in ax.get_xticklabels():
    tick.set_rotation(45)
易炳
2023-03-14

这里有许多“正确”的答案,但我会再补充一个,因为我认为一些细节被遗漏了。OP要求90度旋转,但我会改为45度,因为当你使用不是0或90的角度时,你也应该改变水平对齐;否则你的标签会偏离中心,有点误导(我猜很多人来这里想旋转轴到90以外的东西)。

plt.xticks(rotation=45, ha='right')

如前所述,如果您更愿意采用面向对象的方法,那么这可能是不可取的。

另一种快捷方式(适用于日期对象,但似乎适用于任何标签;不过,我怀疑这是推荐的):

fig.autofmt_xdate(rotation=45)

你通常会从:

  • fig=plt。gcf()

如果您有标签列表:

labels = ['One', 'Two', 'Three']
ax.set_xticklabels(labels, rotation=45, ha='right')

如果要从当前打印中获取标签列表,请执行以下操作:

# Unfortunately you need to draw your figure first to assign the labels,
# otherwise get_xticklabels() will return empty strings.
plt.draw()
ax.set_xticklabels(ax.get_xticklabels(), rotation=45, ha='right')

与上面类似,但改为手动循环。

for label in ax.get_xticklabels():
  label.set_rotation(45)
  label.set_ha('right')

我们仍然在这里使用pyfield(作为plt),但是它是面向对象的,因为我们正在更改特定的ax对象的属性。

plt.setp(ax.get_xticklabels(), rotation=45, ha='right')

此选项很简单,但您不能以这种方式设置标签水平对齐,因此如果角度不是90,则另一个选项可能更好。

ax.tick_params(axis='x', labelrotation=45)

编辑:关于这个确切的“错误”有讨论,但尚未发布修复程序(从3.4.0):https://github.com/matplotlib/matplotlib/issues/13774

盖高畅
2023-03-14

这对我有效:

plt.xticks(rotation=90)
 类似资料:
  • 我是XNA的新手。我只是陷入了某种困境——我必须在游戏中倾斜/翻转角色,这意味着围绕X轴和Z轴旋转(不是同时旋转!)我可以做旋转-这意味着绕Y轴旋转。我有旋转矩阵,角色的当前位置向量(也是可以从旋转矩阵中获得的朝向/方向向量)我通过将朝向向量围绕Y轴旋转R弧度来实现旋转,即围绕Y轴旋转。比如说,如果我现在绕X轴旋转,那么方法是什么?例如,从站立姿势改为“超人飞行”姿势需要角色倾斜。。。y旋转不涉及

  • 本文向大家介绍PythonMatplotlib,包括了PythonMatplotlib的使用技巧和注意事项,需要的朋友参考一下 示例 Matplotlib是一个用于Python的数学绘图库,它提供了各种不同的绘图功能。 您可以在此处找到matplotlib文档,并在此处提供SO文档。 Matplotlib提供了两种不同的绘图方法,尽管它们在很大程度上可以互换: 首先,matplotlib提供了py

  • 下面我有这个程序。我想让程序在同一点旋转形状,也旋转矩形不止一次。但是,程序只旋转矩形一次,并将旋转后的形状放在框架的另一个点上。我真的需要帮助。谢谢!!!!*

  • 我试图让x轴标签在柱状图上旋转45度,但没有成功。这是我下面的代码:

  • 如何将文本标签与图中的x标记对齐?我正在使用主机。设置标签(标签,rotation='vertical'),但这似乎不起作用。我的标签是句子,有些可能比其他的小/大,比如“木乃伊归来第2部分”-我如何在x轴下方填充一个空间来容纳这个? 我需要对齐图中的“黑色”体量。 我尝试了这里的例子中的建议python旋转值在xax上不重叠-plt.xticks(x,标签,旋转='垂直'),等等,但没有工作。

  • 问题内容: 我对Three.js的旋转有很大的疑问,我想在自己的一款游戏中旋转3D立方体。 并且(x,y,z)可以是(1、0、0) 则多维数据集可以旋转,但是问题在于多维数据集绕其自身的轴旋转,因此,旋转后,它无法按预期旋转。 并且我尝试使用 matrixRotationWorld 作为 但它不起作用,我不以错误的方式使用它,还是有其他方法。 因此,如何让3D立方体绕世界轴旋转??? 问题答案: