python / matplotlib中带有垂直标签的条形图


72

我正在使用matplotlib生成(垂直)条形图。问题是我的标签比较长。有什么方法可以垂直显示它们,无论是在栏中,上方还是下方?

Answers:


91

您的意思是这样的吗:

>>> from matplotlib import *
>>> plot(xrange(10))
>>> yticks(xrange(10), rotation='vertical')

通常,要以垂直方向显示matplotlib中的任何文本,可以添加关键字rotation='vertical'

有关其他选项,可以查看帮助(matplotlib.pyplot.text)

yticks函数在y轴上绘制刻度线;我不确定您最初是指这个函数还是ylabel函数,但是过程完全相同,您必须添加rotation ='vertical'

也许您还可以找到有用的选项'verticalalignment'和'horizo​​ntalalignment',这使您可以定义如何相对于刻度线或其他元素对齐文本。


请注意,我没有使用plot(); 但是bar()。但是,旋转=“垂直”似乎是关键。但是,这仍然不能在条形图中画出刻度线。
phihag,2009年

您是指xy轴上的刻度吗?看看网格功能。例如grid(ls ='',marker ='v')。grid()控制网格在xy轴上的绘制;使用marker选项,您可以为刻度标记定义阶梯,使用ls =''可以看到不可见的网格。
dalloliogm,2009年

除非有更好的答案,否则您将获得赏金,保证。我将一直无法上网,直到
2009年

1
谢谢!!但是,对于这样的答案,也许500点太高了,并不是那么困难。因此,如果您愿意,可以再保存一次积分:)
dalloliogm

如何为现有的自动生成的刻度标签执行此操作?
EL_DON '16

35

在Jupyter Notebook中,您可能会使用类似这样的内容

%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np

plt.xticks(rotation='vertical')
plt.plot(np.random.randn(100).cumsum())

或者您可以使用:

plt.xticks(rotation=90)

11

请查看此链接:https : //python-graph-gallery.com/7-custom-barplot-layout/

import matplotlib.pyplot as plt

heights = [10, 20, 15]
bars = ['A_long', 'B_long', 'C_long']
y_pos = range(len(bars))
plt.bar(y_pos, heights)
# Rotation of the bars names
plt.xticks(y_pos, bars, rotation=90)

结果将是这样 在此处输入图片说明

希望它会有所帮助。


有没有一种方法可以将标签倾斜,例如对角线。
Nguai al

嗨,Nguai al,您可以简单地将最后一行中的“旋转”参数更改为您喜欢的任何角度。例如,plt.xticks(y_pos,bars,rotation = 45),将为您提供45度x标签。
星运

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.