用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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。