用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迭代和迭代器
Mar 28 Python
python实现按行切分文本文件的方法
Apr 18 Python
python列表的常用操作方法小结
May 21 Python
python绘制中国大陆人口热力图
Nov 07 Python
详解python读取image
Apr 03 Python
Python Flask框架扩展操作示例
May 03 Python
深入浅析python3中的unicode和bytes问题
Jul 03 Python
python实现WebSocket服务端过程解析
Oct 18 Python
Django项目基础配置和基本使用过程解析
Nov 25 Python
Numpy(Pandas)删除全为零的列的方法
Sep 11 Python
python matplotlib库的基本使用
Sep 23 Python
Python通过loop.run_in_executor执行同步代码 同步变为异步
Apr 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 xml 入门学习资料
2011/01/01 PHP
Function eregi is deprecated (解决方法)
2013/06/21 PHP
用PHP和Shell写Hadoop的MapReduce程序
2014/04/15 PHP
使用ThinkPHP+Uploadify实现图片上传功能
2014/06/26 PHP
PHP MSSQL 分页实例
2016/04/13 PHP
番茄的表单验证类代码修改版
2008/07/18 Javascript
最新28个很棒的jQuery 教程
2011/05/28 Javascript
jquery命令汇总,方便使用jquery的朋友
2012/06/26 Javascript
面向对象继承实例(a如何继承b问题)(自写)
2013/07/01 Javascript
微信js-sdk分享功能接口常用逻辑封装示例
2016/10/13 Javascript
AngularJS过滤器filter用法实例分析
2016/11/04 Javascript
VueJS事件处理器v-on的使用方法
2017/09/27 Javascript
Nuxt.js实现校验访问浏览器类型的中间件
2018/08/24 Javascript
小程序绑定用户方案优化小结
2019/05/15 Javascript
Vue-Cli 3.0 中配置高德地图的两种方式
2019/06/19 Javascript
JS模拟浏览器实现全局搜索功能
2019/09/11 Javascript
详解JavaScript 中的批处理和缓存
2020/11/19 Javascript
[00:52]DOTA2第二届亚洲邀请赛预选赛宣传片
2017/01/13 DOTA
Python批量创建迅雷任务及创建多个文件
2016/02/13 Python
Eclipse和PyDev搭建完美Python开发环境教程(Windows篇)
2016/11/16 Python
python中pandas.DataFrame排除特定行方法示例
2017/03/12 Python
Python加密方法小结【md5,base64,sha1】
2017/07/13 Python
tensorflow 恢复指定层与不同层指定不同学习率的方法
2018/07/26 Python
python+splinter自动刷新抢票功能
2018/09/25 Python
python利用selenium进行浏览器爬虫
2019/04/25 Python
python3通过selenium爬虫获取到dj商品的实例代码
2019/04/25 Python
Matplotlib使用字符串代替变量绘制散点图的方法
2020/02/17 Python
python利用Excel读取和存储测试数据完成接口自动化教程
2020/04/30 Python
可以随进度显示不同颜色的css3进度条分享
2014/04/11 HTML / CSS
HTML5 客户端数据库简易使用:IndexedDB
2019/12/19 HTML / CSS
洲际酒店集团英国官网:IHG英国
2019/07/10 全球购物
践行三严三实心得体会
2014/10/13 职场文书
学习党的群众路线教育实践活动剖析材料
2014/10/13 职场文书
详解Python魔法方法之描述符类
2021/05/26 Python
vue-cli4.5.x快速搭建项目
2021/05/30 Vue.js
MySQL快速插入一亿测试数据
2021/06/23 MySQL