条形图中的Matplotlib Xticks值

2024-09-24 20:35:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这个代码,我试图做一个图表。列表中的所有值都正确。但是,我在x轴有问题。首先,前两个节拍之间有间隙。我阅读了他们网站上所有的matplotlib,但找不到任何有用的东西来解决这个问题。我对xticks的功能很困惑。This is my graph

plt.bar(Valloc1,[diabete[w] for w in sorted(diabete.keys())], width=0.2,)

plt.bar(Valloc2,[not_diabete[w] for w in sorted(not_diabete.keys())], width=0.1, )

plt.xticks(all_years, rotation = '65')
plt.legend(['Diabete','Not-Diabete'])
plt.xlabel('Years')
plt.ylabel('# of patients')
plt.legend()
plt.show()

我试过这条线,但一切都变糟了。

plt.xticks(range(all_years),all_years, rotation = '65')

我也希望这两条边不重叠。就像这样: Bars side-by-sideBars side-by-side

我的变量是:

Valloc1 = [i for i in range(52)]
diabete = {{1967: 5, 1986: 13, 1985: 9, 1996: 5, 1984: 10, 1987: 6, 1991: 8...}

Tags: infornotbarpltkeysallwidth
1条回答
网友
1楼 · 发布于 2024-09-24 20:35:52

下面是一个如何解决问题的例子。由于您没有提供数据,我首先在下面的示例中生成一些随机数据,然后将其可视化为您要求的条形图:

from matplotlib import pyplot as plt
import numpy as np

##generating some data
years = [1936, 1945]+[i for i in range(1947,1997)]
data1 = np.random.rand(len(years))
data2 = np.random.rand(len(years))

diabete = {key: val for key,val in zip(years, data1)}
not_diabete = {key: val for key,val in zip(years, data2)}



##the actual graph:
fig, ax = plt.subplots(figsize = (10,4))

idx = np.asarray([i for i in range(len(years))])

width = 0.2

ax.bar(idx, [val for key,val in sorted(diabete.items())], width=width)
ax.bar(idx+width, [val for key,val in sorted(not_diabete.items())], width=width)

ax.set_xticks(idx)
ax.set_xticklabels(years, rotation=65)
ax.legend(['Diabete', 'Non-Diabete'])
ax.set_xlabel('years')
ax.set_ylabel('# of patients')

fig.tight_layout()

plt.show()

结果如下:

result of the code provided

相关问题 更多 >