Spark Pandas绘制多列条形图及科目过多时条形过窄问题咨询
代码正确性判断
你的写法逻辑符合需求,但是存在1处会触发报错的细节问题:
你的Spark DataFrame中的分数列名是首字母大写的Marks,但pivot方法中传入的是小写的marks,列名不匹配会抛出KeyError,修改为对应列名即可正常运行:
barchartPandas = df.toPandas() # 修正列名大小写,匹配原始字段 barchartPandas.pivot('year', 'subject', 'Marks').plot.bar(stacked=False, figsize=(20,10))
补充说明:你当前设置了legend=False,如果科目数量较多,建议移除该参数保留图例,否则无法区分不同颜色对应的科目。
条形宽度&拥挤问题解决方案
可以通过以下几种方式组合调整,增大条形尺寸、优化展示效果:
- 直接调整条形宽度参数
plot.bar方法自带width参数,默认值为0.8,取值范围0-1,数值越大条形越宽:
barchartPandas.pivot('year', 'subject', 'Marks').plot.bar( stacked=False, figsize=(20,10), width=0.9 # 调整每组条形的总宽度 )
- 增大画布横轴尺寸
你当前设置的画布尺寸是(20,10),可以进一步增大第一个参数(横轴长度),给条形预留更多展示空间:
# 横轴改为30,整体画布更宽 figsize=(30,10)
- 改用横向条形图
如果科目数量非常多,横向条形图的展示效果远好于纵向,只需要把plot.bar改为plot.barh即可:
barchartPandas.pivot('year', 'subject', 'Marks').plot.barh(stacked=False, figsize=(20,15))
- 优化标签展示避免挤压
可以添加rot参数旋转x轴标签,避免标签重叠占用额外空间,间接给条形预留更多宽度:
# x轴标签旋转45度 plot.bar(stacked=False, figsize=(20,10), width=0.9, rot=45)
内容的提问来源于stack exchange,提问作者tharindu
相关产品推荐
相关产品推荐

