用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 相关文章推荐
sqlalchemy对象转dict的示例
Apr 22 Python
python之wxPython应用实例
Sep 28 Python
Python实现向QQ群成员自动发邮件的方法
Nov 19 Python
python统计字符串中指定字符出现次数的方法
Apr 04 Python
详解Python各大聊天系统的屏蔽脏话功能原理
Dec 01 Python
Django日志模块logging的配置详解
Feb 14 Python
python爬取网页转换为PDF文件
Jun 07 Python
Python函数参数类型及排序原理总结
Dec 19 Python
python kafka 多线程消费者&amp;手动提交实例
Dec 21 Python
Python基于stuck实现scoket文件传输
Apr 02 Python
Python通过两个dataframe用for循环求笛卡尔积
Apr 29 Python
Python 多进程原理及实现
Dec 21 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二维数组排序与默认自然排序的方法介绍
2013/04/27 PHP
php读取excel文件的简单实例
2013/08/26 PHP
单台服务器的PHP进程之间实现共享内存的方法
2014/06/13 PHP
Symfony控制层深入详解
2016/03/17 PHP
PHP判断json格式是否正确的实现代码
2017/09/20 PHP
RR vs IO BO3 第一场2.13
2021/03/10 DOTA
javascript 简练的几个函数
2009/08/29 Javascript
Chrome中模态对话框showModalDialog返回值问题的解决方法
2010/05/25 Javascript
js算法中的排序、数组去重详细概述
2013/10/14 Javascript
JS对象转换为Jquery对象示例
2014/01/26 Javascript
纯JavaScript实现获取onclick、onchange等事件的值
2014/12/29 Javascript
javascript中call和apply的用法示例分析
2015/04/02 Javascript
jQuery中的通配符选择器使用总结
2016/05/30 Javascript
indexedDB bootstrap angularjs之 MVC DOMO (应用示例)
2016/06/20 Javascript
canvas压缩图片转换成base64格式输出文件流
2017/03/09 Javascript
js中作用域的实例解析
2017/03/16 Javascript
bootstrap select插件封装成Vue2.0组件
2017/04/17 Javascript
mac中利用NVM管理不同node版本的方法详解
2017/11/08 Javascript
谈谈JS中的!!
2017/12/07 Javascript
简单谈谈javascript高级特性
2019/09/04 Javascript
Vue 中使用富文本编译器wangEditor3的方法
2019/09/26 Javascript
jquery实现购物车基本功能
2019/10/25 jQuery
pandas使用apply多列生成一列数据的实例
2018/11/28 Python
python+pyqt5实现KFC点餐收银系统
2019/01/24 Python
Python socket 套接字实现通信详解
2019/08/27 Python
浅析Python数字类型和字符串类型的内置方法
2019/12/22 Python
python读取与处理netcdf数据方式
2020/02/14 Python
video.js支持m3u8格式直播的实现示例
2020/05/20 HTML / CSS
加拿大奢华时装品牌:Mackage
2018/01/10 全球购物
华硕新加坡官方网上商店:ASUS Singapore
2020/07/09 全球购物
进程的查看和调度分别使用什么命令
2013/12/14 面试题
销售员自我评价怎么写
2013/09/19 职场文书
应届毕业生自我鉴定范文
2013/12/27 职场文书
MySQL系列之七 MySQL存储引擎
2021/07/02 MySQL
java如何实现获取客户端ip地址的示例代码
2022/04/07 Java/Android
Hive常用日期格式转换语法
2022/06/25 数据库