二十二世纪古墓奇兵爱慕影院

小梁建站專注重慶中小企業網站建設SEO優化,讓您網站更具價值!

當前位置:首頁 > WEB前端學習 > 如何利用Python將氣泡矩陣圖中的“氣泡”變成餅圖或環圖

如何利用Python將氣泡矩陣圖中的“氣泡”變成餅圖或環圖

時間:2018-08-10 12:30 來源:重慶網站制作公司(www.l2qz.net) 作者:重慶網站建設公司

上一篇我們利用Python畫了氣泡圖(相關鏈接:如何利用python繪制動態氣泡圖【實戰作圖詳解】),本期的教程是如何將氣泡矩陣圖原來的氣泡變成餅圖或環圖?,從而使技術功效氣泡圖增加一個新的數據分析維度。
 
感謝上一篇讀者Zoe,Nano的留言和建議,這次我們的程序增加了數據標簽的顯示功能,插入了可選擇R語言ggplot繪圖風格的語句,并改進了自動添加坐標,這個版本的程序不需要再手動在程序里逐一鍵入坐標軸上的“技術手段”和“技術效果”啦,可以自動對應Excel坐標生成橫縱坐標標簽。
 
 
 
糖果色氣泡餅/氣泡環自動生成方法:
 
STEP 1:
 
將Excel(示例數據:百度網盤鏈接:https://pan.baidu.com/s/1eSvoBVc,密碼: v5vw)按照如下格式準備好。
 
Excel包含多個工作表,第一個工作表中是技術功效表,其中的數據大小代表氣泡的大小(也就是餅圖或者環圖大小),如下圖所示:
數據大小代表氣泡的大小(也就是餅圖或者環圖大小)
 
其他的工作表中是每一個細分技術領域(技術手段和技術效果相對應的細分技術領域)中的文獻分布,比如可以是該細分技術領域的主要申請人、主要國家、或是專利的法律狀態等,
 
將該Excel表命名為“散餅數據表.xlsx”。如果你要修改這個Excel表的名稱,那么對應的修改程序中的“散餅數據表.xlsx”即可。
 
STEP2:
 
1) 將程序復制粘貼至spyder中的源程序編輯器(單擊file,new file,跳出一個新文件)
 
2) 復制程序,修改讀入excel名稱、設置圖片標題(修改“XXX”改為所需的領域):
 
 
3) 保存,單擊F5或者綠色向右的小箭頭。
 
 保存,單擊F5或者綠色向右的小箭頭
 
得到如下效果:
 
Python繪制矩陣氣泡餅圖效果
 
 
Python繪制矩陣氣泡餅圖效果
 
 
 
Python繪制矩陣氣泡餅圖
 
中心紅色數據為該環的數據量總和,三個黑色數據為不同部分的數據量:
 
 
 
Python繪制矩陣氣泡餅圖
 
 
是不是很簡單呢~
 
 
 
 
“矩陣氣泡餅圖”程序及說明如下:
 
import numpy as np #導入python的數值計算擴展包numpy,并重命名為np
 
import matplotlib.pyplot as plt #導入Python的繪圖擴展包matplotlib,并重新命名為plt
 
import pandas as pd #導入python的數據處理擴展包pandas,并重命名為pd,該包用于讀寫excel文件
 
import matplotlib.patches as mpatches
 
#plt.style.use('ggplot')#打開或者關閉R語言風格繪圖 
 
 
 
sheet1=pd.read_excel('散餅數據表.xlsx','工作表1')#從excel的工作表1中讀出數據,sheet名稱根據實際情況修改
 
x=[i+1for i in range(len(sheet1.columns))]#獲取數據表的列,作為x軸輔助繪圖數據
 
y_index=[i for i inrange(len(sheet1.index))]#獲取縱軸有多少行
 
y = [[i for y_data in range(len(x))] for i in range(1,len(y_index)+1)]#生成y軸輔助數據
 
 
 
fig, ax = plt.subplots()#創建子圖
 
