用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进阶教程之模块(module)介绍
Aug 30 Python
使用Python脚本操作MongoDB的教程
Apr 16 Python
python生成随机密码或随机字符串的方法
Jul 03 Python
Python SMTP发送邮件遇到的一些问题及解决办法
Oct 24 Python
详解Python:面向对象编程
Apr 10 Python
python简单验证码识别的实现方法
May 10 Python
使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件及出现问题解决方法
Sep 06 Python
python 实现屏幕录制示例
Dec 23 Python
python代码区分大小写吗
Jun 17 Python
Scrapy框架介绍之Puppeteer渲染的使用
Jun 19 Python
Python 分布式缓存之Reids数据类型操作详解
Jun 24 Python
装上这 14 个插件后,PyCharm 真的是无敌的存在
Jan 11 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 socket实现的聊天室代码分享
2014/08/16 PHP
PHP使用PHPExcel删除Excel单元格指定列的方法
2016/07/06 PHP
PHP查询大量数据内存耗尽问题的解决方法
2016/10/28 PHP
PHP解耦的三重境界(浅谈服务容器)
2017/03/13 PHP
PHP如何获取Cookie并实现模拟登录
2020/07/16 PHP
用正则表达式 动态创建/增加css style script 兼容IE firefox
2009/03/10 Javascript
jQuery 借助插件Lavalamp实现导航条动态美化效果
2013/09/27 Javascript
div失去焦点事件实现思路
2014/04/22 Javascript
Javascript 函数parseInt()转换时出现bug问题
2014/05/20 Javascript
JavaScript中检查对象property的存在性方法介绍
2014/12/30 Javascript
javascript通过获取html标签属性class实现多选项卡的方法
2015/07/27 Javascript
JavaScript SHA512&amp;SHA256加密算法详解
2015/08/11 Javascript
分享12个实用的jQuery代码片段
2016/03/09 Javascript
JavaScript知识点总结(四)之逻辑OR运算符详解
2016/05/31 Javascript
nodeJs内存泄漏问题详解
2016/09/05 NodeJs
基于vue-cli配置lib-flexible + rem实现移动端自适应
2017/12/26 Javascript
element-ui的回调函数Events的用法详解
2018/10/16 Javascript
JS实现数组去重,显示重复元素及个数的方法示例
2019/01/21 Javascript
javascript实现简单打字游戏
2019/10/29 Javascript
vue实现移动端图片上传功能
2019/12/23 Javascript
JavaScript中CreateTextFile函数
2020/08/30 Javascript
jQuery实现简单全选框
2020/09/13 jQuery
js实现复制粘贴的两种方法
2020/12/04 Javascript
Python编程中对super函数的正确理解和用法解析
2016/07/02 Python
Python遍历某目录下的所有文件夹与文件路径
2018/03/15 Python
PyQt5 对图片进行缩放的实例
2019/06/18 Python
详解python解压压缩包的五种方法
2019/07/05 Python
对Pytorch神经网络初始化kaiming分布详解
2019/08/18 Python
python爬虫 线程池创建并获取文件代码实例
2019/09/28 Python
给Django Admin添加验证码和多次登录尝试限制的实现
2020/07/26 Python
JACK & JONES瑞典官方网站:杰克琼斯欧式风格男装
2017/12/23 全球购物
澳大利亚窗帘商店:Curtain Wonderland
2019/12/01 全球购物
小学校园活动策划
2014/01/30 职场文书
党员群众路线教育实践活动剖析材料
2014/10/10 职场文书
pyqt5蒙版遮罩mask,setmask的使用
2021/06/11 Python
mysql下的max_allowed_packet参数设置详解
2022/02/12 MySQL