爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 14625|回复: 4

[求助] python绘制箱线图怎么添加小图标(标有百分位的小箱线)?

[复制链接]

新浪微博达人勋

发表于 2020-5-7 08:53:43 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
本帖最后由 subtropical 于 2020-5-7 08:54 编辑

如题,我用python中的boxplot绘制了箱线图,如下图所示,但是没找到怎么在旁边添加小图标,小图标上标有百分位那样子
grapes_reps_2mtemp.png

下面这张图有小图标(但是这是是别人用matlab画的,我也不知道别人怎么画的)
QQ截图20200507084644.png
所以想请教一下python怎么在图旁添加小图标呢?请教大神

密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2020-5-7 18:18:24 | 显示全部楼层
本帖最后由 Masterpiece 于 2020-5-10 22:48 编辑
  1. import numpy as np
  2. import matplotlib.pyplot as plt

  3. fig, ax = plt.subplots(figsize=(6,5))
  4. np.random.seed(1234)

  5. data1 = np.random.gumbel(3, 4, 70)
  6. data2= np.random.gumbel(3, 4, 80)
  7. data3 = np.random.gumbel(3, 4, 90)
  8. data4 = np.random.gumbel(3, 4, 100)

  9. data = [data1, data2, data3, data4]
  10. ax.boxplot(data,0,'rx',widths=0.2)
  11. for i,dd in enumerate(data,start=1):
  12.     ax.scatter(i,np.average(dd),
  13.          color='g', marker='*',s=50)
  14. ax.set_xticklabels(["data1", "data2", "data3", "data4"])


  15. #新建小图用于添加图注
  16. legend_data=np.array([-20,0,10,20,35,45,60,80,90,100])
  17. ax_legend = plt.axes([0.86, 0.15, 0.2, 0.5])
  18. ax_legend.boxplot(legend_data,0,'rx',widths=0.2)
  19. ax_legend.scatter(1, 60,color='g', marker='*',s=50,label='Mean')

  20. ax_legend.scatter(1, 120,color='r', marker='x',s=30,label='Flier')

  21. q1=np.percentile(legend_data,25)
  22. q3=np.percentile(legend_data,75)
  23. ax_legend.text(1.12,np.median(legend_data),'Median',
  24.                verticalalignment='center',
  25.                horizontalalignment='left')
  26. ax_legend.text(1.12,q3,'75%',
  27.                verticalalignment='center',
  28.                horizontalalignment='left')
  29. ax_legend.text(1.12,q1,'25%',
  30.                verticalalignment='center',
  31.                horizontalalignment='left')

  32. ax_legend.text(1.12,np.max(legend_data),'Max',
  33.                verticalalignment='center',
  34.                horizontalalignment='left')
  35. ax_legend.text(1.12,np.min(legend_data),'Min',
  36.                verticalalignment='center',
  37.                horizontalalignment='left')
  38. ax_legend.legend(bbox_to_anchor=(0.92,1.25),handlelength=0.7,
  39.                 bbox_transform=ax_legend.transAxes)

  40. plt.axis('off')

  41. plt.savefig('box_legend.png',dpi=200,bbox_inches='tight')
  42. plt.show()
复制代码
box_legend.png
密码修改失败请联系微信:mofangbao
回复 支持 1 反对 0

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2020-5-7 20:04:25 | 显示全部楼层

天呐 太感谢了 谢谢大神~{:eb511:}
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2020-8-5 22:14:49 | 显示全部楼层

大神,有没有示例的数据啊
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2022-1-4 08:24:13 | 显示全部楼层
学习了
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表