日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python画环形图_用Python把图做的好看点:用Matplotlib画个环形图

發布時間:2025/3/12 python 12 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python画环形图_用Python把图做的好看点:用Matplotlib画个环形图 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

P老板:小Lo啊,你覺得這幾個圖好看嗎

我:好看,好看

P老板:我也覺得,這個月的月報,就用這個把,你給我幾個,我看看

我:.....

于是乎,我們今天的目標是什么!!!

畫個環形圖!!!

今天,我們就來先畫個簡單的

成品長這樣

是不是一模一樣!!(很不要臉)

之前我們有學習過,如何用極坐標去掰彎柱狀圖(柱狀圖:為什么不放過我??)

仔細看看環形圖,其實,環形圖就是掰彎柱狀圖的兄弟——條形圖!!!!

是不是很簡單!!

在matplotlib里,柱狀圖用bar

而條形就是barh! 多了一個字母而已的

我們先來畫個條形圖試試看

from matplotlib import pyplot as plt

fig = plt.figure(figsize=[13.44,7.5],facecolor=(235/255,235/255,235/255))

ax1=fig.add_subplot(1,1,1,facecolor=(235/255,235/255,235/255))

plt.yticks(range(0,4,1), fontsize=14)

ax1.barh(height=0.5,width=0.1,y=1,color=(243/255,133/255,36/255))

ax1.barh(height=0.5,width=0.2,y=2,color=(243/255,133/255,36/255))

ax1.barh(height=0.5,width=0.3,y=3,left=0.1,color=(243/255,133/255,36/255))

可以發現,在barh中,控制條形位置和大小的參數主要是height,width,y和left

其中height控制著條形圖的寬度(真的不是width,不是width,不是width),也就是縱向的長度

而width控制的是長度,也就是橫向的寬度

y值控制著條形圖中線在y軸的位置,

left控制從左邊起,那個位置開始畫

然后,我們在add_subplot中打開極坐標

他就變成了這樣!!!

似乎崩了!!

沒關系!!

我們繼續。我們繼續,看看改改參數會有什么神奇的發現。

fig = plt.figure(figsize=[13.44,7.5],facecolor=(235/255,235/255,235/255))

ax1=fig.add_subplot(1,1,1,facecolor=(235/255,235/255,235/255),projection='polar')

plt.yticks(range(0,5,1), fontsize=14)#設置y軸的的刻度

ax1.barh(height=0.5,width=0.1,y=1,color=(243/255,133/255,36/255))

ax1.barh(height=0.5,width=1,y=2,color=(243/255,133/255,36/255))

ax1.barh(height=0.5,width=1,y=3,color=(243/255,133/255,36/255))

ax1.barh(height=0.5,width=1,y=4,color=(243/255,133/255,36/255))

發現:環形是從0讀開始,順時針的畫,而且width控制的是環形的長度

所以環形圖的width也就是實際要畫的圖的X值

然后再height調細

調細后就變成了,和例子差不多的

然后再看看如何打上前端的小點點!

from matplotlib import pyplot as plt

fig = plt.figure(figsize=[13.44,7.5],facecolor=(235/255,235/255,235/255))

ax1=fig.add_subplot(1,1,1,facecolor=(235/255,235/255,235/255),projection='polar')

plt.yticks(range(0,5,1), fontsize=14)#設置y軸的的刻度

ax1.barh(height=0.05,width=1,y=2,color=(243/255,133/255,36/255))

ax1.scatter(x=1,y=2,color=(243/255,133/255,36/255))

ax1.barh(height=0.05,width=1,y=3,color=(243/255,133/255,36/255))

ax1.scatter(x=1,y=3,color=(243/255,133/255,36/255))

ax1.barh(height=0.05,width=1,y=4,color=(243/255,133/255,36/255))

ax1.scatter(x=1,y=4,color=(243/255,133/255,36/255))

用scatter,然后barh的width變成了scatter的x,y還是那個y

我們在來做個小實驗,

我們都知道極坐標應該輸入的是θ和r,一個表示角度,一個表示半徑,才能確定一個點的位置

那怎么在barh里換算θ和r呢

比如我們要畫一個這樣的弧形

弧形對應90度角,從45度開始,一直到135度

from matplotlib import pyplot as plt

import numpy as np

fig = plt.figure(figsize=[13.44,7.5],facecolor=(235/255,235/255,235/255))

ax1=fig.add_subplot(1,1,1,facecolor=(235/255,235/255,235/255),projection='polar')

plt.yticks(range(0,5,1), fontsize=14)#設置y軸的的刻度

ax1.barh(height=0.05,width=1,y=2,color=(243/255,133/255,36/255))

ax1.scatter(x=1,y=2,color=(243/255,133/255,36/255))

ax1.barh(height=0.05,width=1,y=3,color=(243/255,133/255,36/255))

ax1.scatter(x=1,y=3,color=(243/255,133/255,36/255))

ax1.barh(height=0.05,width=1*1/4*2*np.pi,y=4,left=1/4*np.pi,color=(243/255,133/255,36/255))

width=1*1/4*2*np.pi,y=4,left=1/4*np.pi

弧形就是圓周的截取,圓周長公式:d*2π,至今乘以2π

最開始,筆者一直以為直徑應該是y值,也就是用2y* 2π 來算直徑

后來我發現,我真的錯,我一開始就不該想的這么簡單

后來多次嘗試后!

才發現,原來TM的每個圓都是單位圓,直徑都是1!!!!!

所以你要長的弧長,就直接算就好!

比如,你要個半弧形

width就是1*1/2*2*np.pi

最后,去掉網格線就搞定啦!

或者你想要換個方向的弧形,比如例子

你就把width的值加個符號就好了

from matplotlib import pyplot as plt

import numpy as np

fig = plt.figure(figsize=[13.44,7.5],facecolor=(235/255,235/255,235/255))

ax1=fig.add_subplot(1,1,1,facecolor=(235/255,235/255,235/255),projection='polar')

ax1.axis('off')

ax1.barh(height=0.005,width=-0.4*3,y=0.4,color=(243/255,133/255,36/255))

ax1.scatter(-0.4*3,0.4,color=(243/255,133/255,36/255))

ax1.barh(height=0.005,width=-0.5*3,y=0.5,color=(243/255,10/255,36/255))

ax1.scatter(-0.5*3,0.5,color=(243/255,10/255,36/255))

ax1.barh(height=0.005,width=-2*2,y=0.6,color=(243/255,133/255,36/255))

ax1.scatter(-2*2,0.6,color=(243/255,133/255,36/255))

ax1.barh(height=0.005,width=-0.5*np.pi*2,y=0.7,color=(243/255,133/255,36/255))

ax1.scatter(-0.5*np.pi*2,y=0.7,color=(243/255,133/255,36/255))

至于這么畫出這種效果

就當小作業了,多思考把

完畢,撒花*********

總結

以上是生活随笔為你收集整理的python画环形图_用Python把图做的好看点:用Matplotlib画个环形图的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。