數據呈現 丨用python繪製極坐標圖形

2021-12-29 數據Seminar


如是所言,圓是幾何中最講究對稱的圖形,也是最別致的曲線。相信大家在論文、報告的寫作中,柱狀圖、條形圖露臉次數應該是最多的。雖然說柱狀圖、條形圖可以清晰的展現出數據的變化趨勢,但對於視覺動物的我們,出現的次數多了,終究還是會有審美疲勞。倘若我們能夠把柱狀圖、條形圖「掰彎」,讓它以圓的形式展示,相信會給人耳目一新的感覺。能繪製極坐標圖的工具不少,今天為大家帶來它三種圖形的繪製,分別為散點圖、柱狀圖、雷達圖,所用工具是我們的老朋友 python自帶的 matplotlib 包。下面展示了極坐標散點圖、極坐標餅狀圖、極坐標雷達圖三種圖形的畫法示例,並詳解每種畫法代碼的含義。
import pandas as pd import numpy as npimport matplotlib.pyplot as plt%matplotlib inline 

散點圖將所有的數據以點的形式展現在坐標繫上,可以觀察數據點的分布情況,在直角坐標系,可以推斷變量間的相關性,而在極坐標上,更側重數據的分布及離散情況
r = 2 * np.random.rand(100)               theta = 2 * np.pi * np.random.rand(100)   area = 100 * r**2                         colors = theta                             ax = plt.subplot(111, projection='polar')     c = ax.scatter(theta, r, c=colors, s=area, cmap='cool', alpha=0.75)plt.show()

所作圖形如下所示,可以看到散點在極坐標上的分布情況,以及散點自身特點(如大小、顏色等)情況。

註:上圖為隨機數據生成的圖,每次運行得到的圖形會有所不同。matplot的色彩映射請參考官方文檔:

https://www.matplotlib.org.cn/tutorials/colors/colormaps.html

柱狀圖是一種以長方形長度為變量的統計報告圖,由一系列高度不等的縱向條紋表示數據分布的情況。極坐標柱狀圖則是將柱形條顯示在極坐標中,其不僅保留了直角坐標系中數據變化趨勢的優點,而且圖形表達形式也更加美觀。
N = 20theta = np.linspace(0.0, 2 * np.pi, N, endpoint=False)       

R = 10 * np.random.rand(N) width = np.pi / 8 * np.random.rand(N) ax = plt.subplot(111, projection = 'polar') bars = ax.bar(theta,R, width = width, bottom = 0.0) for r, bar in zip(radii, bars): bar.set_facecolor(plt.cm.viridis(r / 10.)) bar.set_alpha(0.5) plt.show()

所作圖形如下所示,可以看到,圖形可以很清楚地傳達數據的大小,一如你在柱狀圖(條形圖)上看到的,你還可以嘗試在圓外添加標籤,使得柱條與標籤一一對應起來(不會的話請繼續閱讀下文極坐標雷達圖的繪製)。


雷達圖也稱網絡圖,蜘蛛圖等,用於比較和評估多個指標之間的強弱關係。
#生成數據,注意第一組與最後一組數據是相同的,確保可以連成一個閉合多邊形country = ["CHINA", "USA", "JAPAN", "KOREA", "ENGLAND"]index1= [4.5, 4.9, 3.9, 2.8, 2.6, 4.5]index2= [4.9, 4.7, 4.5, 3.9, 3.8, 4.9]    plt.figure(figsize = (10, 6))               plt.subplot(polar = True)                    theta = np.linspace(0, 2 * np.pi, len(index1))    #設置網格,標籤 lines, labels = plt.thetagrids(range(0, 360, int(360/len(country))), (country))   #繪製index1 plt.plot(theta,index1 )plt.fill(theta,index1 , 'g', alpha=0.1)     #繪製index2plt.plot(theta, index2) # 添加圖例和標題plt.legend(labels=('index1', 'index2'), loc = 'best',frameon = True)   plt.title("index1 vs index2");

所作圖形如下所示,我們不僅可以看到同一個國家兩個指標index1與index2的大小關係,還可以看到不同國度同一個指標的大小情況。





往期推薦

回復【Python】👉簡單有用易上手

回復【學術前沿】👉機器學習丨大數據

回復【數據資源】👉公開數據

回復【可視化】👉你心心念念的數據呈現

回復【老姚專欄】👉老姚趣談值得一看

一周熱文

數據呈現 | R語言繪圖包大全(共40個包)

特別推薦丨老姚專欄:利用實驗方法進行因果識別的效度問題

工具&方法 | 黑科技!Excel中的rept函數也能繪圖

