猿问

如何为不同长度的图设置相同的边距?

我需要为每所学校的成绩和学期绘制条形图,我需要为大约 60 所学校做这个。但是由于有些学校的成绩比其他学校高,即使我用相同的数字大小制作图表,它们看起来也只是大小不同

下面的两所学校是一个例子,一个有 10 个等级,另一个有 11 个,所以底部的图表看起来比顶部的大

我的理想结果如下:


http://img4.mukewang.com/619317020001032105610689.jpg

bin 宽度是否受到影响并不重要。我只希望这组图表具有相同的边距。

区域是这样的一些df:

http://img2.mukewang.com/6193171c00018fd009850072.jpg

任何建议都会有所帮助,提前致谢!


米琪卡哇伊
浏览 196回答 2
2回答

有只小跳蛙

既然您使用 matplotlib,您是否尝试过以下操作?plt.rcParams["figure.figsize"] = [16,9]如果您定义了以下内容,则这是有效的:import matplotlib.pyplot as plt另一方面,一些提示:提供一个开箱即用的代码还提供所需的输入,例如我们您需要的 df有了这两者,您将获得更好更快的答案;)

萧十郎

使用以下代码,我能够重现您的错误。import pandas as pdimport matplotlib.pyplot as pltfor k in range(8,10):    lablist=[j for j in range(k)]    vallist=[j for j in range(k)]    df = pd.DataFrame({'lab':lablist, 'val':vallist})    img_width=1540    n_ind=len(vallist)    leftside = (-0.0075)*(img_width-(n_ind*190)-50)/2 -n_ind*0.15    rightside = (-1)*leftside + n_ind - 1    ax = df.plot.bar(x='lab', y='val', rot=0,figsize=(10,5))    ax.set_xlim([leftside, rightside])错误存在于leftside和rightside计算中,当条数更改时,您尝试添加的空白空间不一致。通过取 x 轴的最小值和最大值并添加一个恒定间隙,您可以对齐图的所有条形for k in range(8,10):    lablist=[j for j in range(k)]    vallist=[j for j in range(k)]    df = pd.DataFrame({'lab':lablist, 'val':vallist})    leftside = df['lab'].min()-0.75    rightside = df['lab'].max()+0.75    ax = df.plot.bar(x='lab', y='val', rot=0,figsize=(10,5))    ax.set_xlim([leftside, rightside])
随时随地看视频慕课网APP

相关分类

Python
我要回答