用python 绘制茎叶图和复合饼图


Posted in Python onFebruary 26, 2021

茎叶图

from itertools import groupby
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]
for k, g in groupby(sorted(nums2), key=lambda x: int(x) // 10):
  print (k, list(g))
  # print('k', k)
  # print('g', list(g))
  lst = map(str, [int(y) % 10 for y in list(g)])
  print (k, '|', ' '.join(lst))

输出:

18 | 5 5
19 | 5
20 | 0 0 6
21 | 0 5 7
22 | 0 0 0 5 5 5 5 7
23 | 0 2 2 5 6
24 | 0 0 0 5 5
25 | 2
27 | 0 1

说明:

1./ 就表示 浮点数除法,返回浮点结果; // 表示整数除法。

2.itertools.groupby 按照分组函数的值对元素进行分组。

>>> from itertools import groupby
>>> x = groupby(range(10), lambda x: x < 5 or x > 8)
>>> for condition, numbers in x:
	print(condition, list(numbers))
输出:
True [0, 1, 2, 3, 4]
False [5, 6, 7, 8]
True [9]

>>> [k for k, g in groupby('AAAABBBCCDAABBB')]
['A', 'B', 'C', 'D', 'A', 'B']
>>> [list(g) for k, g in groupby('AAAABBBCCD')]
[['A', 'A', 'A', 'A'], ['B', 'B', 'B'], ['C', 'C'], ['D']]

3.map(function, iterable, ...) 根据提供的函数对指定序列做映射。第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。
4.循环加处理的例子

>>> [int(y) % 10 for y in [22,73,34,92,45]]
[2, 3, 4, 2, 5]

复合饼图

import numpy as np
import matplotlib as mpl
from matplotlib import cm
import matplotlib.pyplot as plt
from matplotlib.patches import ConnectionPatch

# 使图表元素中正常显示中文
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)

# 添加连接线
for con in [con1, con2]:
  con.set_color('gray')
  ax2.add_artist(con)
  con.set_linewidth(1)

plt.show()

输出:

用python 绘制茎叶图和复合饼图

以上就是用python 绘制茎叶图和复合饼图的详细内容,更多关于python 绘制茎叶图和复合饼图的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python实现的ini文件操作类分享
Nov 20 Python
Python入门_浅谈逻辑判断与运算符
May 16 Python
python+selenium打印当前页面的titl和url方法
Jun 22 Python
python多线程抽象编程模型详解
Mar 20 Python
python3字符串操作总结
Jul 24 Python
Python实现socket非阻塞通讯功能示例
Nov 06 Python
Django基于客户端下载文件实现方法
Apr 21 Python
Keras保存模型并载入模型继续训练的实现
Feb 20 Python
Python实现socket库网络通信套接字
Jun 04 Python
 分享一个Python 遇到数据库超好用的模块
Apr 06 Python
Python中itertools库的四个函数介绍
Apr 06 Python
Python Django / Flask如何使用Elasticsearch
Apr 19 Python
python lambda的使用详解
Feb 26 #Python
python爬虫scrapy框架之增量式爬虫的示例代码
Feb 26 #Python
详解Python openpyxl库的基本应用
Feb 26 #Python
解决python的空格和tab混淆而报错的问题
Feb 26 #Python
Python Spyder 调出缩进对齐线的操作
Feb 26 #Python
使用Python制作一盏 3D 花灯喜迎元宵佳节
Feb 26 #Python
Python plt 利用subplot 实现在一张画布同时画多张图
Feb 26 #Python
You might like
FCKeditor的安装(PHP)
2007/01/13 PHP
将一维或多维的数组连接成一个字符串的php代码
2010/08/08 PHP
web站点获取用户IP的安全方法 HTTP_X_FORWARDED_FOR检验
2013/06/01 PHP
解决ajax+php中文乱码的方法详解
2013/06/09 PHP
laravel框架模型中非静态方法也能静态调用的原理分析
2019/11/23 PHP
jQuery 加上最后自己的验证
2009/11/04 Javascript
jquery 表格分页等操作实现代码(pagedown,pageup)
2010/04/11 Javascript
passwordStrength 基于jquery的密码强度检测代码使用介绍
2011/10/08 Javascript
纯javascript实现自动发送邮件
2015/10/21 Javascript
轻松掌握JavaScript享元模式
2016/08/27 Javascript
jQuery过滤选择器用法示例
2016/09/12 Javascript
JavaScript用构造函数如何获取变量的类型名
2016/12/23 Javascript
vue中用H5实现文件上传的方法实例代码
2017/05/27 Javascript
vue bootstrap小例子一枚
2017/06/09 Javascript
JavaScript递归函数解“汉诺塔”算法代码解析
2018/07/05 Javascript
移动端H5页面返回并刷新页面(BFcache)的方法
2018/11/06 Javascript
Vue一个案例引发的递归组件的使用详解
2018/11/15 Javascript
浅析Vue.js中v-bind v-model的使用和区别
2018/12/04 Javascript
vue 项目 iOS WKWebView 加载
2019/04/17 Javascript
微信小程序实现类似微信点击语音播放效果
2020/03/30 Javascript
PHP读取远程txt文档到数组并实现遍历
2020/08/25 Javascript
python原始套接字编程示例分享
2014/02/21 Python
跟老齐学Python之关于循环的小伎俩
2014/10/02 Python
python装饰器深入学习
2018/04/06 Python
Python中print和return的作用及区别解析
2019/05/05 Python
PyCharm-错误-找不到指定文件python.exe的解决方法
2019/07/01 Python
django drf框架自带的路由及最简化的视图
2019/09/10 Python
Tensorflow中tf.ConfigProto()的用法详解
2020/02/06 Python
python实现交并比IOU教程
2020/04/16 Python
html5贪吃蛇游戏使用63行代码完美实现
2013/06/25 HTML / CSS
中专生职业生涯规划书范文
2013/12/29 职场文书
厨房领班竞聘演讲稿
2014/04/23 职场文书
入党宣誓大会后的感想
2015/08/10 职场文书
《女娲补天》教学反思
2016/02/20 职场文书
zabbix监控mysql的实例方法
2021/06/02 MySQL
详解Python flask的前后端交互
2022/03/31 Python