gpt4 book ai didi

python - 如何修复此 matplotlib 图中的条形宽度

转载 作者:行者123 更新时间:2023-11-30 22:36:02 26 4
gpt4 key购买 nike

有人可以告诉我如何修改这个使用 matplotlib 的 Python 代码,以便无论绘制了多少分数,条形的宽度都将保持不变吗?预先感谢您!

# data to plot
n_groups = len(math_scores)
###print "im here", math_scores,verbal_scores
scores_readingwriting = verbal_scores
scores_math = math_scores

# create plot
fig, ax = plot.subplots()
index = np.arange(n_groups)
bar_width = 0.35
opacity = 0.8

rects1 = plot.bar(index, scores_readingwriting, bar_width,
alpha=opacity,
color='black',
label='R/W')

rects2 = plot.bar(index + bar_width, scores_math, bar_width,
alpha=opacity,
color='grey',
label='Math')

plot.xlabel('Date',size='14')
plot.ylabel('Scores',size='14')

plot.title(str(first_names[i])+' '+str(last_names[i])+"'s History",size='17')
num=len(scores)
###print datesofinterest
plot.xticks(index + bar_width/2, datesofinterest,size='12')
plot.yticks(size='12')
axes = plot.gca()
axes.set_ylim([200,800])
plot.legend()

plot.tight_layout()
fig.savefig('img'+str(student_ids[i])+'.png')

最佳答案

条形宽度相同!它们看起来不一样的原因是因为您使用的是这一行:

index = np.arange(n_groups)

这将改变您的 x 值,从而改变您的 x 轴的比例。为了抵消这种影响,您可以更改 x 轴的限制,或者使条形宽度取决于分数的数量,例如,如果 0.35 的宽度适用于 10 个分数,那么如果您将分数数量加倍,您将条宽度的一半(反之亦然)。您可以看到更改轴限制或条形宽度如何使条形看起来具有相同的宽度:

import numpy as np
import matplotlib.pyplot as plt

# make some dummy data
scores_reading = np.random.randint(50,100,10)
scores_math = np.random.randint(50,100,10)

fig = plt.figure(figsize=(16,5))
bar_width = 0.35
index = np.arange(10)

ax1 = fig.add_subplot(1,4,1)
ax1.bar(index, scores_reading, bar_width, fc='b', edgecolor='none')
ax1.bar(index+bar_width, scores_math, bar_width, fc='r', edgecolor='none')
ax1.set_xlim(0,10)
ax1.set_title('Original - 10 scores')

ax2 = fig.add_subplot(1,4,2)
ax2.bar(index[:5], scores_reading[:5], bar_width, fc='b', edgecolor='none')
ax2.bar(index[:5]+bar_width, scores_math[:5], bar_width, fc='r', edgecolor='none')
ax2.set_title('Original - 5 scores')

ax3 = fig.add_subplot(1,4,3)
ax3.bar(index[:5], scores_reading[:5], bar_width, fc='b', edgecolor='none')
ax3.bar(index[:5]+bar_width, scores_math[:5], bar_width, fc='r', edgecolor='none')
ax3.set_xlim(0,10)
ax3.set_title('Changed limit - 5 scores')

ax4 = fig.add_subplot(1,4,4)
ax4.bar(index[:5], scores_reading[:5], bar_width/2., fc='b', edgecolor='none')
ax4.bar(index[:5]+bar_width, scores_math[:5], bar_width/2., fc='r', edgecolor='none')
ax4.set_title('Changed width - 5 scores')

fig.show()

enter image description here

关于python - 如何修复此 matplotlib 图中的条形宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44340637/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com