colors = ['gold', 'lightcoral', 'lightskyblue','yellowgreen']#顏色列表
 
ax.set(aspect="equal")#設置圖形的對稱,不然餅會橢圓
 
 
 
for index in range(len(y_index)):#對轉置后的每一列進行循環
 
   for i,j,r inzip(x,y[index],sheet1.T[sheet1.index[index]]):#循環執行,每次從x,y[index]中讀取一個數,從轉置后的excel表格中讀取一列中的一個數據
 
       sheet=pd.read_excel('散餅數據表.xlsx',str(sheet1.columns[i-1])+str(sheet1.index[index]))#從excel中的相應sheet中讀取數據,根據excel中的工作表名修改
 
       ifr/max(sheet1.max())/2 < 0.2:
 
            ax.pie(sheet['數量'], explode=None, labels=None, colors='w',
 
     autopct='%d', shadow=False, startangle=90,radius=1/2,center=(i, j),frame=True,textprops={'fontsize':8})#繪制散餅圖
 
            ax.pie(sheet['數量'], explode=None, labels=None, colors=colors,
 
     autopct=None, shadow=False, startangle=90,radius=r/max(sheet1.max())/2,center=(i,j),frame=True)
 
       else:
 
            ax.pie(sheet['數量'], explode=None, labels=None, colors=colors,
 
     autopct='%d', shadow=False, startangle=90,radius=r/max(sheet1.max())/2,center=(i,j),frame=True,textprops={'fontsize':8})#繪制散餅圖,面積大小由radius調節。
 
           
 
       #ax.pie([1], radius=np.sqrt(r/np.pi)/30/2,colors='w',center=(i,j),frame=True)#增加甜甜圈的圈,圈大小由radius調節
 
       #ax.text(i,j,str(r),fontsize=int(np.sqrt(r/np.pi)*0.8),
 
       #       horizontalalignment='center',verticalalignment='center')#增加數據標簽,字體大小由fontsize調節
 
     
 
plt.grid(True)#增加柵格  
 
plt.xlabel('技術手段分類',size=14)#x軸說明
 
plt.ylabel('技術效果',size=14)#y軸說明
 
plt.title('XXX領域技術功效分析',size=14)#圖片名稱
 
plt.xticks(x,sheet1.columns)#利用excel表中的表格橫軸更新x軸標度
 
plt.yticks([i+1for i inrange(len(sheet1.index))],list(sheet1.index),size=14)#利用excel表中的表格縱軸更新y軸標度
 
plt.xlim(0,len(sheet1.columns)+1)#設置x軸范圍,美化圖表
 
plt.ylim(0,len(sheet1.index)+1)#設置y軸范圍,美化圖表
 
plt.legend(handles=[mpatches.Patch(color=colors[i],label=(sheet.index[i])) for i in range(len(sheet.index))]
 
           ,loc='best',bbox_to_anchor=(1.05,1.0),borderaxespad =0.)
 
plt.show()#顯示圖片
 
 
 
“矩陣氣泡環圖”程序及說明如下:
 
import numpy as np #導入python的數值計算擴展包numpy,并重命名為np
 
import matplotlib.pyplot as plt #導入Python的繪圖擴展包matplotlib,并重新命名為plt
 
import pandas as pd #導入python的數據處理擴展包pandas,并重命名為pd,該包用于讀寫excel文件
 
import matplotlib.patches as mpatches#導入用于生成圖例的庫
 
#plt.style.use('ggplot')#打開或者關閉R語言風格繪圖 
 
 
 
sheet1=pd.read_excel('散餅數據表.xlsx','工作表1')#從excel的工作表1中讀出數據,sheet名稱根據實際情況修改
 
x=[i+1for i in range(len(sheet1.columns))]#獲取數據表的列,作為x軸輔助繪圖數據
 
y_index=[i for i inrange(len(sheet1.index))]#獲取縱軸有多少行
 
y = [[i for y_data in range(len(x))] for i in range(1,len(y_index)+1)]#生成y軸輔助數據
 
 
 
