天天看點

python怎麼畫一個點_?用Python把圖做的好看點:用Matplotlib畫個好看的氣泡圖

python怎麼畫一個點_?用Python把圖做的好看點:用Matplotlib畫個好看的氣泡圖

我們繼續來把簡單的圖形丢到極坐标,這次是氣泡圖和柱狀圖,臨摹的對象是澎湃美數課

python怎麼畫一個點_?用Python把圖做的好看點:用Matplotlib畫個好看的氣泡圖

這個圖看起來很好看,原理其實很簡單,把柱狀圖和氣泡圖從笛卡爾坐标系中轉移到極坐标系中來就OK

我們開始本次的臨摹吧

本期的主題如下:

  • 熟悉一下柱狀圖的一些參數
  • 熟悉一下散點圖的一些參數
  • 熟悉一下極坐标系的規則(高中内容啦)
  • 熟悉一下這麼自定義字型
  • 熟悉一下網格線

我們先來說說及極坐标内,一個點位置該怎麼表示:(筆者很懶惰,就直接從網上複制圖檔來教學了)

python怎麼畫一個點_?用Python把圖做的好看點:用Matplotlib畫個好看的氣泡圖

從圖上可以看出來,x軸為那個帶箭頭的線,matplotlib中也一樣,極坐标的起點在同樣的位置,不過在matplotlib裡 x表示的是角度,y表示的長度,是以确定好夾角θ,和半徑長度就OK

我們在看看 美術課裡這個樣圖,一排上,一共有15個圓,且最後一個和第一個沒有在90°與270°的位置上,是以我們要把圓分成36份,也就是每份是2π/36

這樣我們就可以确定等差數列了,我們以3/2π為起點,不斷加2π/36

我們來畫第一圈圓

import 
           
python怎麼畫一個點_?用Python把圖做的好看點:用Matplotlib畫個好看的氣泡圖

第一圈圓

S2=np.array([2028,1976,1962,1925,1904,1833,1730,1577,1524,1493,1475,1589,1511,1505,1524])*2
x2=[(0)*np.pi+np.pi/(len(S1)+1)*(i+1) for i in range(2*(len(S1)+1))]
y2=[130 for i in range(2*(len(S1)+1)) if i<len(S1) ]
           

我們用同樣的方式計算出第二圈圓的位置,畫出來

python怎麼畫一個點_?用Python把圖做的好看點:用Matplotlib畫個好看的氣泡圖

接着我們把柱狀圖也丢進極坐标掰彎

柱狀圖可以用四個參數來确定每個柱子的位置

H1=[56,55,54,52,51,50,49,47,43,40,37,34,31,28,24]
W1=[0.05 for i in range(2*(len(S1)+1)) if i<len(S1)]
B=[30 for i in range(2*(len(S1)+1)) if i<len(S1)]

ax.bar(x=x1, height=H1, width=W1,bottom=B,color=(255/255,171/255,1/255))

x表示x軸的位置,
bottom表示柱子最底端的位置
height表示 柱子的長度
width表示柱子的寬度
           
python怎麼畫一個點_?用Python把圖做的好看點:用Matplotlib畫個好看的氣泡圖

最後我們把 坐标上的線,還有坐标軸上的文字去掉,以及背後畫個網格線,

ax.spines['polar'].set_visible(False) #去掉坐标軸的為外面一層 粗的線

plt.grid(color='gray', linestyle=':', linewidth=1,which='major',axis='x',alpha=0.1) #添加網格線

ax.set_yticks([]) #去掉 y軸上的文字

ax.set_xticks(x2) # 應為網格線是跟着x軸走的,如果去掉x軸的話,網格線也就沒了

ax.tick_params(axis='x',labelsize=0) #因為我們保留了x軸,x軸上的文字會存在,是以把x軸上的文字大小設定為0

python怎麼畫一個點_?用Python把圖做的好看點:用Matplotlib畫個好看的氣泡圖

最後我們選擇喜歡的字型,然後打上資料标簽,并儲存

import matplotlib.font_manager  
font=matplotlib.font_manager.FontProperties(fname='D:FontsEnglishMuseo700-Regular.otf')

for i in range(len(x1)):
    ax.text(x=x1[i],y=y1[i],s=S1[i],color='gray',ha='center', va= 'center',fontsize=12,fontproperties=font)
for i in range(len(x1)):
    ax.text(x=x1[i],y=y2[i],s=S2[i],color='gray',ha='center', va= 'center',fontsize=12,fontproperties=font)
for i in range(len(x1)):
    ax.text(x=x1[i],y=H1[i]+40,s="{}%".format(H1[i]) ,color='gray',ha='center', va= 'center',fontsize=12,fontproperties=font)

fig.savefig('D:test.png',dpi=400,bbox_inches='tight',transparent=False)
           

裁掉不要的部分

python怎麼畫一個點_?用Python把圖做的好看點:用Matplotlib畫個好看的氣泡圖

筆者比較懶惰,就在搞那些文字與标題啦,如果要加文字與标題的話可以儲存eps格式的矢量圖檔案,放在AI裡進行深度的加工和處理哦

就這樣 完結 撒花✿✿ヽ(°▽°)ノ✿

基礎的部分可以看看這個文章:

Mono Lee:Python入門向:Matplotlib自救指南篇,從此做圖不求人(一)​zhuanlan.zhihu.com

python怎麼畫一個點_?用Python把圖做的好看點:用Matplotlib畫個好看的氣泡圖

其他在極坐标裡的畫圖可以看看這個

Mono Lee:用Python把圖做的好看點:用Matplotlib畫個環形圖​zhuanlan.zhihu.com

python怎麼畫一個點_?用Python把圖做的好看點:用Matplotlib畫個好看的氣泡圖

Mono Lee:用Python把圖做的好看點:用Matplotlib畫個玫瑰圖​zhuanlan.zhihu.com

python怎麼畫一個點_?用Python把圖做的好看點:用Matplotlib畫個好看的氣泡圖

Mono Lee:用Python把圖做的好看點:用Matplotlib做個像麥肯錫一樣的條形圖​zhuanlan.zhihu.com

python怎麼畫一個點_?用Python把圖做的好看點:用Matplotlib畫個好看的氣泡圖

繼續閱讀