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

matplotlib条形图,在条形中间设置xticklabel的通用方法

贡念
2023-03-14
问题内容

以下代码生成一个带有xticklabels的条形图,每个条形图居中。但是,缩放x轴,更改条形数量或更改条形宽度确实会更改标签的位置。是否存在处理该行为的通用方法?

# This code is a hackish way of setting the proper position by trial
# and error.
import matplotlib.pyplot as plt
import numpy as np
y = [1,2,3,4,5]
# adding 0.75 did the trick but only if I add a blank position to `xl`
x = np.arange(0,len(y)) + 0.75
xl = ['', 'apple', 'orange', 'pear', 'mango', 'peach']

fig = plt.figure()
ax = fig.add_subplot(111)
ax.bar(x,y,0.5)
ax.set_xticklabels(xl)
# I cannot change the scaling without changing the position of the tick labels
ax.set_xlim(0,5.5)

建议和可行的解决方案

import matplotlib.pyplot as plt
import numpy as np
y = [1,2,3,4,5]
x = np.arange(len(y))
xl = ['apple', 'orange', 'pear', 'mango', 'peach'] 
fig = plt.figure()
ax = fig.add_subplot(111)
ax.bar(x,y,0.5, align='center')
ax.set_xticks(x)
ax.set_xticklabels(xl)

问题答案:

因此,问题在于您只能致电ax.set_xticklabels。这样可以固定标签,但是刻度位置仍由来处理,AutoLocator在更改轴限制时会添加/删除刻度。

因此,您还需要修复刻度位置:

ax.set_xticks(x)
ax.set_xticklabels(xl)

通过调用set_xticksAutoLocator替换为引擎盖下的FixedLocator

然后,您可以将条居中以使其看起来更好(可选):

ax.bar(x, y, 0.5, align='center')


 类似资料:
  • 我正在尝试使用matplotlib创建条形图。 x轴数据是带有年份的列表:[19501960、19701、980、19901、995-2015] y轴数据是一个数量与年数相等的列表。 这是我的代码: 结果是:条与条之间有太多的空间 正如你所看到的,1950-1960年之间的差距是巨大的。我怎么能做到这一点,这样1950-1995年酒吧之间就没有间隙。我知道它的间隔为10年,但看起来并不好。 任何帮

  • 问题内容: 我在Matplotlib中制作条形图,调用如下: 有没有一种方法可以在Matplotlib中使用此功能来实现? 问题答案: 将添加为关键字参数。例如 。 这将垂直填充条形间隙。

  • 我用Matplotlib做了一个条形图,调用如下: 我得到一个条形图,看起来像这样: 我想要的是在连续的条之间没有空白,例如,更像这样: 有没有办法在Matplotlib中使用函数来实现这一点?

  • 我刚刚开始学习为Android编码和开发。 现在,我正在尝试这样做:Project Fi App UI然而,我在MPAndroidChart库中找不到参数或方法来设置条形图(或我正在使用的水平条形图)中条形图的比例。条形图中的条形图只是自动决定其比例。我想要的是一个固定的Y轴最大范围,图中条形的比例根据其值而变化。 另一个问题是,我无法摆脱每个酒吧上的标签。我写道 但条的右边仍然有一个值。 包含条

  • 在使用matplotlib时,如何为直方图绘制平均线(水平)? 现在,我可以毫无问题地绘制直方图。下面是我使用的代码: 我想绘制PAAE 1,2和AAE 1,2的平均线。我应该用什么来绘制平均线?

  • 我是Python新手,需要使用pyplot和matplotlib生成条形图。到目前为止,我是这样尝试的(我只附上了重要的代码片段):