fig, ax = plt.subplots()#創建子圖
 
colors = ['yellowgreen', 'gold', 'lightskyblue', 'lightcoral']#顏色列表
 
ax.set(aspect="equal")#設置圖形的對稱,不然餅會橢圓
 
 
 
for index in range(len(y_index)):#對轉置后的每一列進行循環
 
   for i,j,r inzip(x,y[index],sheet1.T[sheet1.index[index]]):#循環執行,每次從x,y[index]中讀取一個數,從轉置后的excel表格中讀取一列中的一個數據
 
       sheet=pd.read_excel('散餅數據表.xlsx',str(sheet1.columns[i-1])+str(sheet1.index[index]))#從excel中的相應sheet中讀取數據,根據excel中的工作表名修改
 
       ifnp.sqrt(r/np.pi)/30 < 0.4:
 
            ax.pie(sheet['數量'], explode=None, labels=None, colors='w',
 
     autopct='%d', shadow=False, startangle=90,radius=1/2,center=(i, j),frame=True,textprops={'fontsize':8})#繪制散餅圖
 
           ax.pie(sheet['數量'], explode=None, labels=None, colors=colors,
 
     autopct=None, shadow=False, startangle=90,radius=r/max(sheet1.max())/2,center=(i,j),frame=True)
 
       else:
 
            ax.pie(sheet['數量'], explode=None, labels=None, colors=colors,
 
     autopct='%d', shadow=False, startangle=90,radius=r/max(sheet1.max())/2,center=(i,j),frame=True,textprops={'fontsize':8})#繪制散餅圖,面積大小由radius調節。
 
       ax.pie([1], radius=r/max(sheet1.max())/2/2,colors='w',center=(i,j),frame=True)#增加甜甜圈的圈,圈大小由radius調節
 
       ax.text(i,j,str(r),fontsize=8,
 
                horizontalalignment='center',verticalalignment='center',color='red')#增加數據標簽,字體大小由fontsize調節
 
     
 
plt.grid(True)#增加柵格  
 
plt.xlabel('技術手段分類',size=14)#x軸說明
 
plt.ylabel('技術效果',size=14)#y軸說明
 
plt.title('XXX領域技術功效分析',size=14)#圖片名稱
 
plt.xticks(x,sheet1.columns)#利用excel表中的表格橫軸更新x軸標度
 
plt.yticks([i+1for i inrange(len(sheet1.index))],list(sheet1.index),size=14)#利用excel表中的表格縱軸更新y軸標度
 
plt.xlim(0,len(sheet1.columns)+1)#設置x軸范圍,美化圖表
 
plt.ylim(0,len(sheet1.index)+1)#設置y軸范圍,美化圖表
 
plt.legend(handles=[mpatches.Patch(color=colors[i],label=(sheet.index[i])) for i in range(len(sheet.index))]
 
           ,loc='best',bbox_to_anchor=(1.05,1.0),borderaxespad =0.)#增加圖例,并將其移到圖框外顯示
 
plt.show()#顯示圖片
 
 
 
上一篇的留言里,有讀者采用R語言繪制了氣泡圖并分享了程序,很開心能拋磚引玉,歡迎大家一起探討用不同的方式來實現數據可視化。

版權聲明:本文:如何利用Python將氣泡矩陣圖中的“氣泡”變成餅圖或環圖 由重慶網站制作公司(www.l2qz.net)原創內容,如需要轉載請注明原文網址:重慶網站建設公司http://www.l2qz.net/

 
喜歡看,就分享到:

圍觀: 9999次 | 責任編輯:重慶網站建設公司

回到頂部
二十二世纪古墓奇兵爱慕影院 北京时时放假 传奇电子跳起来大奖 广东福利彩票36选7开奖号走势图 北京赛pk10现场记录 四川快乐12怎么选号 内蒙古十一选五走势图走势图 三d近500期走势图 极速时时提醒软件 云南时时中和值走势 老重庆时时彩app下载 不是智能手机捕鱼达人 河北前三直选遗漏