用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 json模块使用实例
Apr 11 Python
python 递归遍历文件夹,并打印满足条件的文件路径实例
Aug 30 Python
python读取文本中数据并转化为DataFrame的实例
Apr 10 Python
python 实现对文件夹内的文件排序编号
Apr 12 Python
Python使用Phantomjs截屏网页的方法
May 17 Python
Python实现的根据IP地址计算子网掩码位数功能示例
May 23 Python
使用Python实现微信提醒备忘录功能
Dec 04 Python
matplotlib 生成的图像中无法显示中文字符的解决方法
Jun 10 Python
Pandas中DataFrame基本函数整理(小结)
Jul 20 Python
Python random模块的使用示例
Oct 10 Python
Python 中 sorted 如何自定义比较逻辑
Feb 02 Python
Flask搭建一个API服务器的步骤
May 28 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
PHP警告Cannot use a scalar value as an array的解决方法
2012/01/11 PHP
PHP中Session ID的实现原理实例分析
2019/08/17 PHP
jquery实现心算练习代码
2010/12/06 Javascript
jquery插件制作教程 txtHover
2012/08/17 Javascript
SOSO地图API使用(一)在地图上画圆实现思路与代码
2013/01/15 Javascript
js数字转换为float,取N位小数
2014/02/08 Javascript
Javascript排序算法之合并排序(归并排序)的2个例子
2014/04/04 Javascript
5款JavaScript代码压缩工具推荐
2014/07/07 Javascript
javascript电商网站抢购倒计时效果实现
2015/11/19 Javascript
基于Jquery和html5实现炫酷的3D焦点图动画
2016/03/02 Javascript
Angular 中 select指令用法详解
2016/09/29 Javascript
javascript之with的使用(阿里云、淘宝使用代码分析)
2016/10/11 Javascript
微信小程序 登陆流程详细介绍
2017/01/17 Javascript
Angular.js实现多个checkbox只能选择一个的方法示例
2017/02/24 Javascript
mockjs,json-server一起搭建前端通用的数据模拟框架教程
2017/12/18 Javascript
利用CDN加速react webpack打包后的文件详解
2018/02/22 Javascript
vue+element-ui+ajax实现一个表格的实例
2018/03/09 Javascript
重学 JS:为啥 await 不能用在 forEach 中详解
2019/04/15 Javascript
JS删除对象中某一属性案例详解
2020/09/08 Javascript
基于JavaScript实现简单扫雷游戏
2021/01/02 Javascript
[01:22:29]真视界:2019年国际邀请赛总决赛
2020/01/29 DOTA
python框架django基础指南
2016/09/08 Python
Python构建图像分类识别器的方法
2019/01/12 Python
python装饰器常见使用方法分析
2019/06/26 Python
关于Python中的向量相加和numpy中的向量相加效率对比
2019/08/26 Python
python ubplot使用方法解析
2020/01/10 Python
python和pywin32实现窗口查找、遍历和点击的示例代码
2020/04/01 Python
python使用建议与技巧分享(二)
2020/08/17 Python
html5 worker 实例(一) 为什么测试不到效果
2013/06/24 HTML / CSS
专门出售各种儿童读物的网站:Put Me In The Story
2016/08/07 全球购物
公司培训欢迎词
2014/01/10 职场文书
yy司仪主持词
2014/03/22 职场文书
2014年党支部工作总结
2014/11/13 职场文书
简历自我评价优缺点
2015/03/11 职场文书
pytorch 带batch的tensor类型图像显示操作
2021/05/20 Python
Javascript中async与await的捕捉错误详解
2022/03/03 Javascript