用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 面向对象 成员的访问约束
Dec 23 Python
python3简单实现微信爬虫
Apr 09 Python
python版本坑:md5例子(python2与python3中md5区别)
Jun 20 Python
windows下python之mysqldb模块安装方法
Sep 07 Python
Python数据分析之双色球中蓝红球分析统计示例
Feb 03 Python
Python使用matplotlib绘制多个图形单独显示的方法示例
Mar 14 Python
wx.CheckBox创建复选框控件并响应鼠标点击事件
Apr 25 Python
python 接口实现 供第三方调用的例子
Aug 13 Python
在python中使用nohup命令说明
Apr 16 Python
python tkiner实现 一个小小的图片翻页功能的示例代码
Jun 24 Python
编译 pycaffe时报错:fatal error: numpy/arrayobject.h没有那个文件或目录
Nov 29 Python
Django实现在线无水印抖音视频下载(附源码及地址)
May 06 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
彻底删除thinkphp3.1案例blog标签的方法
2014/12/05 PHP
PHP 获取客户端 IP 地址的方法实例代码
2018/11/11 PHP
Javascript Cookie读写删除操作的函数
2010/03/02 Javascript
JavaScript 小型打飞机游戏实现原理说明
2010/10/28 Javascript
nodejs中exports与module.exports的区别详细介绍
2013/01/14 NodeJs
Jquery事件的连接使用示例
2013/06/18 Javascript
jquery获取一组checkbox的值(实例代码)
2013/11/04 Javascript
jQuery移除元素自动解绑事件实现思路及代码
2014/05/31 Javascript
JavaScript设计模式之适配器模式介绍
2014/12/28 Javascript
Ionic实现仿通讯录点击滑动及$ionicscrolldelegate使用分析
2016/01/18 Javascript
jQuery禁用键盘后退屏蔽F5刷新及禁用右键单击
2016/01/22 Javascript
JavaScript正则获取地址栏中参数的方法
2017/03/02 Javascript
20170918 前端开发周报之JS前端开发必看
2017/09/18 Javascript
jQuery实现文件编码成base64并通过AJAX上传的方法
2018/04/12 jQuery
vue-baidu-map 进入页面自动定位的解决方案(推荐)
2018/04/28 Javascript
JavaScript实现简单的隐藏式侧边栏功能示例
2018/08/31 Javascript
三步实现ionic3点击退出app程序
2019/09/17 Javascript
three.js利用卷积法如何实现物体描边效果
2019/11/27 Javascript
element表格翻页第2页从1开始编号(后端从0开始分页)
2019/12/10 Javascript
vue 需求 data中的数据之间的调用操作
2020/08/05 Javascript
[58:46]OG vs NAVI 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
[45:25]完美世界DOTA2联赛循环赛 PXG vs IO 第一场 11.06
2020/11/09 DOTA
[27:08]完美世界DOTA2联赛PWL S2 SZ vs Rebirth 第二场 11.21
2020/11/23 DOTA
用Python给文本创立向量空间模型的教程
2015/04/23 Python
Python中tell()方法的使用详解
2015/05/24 Python
Python备份目录及目录下的全部内容的实现方法
2016/06/12 Python
python实现机械分词之逆向最大匹配算法代码示例
2017/12/13 Python
python3 反射的四种基本方法解析
2019/08/26 Python
CSS3实现菜单悬停效果
2020/11/17 HTML / CSS
党校自我鉴定范文
2013/10/02 职场文书
不打扫卫生检讨书
2014/02/12 职场文书
《在家里》教后反思
2014/03/01 职场文书
新兵入伍心得体会
2014/09/04 职场文书
Win11任务栏太宽了怎么办?一招解决Win11任务栏太宽问题
2021/11/21 数码科技
《地。-关于地球的运动-》单行本第七集上市,小说家朝井辽献上期待又害怕的推荐文
2022/03/31 日漫
vue项目打包后路由错误的解决方法
2022/04/13 Vue.js