用python 绘制茎叶图和复合饼图
茎叶图
fromitertoolsimportgroupby nums2=[225,232,232,245,235,245,270,225,240,240,217,195,225,185,200, 220,200,210,271,240,220,230,215,252,225,220,206,185,227,236] fork,gingroupby(sorted(nums2),key=lambdax:int(x)//10): print(k,list(g)) #print('k',k) #print('g',list(g)) lst=map(str,[int(y)%10foryinlist(g)]) print(k,'|',''.join(lst))
输出:
18|55 19|5 20|006 21|057 22|00055557 23|02256 24|00055 25|2 27|01
说明:
1./就表示浮点数除法,返回浮点结果;//表示整数除法。
2.itertools.groupby按照分组函数的值对元素进行分组。
>>>fromitertoolsimportgroupby >>>x=groupby(range(10),lambdax:x<5orx>8) >>>forcondition,numbersinx: print(condition,list(numbers)) 输出: True[0,1,2,3,4] False[5,6,7,8] True[9] >>>[kfork,gingroupby('AAAABBBCCDAABBB')] ['A','B','C','D','A','B'] >>>[list(g)fork,gingroupby('AAAABBBCCD')] [['A','A','A','A'],['B','B','B'],['C','C'],['D']]
3.map(function,iterable,...)根据提供的函数对指定序列做映射。第一个参数function以参数序列中的每一个元素调用function函数,返回包含每次function函数返回值的新列表。
4.循环加处理的例子
>>>[int(y)%10foryin[22,73,34,92,45]] [2,3,4,2,5]
复合饼图
importnumpyasnp importmatplotlibasmpl frommatplotlibimportcm importmatplotlib.pyplotasplt frommatplotlib.patchesimportConnectionPatch #使图表元素中正常显示中文 mpl.rcParams['font.sans-serif']='SimHei' #使坐标轴刻度标签正常显示负号 mpl.rcParams['axes.unicode_minus']=False #制画布 fig=plt.figure(figsize=(9,5.0625),facecolor='cornsilk') ax1=fig.add_subplot(121) ax2=fig.add_subplot(122) #调整子区布局 fig.subplots_adjust(wspace=0) #大饼图的制作 labels=['成都','武汉','昆明','贵阳','西安','其它'] size=[802,530,477,256,233,307] #分裂距离 explode=(0,0,0,0,0,0.1) ax1.pie(size,#数据 autopct='%1.1f%%',#锲形块的数据标签格式 startangle=30,#锲形块开始角度 labels=labels, colors=cm.Blues(range(10,300,50)), explode=explode) #小饼图的制作 labels2=['西宁','拉萨','乌鲁木齐','兰州'] size2=[102,79,76,50] width=0.2 ax2.pie(size2, autopct='%1.1f%%', startangle=90, labels=labels2, colors=cm.Blues(range(10,300,50)), radius=0.5, shadow=False) #使用ConnectionPatch画出两个饼图的间连线 #先得到饼图边缘的数据 theta1,theta2=ax1.patches[-1].theta1,ax1.patches[-1].theta2 center,r=ax1.patches[-1].center,ax1.patches[-1].r #画出上边缘的连线 x=r*np.cos(np.pi/180*theta2)+center[0] y=np.sin(np.pi/180*theta2)+center[1] con1=ConnectionPatch(xyA=(0,0.5), xyB=(x,y), coordsA=ax2.transData, coordsB=ax1.transData, axesA=ax2,axesB=ax1) print(-width/2,0.5) print(x,y) #画出下边缘的连线 x=r*np.cos(np.pi/180*theta1)+center[0] y=np.sin(np.pi/180*theta1)+center[1] con2=ConnectionPatch(xyA=(-0.1,-0.49), xyB=(x,y), coordsA='data', coordsB='data', axesA=ax2,axesB=ax1) #添加连接线 forconin[con1,con2]: con.set_color('gray') ax2.add_artist(con) con.set_linewidth(1) plt.show()
输出:
以上就是用python绘制茎叶图和复合饼图的详细内容,更多关于python绘制茎叶图和复合饼图的资料请关注毛票票其它相关文章!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。