用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映射列表实例分析
Jan 26 Python
python Django框架实现自定义表单提交
Mar 25 Python
python实现一个简单的并查集的示例代码
Mar 19 Python
Python在groupby分组后提取指定位置记录方法
Apr 20 Python
pycharm 解除默认unittest模式的方法
Nov 30 Python
树莓派极简安装OpenCv的方法步骤
Oct 10 Python
Python中logging日志库实例详解
Feb 19 Python
Python中的wordcloud库安装问题及解决方法
May 27 Python
利用pipenv和pyenv管理多个相互独立的Python虚拟开发环境
Nov 01 Python
ASP.NET Core中的配置详解
Feb 05 Python
python源码剖析之PyObject详解
May 18 Python
Elasticsearch 批量操作
Apr 19 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
如何限制访问者的ip(PHPBB的代码)
2006/10/09 PHP
PHP取进制余数函数代码
2012/01/19 PHP
PHP文章采集URL补全函数(FormatUrl)
2012/08/02 PHP
php fsockopen解决办法 php实现多线程
2014/01/20 PHP
PHP实现C#山寨ArrayList的方法
2015/07/16 PHP
php制作简单模版引擎
2016/04/07 PHP
实例讲解PHP表单处理
2019/02/15 PHP
Swoole 5将移除自动添加Event::wait()特性详解
2019/07/10 PHP
检测是否已安装 .NET Framework 3.5的js脚本
2009/02/14 Javascript
JQuery index()方法使用代码
2010/06/02 Javascript
一个简单的js渐显(fadeIn)渐隐(fadeOut)类
2010/06/19 Javascript
jquery 提示信息显示后自动消失的具体实现
2013/12/18 Javascript
JavaScript中的eval()函数使用介绍
2014/12/31 Javascript
jQuery使用load()方法载入另外一个网页文件内的指定标签内容到div标签的方法
2015/03/25 Javascript
JavaScript 模块的循环加载实现方法
2015/12/13 Javascript
使用JQuery实现智能表单验证功能
2016/03/08 Javascript
再次谈论Javascript中的this
2016/06/23 Javascript
JSON格式的时间/Date(2367828670431)/格式转为正常的年-月-日 格式的代码
2016/07/27 Javascript
jquery 属性选择器(匹配具有指定属性的元素)
2016/09/06 Javascript
vuejs选中当前样式active的实例
2018/08/22 Javascript
原生JS实现的跳一跳小游戏完整实例
2019/01/27 Javascript
Python利用多进程将大量数据放入有限内存的教程
2015/04/01 Python
Python3写入文件常用方法实例分析
2015/05/22 Python
Python字典及字典基本操作方法详解
2018/01/30 Python
对pandas中时间窗函数rolling的使用详解
2018/11/28 Python
解决Python找不到ssl模块问题 No module named _ssl的方法
2019/04/29 Python
Python函数中参数是传递值还是引用详解
2019/07/02 Python
移动端html5 meta标签的神奇功效
2016/01/06 HTML / CSS
马来西亚航空官方网站:Malaysia Airlines
2017/07/28 全球购物
Whittard官方海外旗舰店:英国百年茶叶品牌
2018/02/22 全球购物
加拿大在线旅游公司:Flighthub
2019/03/11 全球购物
大学生求职简历的自我评价范文
2013/10/12 职场文书
加拿大探亲邀请信
2014/01/28 职场文书
环保标语大全
2014/06/12 职场文书
毕业生见习报告总结
2014/11/08 职场文书
Java 写一个简单的图书管理系统
2022/04/26 Java/Android