數據呈現 | 用 pyecharts 繪製時間線動圖

特別推薦 | 「正則表達式」在工業企業資料庫匹配中的運用(二)

相關焦點

  • python繪製圖形時,如何讓坐標軸刻度線都向內
    python繪製圖形時,有時候論文對圖形中的刻度線要求都要向內,默認是都向外的,兩條語句解決問題。坐標軸刻度線向外加上語句處理之後刻度線向內熱度圖刻度坐標軸上的字體大小調整ns.heatmap(corr_mat, mask=mask,annot=True,linewidths
  • OriginPro:分組極坐標圖形告訴你哪裡的烤腸最「香」【數據繪圖】
    除此之外,還可以使用極坐標系下的圖形來表示該分組數據,而且更漂亮,適合放在PPT中。極坐標條形圖選擇第三列數據,使用菜單欄中的Plot菜單下Specialized類別裡的Radical Bar Plot圖形模板來繪製圖形。
  • Matlab中繪製不同坐標的圖形
    1、雙縱坐標函數plotyy 在Matlab中,如果需要繪製出具有不同縱坐標標度的兩個圖形,可以使用plotyy函數,它能把具有不同量綱,不同數量級的兩個函數繪製在同一個坐標中,有利於圖形數據的對比分析。使用格式為:plotyy(x1,y1,x2,y2) x1,y1對應一條曲線,x2,y2對應另一條曲線。
  • Python學習筆記:繪製極坐標圖和散點圖的繪製與保存
    1.簡單極坐標圖#導入繪製極圖所需要的包import matplotlib.pyplot as pltimport numpy as np#設置下面所需要的參數barSlices = 12r = 30*np.random.rand(barSlices)#polar表示繪製極坐標圖,顏色,線寬,標誌點樣式plt.polar(theta, r, color="chartreuse", linewidth=2, marker="*", mfc="b",
  • 數據呈現丨好用易懂的matplotlib可視化,快來了解一下!
    這篇博文非常優秀,詳細介紹了相關圖、偏差圖、排列圖等七類圖形共50幅圖的繪製,但是——代碼有一定難度,屬於可視化進階內容全英文,且沒有任何圖形解釋基於此,我們在此選出幾幅具有代表性的圖進行詳細介紹(不僅僅是翻譯,更有非常詳細的註解),以饗讀者。
  • 如何對比不同人物的數據,雷達圖輕鬆搞定,Python用兩種方式繪製
    上一篇內容,我們對世界十大航母排行數據,通過使用python中的matplotlib模塊,繪製了不同類型的圖形進行了數據的可視化(胖五升空,山東入列,網友:能否用python畫全球航母戰力對比圖?)。小夥伴們可以根據自己的需要添加任意數據。matplotlib繪製雷達圖思路是這樣的,我們按照屬性值(比如像上面的體力、武力等),將雷達圖的中的圓分為5份,然後,我們將每個人的相關屬性分別繪製在這5個屬性值內即可實現。
  • 使用 Python 和 GNU Octave 繪製數據 | Linux 中國
    為此,我將解釋如何用 Python 和 GNU Octave 編寫一個程序來完成一個你可以歸類為數據科學的特殊任務。如果你已經熟悉其中一種語言,從它開始,然後通過其他語言尋找相似之處和不同之處。這篇文章並不是對程式語言的詳盡比較,只是一個小小的展示。所有的程序都應該在命令行上運行,而不是用圖形用戶界面(GUI)。完整的例子可以在 polyglot_fit 存儲庫中找到。
  • 數據分析與挖掘 - 08圖形繪製
    1 柱狀圖在實際的企業應用中,我們要掌握多種圖形的繪製,並且深度結合自己的應用場景,用合適的圖形來展示適合它的數據場景,使得數據更具有說明力。,看一下這些參數的含義吧plt.pie(sold_nums, labels=kinds, colors=colors)plt.show()餅圖顯示結果4 極線圖接下來我們看一下極線圖的繪製方法,我們可以使用plt.polar(theta,x)這樣的方式來進行圖形的繪製,如果你之前沒接觸過這種圖形
  • 用Python繪製多個圖形的4個簡單技巧
    在可視化數據時,通常需要在單個圖形中繪製多個圖形。例如,如果您想從不同的角度可視化相同的變量(例如,數字變量的並排直方圖和箱線圖),則多個圖形很有用。在這篇文章中,我分享了繪製多個圖形的 4 個簡單但實用的技巧。數據集讓我們導入包並更新圖表的默認設置,為圖表添加一點個人風格。
  • 從零開始學Python可視化(二):掌握統計圖形的繪製
    這次我們會嘗試更多常見的統計圖形,比如條形圖、直方圖、餅圖等,我們的目標是掌握工作學習過程中使用最頻繁的圖形技能。1. 柱狀圖(條形圖) —— bar() / barh()柱狀圖又叫條形圖,用於繪製定性(分類)數據的分布特徵,比如不同國家的GDP、不同年齡段的平均體重等。
  • 使用R繪製幾種常用的雙坐標軸圖形
    之前公眾號推送了一系列關於使用ggplot2包繪製統計圖形的文章,有網友詢問是否可以繪製雙軸的統計圖形。
  • 這麼用MatPlotLib視覺化呈現數據,你值得擁有!
    餅狀圖、極坐標圖4. 統計性繪圖以及許多其它功能。這些功能廣泛應用於折線圖、柱狀圖、直方圖、餅狀圖等。案例學習如上所述,可使用Matplotlib繪製多種圖形,如散點圖、柱狀圖和直方圖。根據數據視覺化過程中的實際需求選擇圖形類型,如群組對比、定量變量對比、數據分布分析等。
  • 【原創】Matlab繪製箭頭坐標軸圖形
    有時經常需要使用Matlab繪製坐標軸帶有箭頭的圖形,特別是一些原理性的圖形,只需要定性表達曲線的變化趨勢,無需精確表達曲線的數量關係,這時使用帶箭頭的坐標軸顯得更加美觀
  • python畫圖函數大全
    很多時候,我們需要用python畫圖,這樣就可以更加直觀的看到數據的走勢,而不是乾巴巴的數字。
  • 數據分析可視化(五)|如何繪製密度分布圖
    在前幾天對數據分析師與算法工程師進行崗位對比分析的文章中,我們使用了密度分布圖和箱線圖對薪資水平與學歷對薪資的影響進行了分析,那麼早起就對這兩種圖形的繪製方法進行解析
  • AutoCAD:用絕對坐標繪製直線
    「直線」是各種繪圖中最常用、最簡單的一類圖形對象,只要指定了起點和終點即可繪製一條直線。在AutoCAD中,可以利用二維坐標(x,y)或三維坐標(x,y,z)來指定端點,也可以混合使用二維坐標和三維坐標。如果輸入二維坐標,AutoCAD將會用當前的高度作為Z軸坐標值,默認值為0。
  • Python學習第89課-數據可視化之直方圖繪製
    【每天幾分鐘,從零入門python編程的世界!】假設你想投資某一個城市的房地產,你肯定需要對這個城市的人口分布、增長潛力做一個調查,這時我們就需要做一個直方圖(histogram plot)。所以我們引入一個bin,就像垃圾分類一樣,我們給這些數據分類,相當於我們設定不同的年齡段,0-9歲裝到一個桶裡,10-19歲裝到一個桶裡,...,90-99歲裝到一個桶裡,即以10歲的間隔設置年齡段,以每一個年齡段為坐標畫一個柱狀圖,這些柱狀圖組合到一起,形成了直方圖。
  • Matlab中繪製三維圖形
    繪製三維曲線1.用plot3()函數畫三維曲線最基本的三維圖形函數為plot3,它將二維繪圖函數plot的有關功能擴展到三維空間,可以用來繪製三維曲線。[X,Y,Z]=meshgrid(x,y,z) :生成向量 x、y、z 的三維網格數據,生成的數據 X 和 Y 可分別表示三維繪圖中的 x 和 y 坐標。三維網格圖形是指在三維空間內連接相鄰的數據點,形成網格。在MATLAB中繪製三維網格圖的函數主要有mesh()函數、meshc()函數和meshz()函數。
  • MATLAB繪製交互式圖形
    如果您從多個坐標區上選擇了點,則會相對於各坐標區原本所處的坐標系返回相應的結果。 2、gtext指令gtext(arg)              %用滑鼠把字符串或者字符串元胞數組放置到圖中作為文字說明。                              %用戶用滑鼠確定其放置的位置,右擊,字符串將被放置在緊靠十字中心的「第一象限」位置上。
  • Python matplotlib繪圖示例 - 繪製三維圖形
    它可以繪製各種圖形,下面就學習了下Python中的matplotlib模塊,如何繪製三維圖形。示例代碼一:# coding=utf-8import numpy as npimport matplotlib.pyplot as pltimport mpl_toolkits.mplot3da,b = np.mgrid[-2:2:20j,-2:2:20j]#測試數據c=a*np.exp(-a**2-b**2)#三維圖形