DAY17 Python做boxplot图常见问题及解决方案

终于做出了想要的boxplot图

1)matplotlib API https://matplotlib.org/api/_as_gen/matplotlib.pyplot.html#module-matplotlib.pyplot

2)解决LInux端没有GUI问题

matplotlib.use('Agg')
import matplotlib.pyplot as plt

#而且必须添加在import matplotlib.pyplot之前,否则无效

3)解决list长度不一致问题

pd.Series(np.array(list))

4)设置颜色和透明度

for i in range(len(bp['boxes'])):
    setp(bp['boxes'][i], color=color[i])  # 设置盒体的颜色
    setp(bp['caps'][i*2], color=color[i])  # 设置上边缘颜色
    setp(bp['caps'][i*2+1], color=color[i])  # 设置下边缘颜色
    setp(bp['whiskers'][i*2], color=color[i])  # 设置上面的须的颜色
    setp(bp['whiskers'][i*2], linestyle='-')  # 设置上面的须为实线
    setp(bp['whiskers'][i*2+1], color=color[i])  # 设置下面的须的颜色
    setp(bp['whiskers'][i*2+1], linestyle='-')  # 设置下面的须为实线
    setp(bp['medians'][i], color=color_palette[i])  # 设置中位线的颜色
    bp['boxes'][i].set_alpha(0.5)  # 设置盒体透明度

5)按列表顺序(而非字典序)生成柱体

plt.xticks(np.arange(len(kinds))+1, kinds)  # 如果没有+1标签会与柱体错开一位,原因不明

6)将纵轴转化为百分数

from matplotlib.ticker import FuncFormatter

def to_percent(temp, position):
    return '%1.0f' % (100 * temp) + '%'

plt.gca().yaxis.set_major_formatter(FuncFormatter(to_percent))

7)网格线

plt.grid(b=None)  # 不显示网格线

8)设置边距

plt.subplots_adjust(left=0.15, bottom=0.4, right=0.95, top=0.95)  # 边距

9)保存结果为pdf

plt.savefig('result.pdf', dpi=1000)  # dpi为分辨率

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值