为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

米琪卡哇伊 2021-11-16 10:00:55
我需要为每所学校的成绩和学期绘制条形图,我需要为大约 60 所学校做这个。但是由于有些学校的成绩比其他学校高,即使我用相同的数字大小制作图表,它们看起来也只是大小不同下面的两所学校是一个例子,一个有 10 个等级,另一个有 11 个,所以底部的图表看起来比顶部的大我的理想结果如下:bin 宽度是否受到影响并不重要。我只希望这组图表具有相同的边距。和区域是这样的一些df:任何建议都会有所帮助,提前致谢!
查看完整描述

2 回答

?
有只小跳蛙

TA贡献1824条经验 获得超8个赞

既然您使用 matplotlib,您是否尝试过以下操作?

plt.rcParams["figure.figsize"] = [16,9]

如果您定义了以下内容,则这是有效的:

import matplotlib.pyplot as plt

另一方面,一些提示:

  • 提供一个开箱即用的代码

  • 还提供所需的输入,例如我们您需要的 df

有了这两者,您将获得更好更快的答案;)


查看完整回答
反对 回复 2021-11-16
?
萧十郎

TA贡献1815条经验 获得超13个赞

使用以下代码,我能够重现您的错误。


import pandas as pd

import matplotlib.pyplot as plt



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})

    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])

//img1.sycdn.imooc.com//6193173e0001d62205850317.jpg

//img1.sycdn.imooc.com//619317470001b88c05880317.jpg

错误存在于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])

//img1.sycdn.imooc.com//6193175600015f2a05880318.jpg

//img1.sycdn.imooc.com//6193175d0001415305880317.jpg

查看完整回答
反对 回复 2021-11-16
  • 2 回答
  • 0 关注
  • 195 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信