用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日期操作学习笔记
Oct 07 Python
Python生成随机数的方法
Jan 14 Python
Python实现二叉树结构与进行二叉树遍历的方法详解
May 24 Python
python学习笔记之列表(list)与元组(tuple)详解
Nov 23 Python
Python实现简单的语音识别系统
Dec 13 Python
Windows下Anaconda的安装和简单使用方法
Jan 04 Python
Python使用win32 COM实现Excel的写入与保存功能示例
May 03 Python
django1.11.1 models 数据库同步方法
May 30 Python
pandas筛选某列出现编码错误的解决方法
Nov 07 Python
Python中用pyinstaller打包时的图标问题及解决方法
Feb 17 Python
安装不同版本的tensorflow与models方法实现
Feb 20 Python
Python采集股票数据并制作可视化柱状图
Apr 04 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 auth_http类库进行身份效验
2009/03/19 PHP
Discuz Uchome ajaxpost小技巧
2011/01/04 PHP
简单介绍PHP非阻塞模式
2016/03/03 PHP
PHP封装的验证码工具类定义与用法示例
2018/08/22 PHP
PHP数据源架构模式之表入口模式实例分析
2020/01/23 PHP
JavaScript实现维吉尼亚(Vigenere)密码算法实例
2013/11/22 Javascript
一个CSS+jQuery实现的放大缩小动画效果
2014/02/19 Javascript
Extjs根据条件设置表格某行背景色示例
2014/07/23 Javascript
JavaScript中使用Math.floor()方法对数字取整
2015/06/15 Javascript
JQuery中模拟image的ajaxPrefilter与ajaxTransport处理
2015/06/19 Javascript
jquery.gridrotator实现响应式图片展示画廊效果
2015/06/23 Javascript
JS实现的Select三级下拉菜单代码
2015/08/20 Javascript
jQuery实现的点赞随机数字显示动画效果(附在线演示与demo源码下载)
2015/12/31 Javascript
微信小程序  action-sheet详解及实例代码
2016/11/09 Javascript
JavaScript学习笔记之惰性函数示例详解
2017/08/27 Javascript
从零开始最小实现react服务器渲染详解
2018/01/26 Javascript
Vue中如何实现proxy代理
2018/04/20 Javascript
Vue SPA单页应用首屏优化实践
2018/06/28 Javascript
jquery分页插件pagination使用教程
2018/10/23 jQuery
详解vue配置后台接口方式
2019/03/29 Javascript
Vue实现仿iPhone悬浮球的示例代码
2020/03/13 Javascript
通过实例解析vuejs如何实现调试代码
2020/07/16 Javascript
基于JavaScript实现简单抽奖功能代码实例
2020/10/20 Javascript
python制作爬虫爬取京东商品评论教程
2016/12/16 Python
Win7 64位下python3.6.5安装配置图文教程
2020/10/27 Python
pytorch构建网络模型的4种方法
2018/04/13 Python
Python实现统计给定字符串中重复模式最高子串功能示例
2018/05/16 Python
对python xlrd读取datetime类型数据的方法详解
2018/12/26 Python
Python+Selenium使用Page Object实现页面自动化测试
2019/07/14 Python
用Python从0开始实现一个中文拼音输入法的思路详解
2019/07/20 Python
使用pip安装python库的多种方式
2019/07/31 Python
使用python操作lmdb对数据读取的实例
2020/12/11 Python
详解CSS3中@media的实际使用
2015/08/04 HTML / CSS
学校采购员岗位职责
2014/01/02 职场文书
群众路线党课主持词
2014/04/01 职场文书
安全月宣传标语
2014/10/07 职场文书