用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中使用gzip模块压缩文件的简单教程
Apr 08 Python
python计算方程式根的方法
May 07 Python
Python连接MySQL并使用fetchall()方法过滤特殊字符
Mar 13 Python
pyqt5 使用label控件实时显示时间的实例
Jun 14 Python
python word转pdf代码实例
Aug 16 Python
tesserocr与pytesseract模块的使用方法解析
Aug 30 Python
详解python中*号的用法
Oct 21 Python
Django app配置多个数据库代码实例
Dec 17 Python
Python利用多线程同步锁实现多窗口订票系统(推荐)
Dec 22 Python
Pycharm操作Git及GitHub的步骤详解
Oct 27 Python
Python性能测试工具Locust安装及使用
Dec 01 Python
详解pandas apply 并行处理的几种方法
Feb 24 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
c#中的实现php中的preg_replace
2009/12/21 PHP
PHP之COOKIE支持详解
2010/09/20 PHP
FusionCharts图表显示双Y轴双(多)曲线
2012/11/22 Javascript
jQuery实现页面滚动时层智能浮动定位实例探讨
2013/03/29 Javascript
JS实现拖动示例代码
2013/11/01 Javascript
Ajax提交与传统表单提交的区别说明
2014/02/07 Javascript
jquery实现在页面加载完毕后获取图片高度或宽度
2014/06/16 Javascript
jQuery中:empty选择器用法实例
2014/12/30 Javascript
Javascript闭包用法实例分析
2015/01/23 Javascript
jQuery结合HTML5制作的爱心树表白动画
2015/02/01 Javascript
jQuery实现鼠标划过添加和删除class的方法
2015/06/26 Javascript
JavaScript中rem布局在react中的应用
2015/12/09 Javascript
JavaScript的this关键字的理解
2016/06/18 Javascript
js实现楼层效果的简单实例
2016/07/15 Javascript
JavaScript中cookie工具函数封装的示例代码
2016/10/11 Javascript
用Angular实时获取本地Localstorage数据,实现一个模拟后台数据登入的效果
2016/11/09 Javascript
基于Javascript实现的不重复ID的生成器
2016/12/25 Javascript
js实现股票实时刷新数据案例
2017/05/14 Javascript
微信小程序简单实现form表单获取输入数据功能示例
2017/11/30 Javascript
Vue父子组件双向绑定传值的实现方法
2018/07/31 Javascript
Nuxt.js实现校验访问浏览器类型的中间件
2018/08/24 Javascript
Python使用re模块正则提取字符串中括号内的内容示例
2018/06/01 Python
django_orm查询性能优化方法
2018/08/20 Python
python通过ffmgep从视频中抽帧的方法
2018/12/05 Python
详解Python数据可视化编程 - 词云生成并保存(jieba+WordCloud)
2019/03/26 Python
python爬虫 模拟登录人人网过程解析
2019/07/31 Python
Python 实现大整数乘法算法的示例代码
2019/09/17 Python
运动会通讯稿400字
2014/01/28 职场文书
物业总经理助理岗位职责
2014/06/29 职场文书
物价局领导班子四风问题整改措施
2014/10/26 职场文书
2014年辅导员工作总结
2014/11/18 职场文书
志愿者事迹材料
2014/12/26 职场文书
高中政治教学反思
2016/02/23 职场文书
Python使用protobuf序列化和反序列化的实现
2021/05/19 Python
python实现简单聊天功能
2021/07/07 Python
vue实现Toast组件轻提示
2022/04/10 Vue.js