用python 繪制莖葉圖和復合餅圖
莖葉圖
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./ 就表示 浮點數(shù)除法,返回浮點結(jié)果; // 表示整數(shù)除法。
2.itertools.groupby 按照分組函數(shù)的值對元素進行分組。
>>> 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, ...) 根據(jù)提供的函數(shù)對指定序列做映射。第一個參數(shù) function 以參數(shù)序列中的每一個元素調(diào)用 function 函數(shù),返回包含每次 function 函數(shù)返回值的新列表。
4.循環(huán)加處理的例子
>>> [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) # 調(diào)整子區(qū)布局 fig.subplots_adjust(wspace=0) # 大餅圖的制作 labels = ['成都','武漢','昆明','貴陽','西安','其它'] size = [802,530,477,256,233,307] # 分裂距離 explode=(0,0,0,0,0,0.1) ax1.pie(size, # 數(shù)據(jù) autopct='%1.1f%%', # 鍥形塊的數(shù)據(jù)標簽格式 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畫出兩個餅圖的間連線 #先得到餅圖邊緣的數(shù)據(jù) 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 繪制莖葉圖和復合餅圖的詳細內(nèi)容,更多關(guān)于python 繪制莖葉圖和復合餅圖的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Django+Bootstrap實現(xiàn)計算器的示例代碼
本文主要介紹了Django+Bootstrap實現(xiàn)計算器的示例代碼,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-11-11Python redis操作實例分析【連接、管道、發(fā)布和訂閱等】
這篇文章主要介紹了Python redis操作,結(jié)合實例形式分析了Python redis的連接、管道、發(fā)布和訂閱等相關(guān)概念、原理及操作技巧,需要的朋友可以參考下2019-05-05python爬蟲 基于requests模塊發(fā)起ajax的get請求實現(xiàn)解析
這篇文章主要介紹了python爬蟲 基于requests模塊發(fā)起ajax的get請求實現(xiàn)解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2019-08-08