Matplotlib是一個Python 2D繪圖庫,它可以在各種平台上以各種硬拷貝格式和互動式環境產生出具有出版品質的圖形。
在上篇Matplotlib 資料視覺化教學中,我們要介紹如何建立長條圖、直方圖與散佈圖 #。今天我們要為大家帶來另外兩種圖,堆疊圖和圓餅圖。因為這兩種圖十分相似,所以要放在一起介紹。
堆疊圖
堆疊圖用來顯示『部分對整體』隨時間的關係。堆疊圖基本上類似圓餅圖,只是隨時間而變化。
讓我們考慮一個情況,我們一天有 24 小時,我們想看看我們如何花時間。我們將我們的活動分為:睡覺,吃飯,工作和玩耍。
我們假設我們要在5 天的時間內追蹤它,因此我們的初始資料將如下所示:
import matplotlib.pyplot as plt days = [1,2,3,4,5] sleeping = [7,8,6,11,7] eating = [2,3,4,3,2] working = [7,8,7,2,2] playing = [8,5,7,8,13]
因此,我們的x軸將包括day變量,即1, 2, 3, 4 和5。然後,日期的各個成分保存在它們各自的活動中。像這樣繪製它們:
plt.stackplot(days, sleeping,eating,working,playing, colors=['m','c','r','k']) plt.xlabel('x') plt.ylabel('y') plt.title('Interesting Graph\nCheck it out') plt.show()
在這裡,我們可以至少在顏色上看到,我們如何花費我們的時間。問題是,如果不回頭看程式碼,我們不知道什麼顏色是什麼。下一個問題是,對於多邊形來說,我們實際上不能為資料加上『標籤』。因此,在任何不止是線條,帶有像這樣的填充或堆疊圖的地方,我們不能以固有方式標記出特定的部分。這不應該阻止程式設計師。我們可以解決這個問題:
import matplotlib.pyplot as plt days = [1,2,3,4,5] sleeping = [7,8,6,11,7] eating = [2,3,4,3,2] working = [7,8,7,2,2] playing = [8,5,7,8,13] plt.plot([],[],color='m', label='Sleeping', linewidth=5) plt.plot([],[],color='c', label='Eating', linewidth=5) plt.plot([],[],color='r', label='Working', linewidth=5) plt.plot([],[],color='k', label='Playing', linewidth=5) plt.stackplot(days, sleeping,eating,working,playing, colors=['m','c','r','k']) plt.xlabel('x') plt.ylabel('y') plt.title('Interesting Graph\nCheck it out') plt.legend() plt.show()
我們在這裡做的是畫一些空行,給予它們符合我們的堆疊圖的相同顏色,和正確標籤。我們也使它們線寬為 5,使線條在圖例中顯得較寬。現在,我們可以很容易地看到,我們如何花費我們的時間。
餅圖
圓餅圖很像堆疊圖,只是它們位於某個時間點。通常,餅圖用於顯示部分對於整體的情況,通常以%為單位。幸運的是,Matplotlib 會處理切片大小以及一切事情,我們只需要提供數值。
import matplotlib.pyplot as plt slices = [7,2,2,13] activities = ['sleeping','eating','working','playing'] cols = ['c','m','r','b'] plt.pie(slices, labels=activities, colors=cols, startangle=90, shadow= True, explode=(0,0.1,0,0), autopct='%1.1f%%') plt.title('Interesting Graph\nCheck it out') plt.show()
在plt.pie中,我們需要指定『切片』,這是每個部分的相對大小。然後,我們指定對應切片的顏色清單。接下來,我們可以選擇指定圖形的『起始角度』。這使你可以在任何地方開始繪圖。在我們的例子中,我們為餅圖選擇了 90 度角,這意味著第一個部分是一個垂直線條。接下來,我們可以選擇為繪圖添加一個字元大小的陰影,然後我們甚至可以使用explode拉出一個切片。
我們總共有四個切片,所以對於explode,如果我們不想拉出任何切片,我們傳入0,0,0,0。如果我們想要拉出第一個切片,我們傳入0.1,0,0,0。
最後,我們使用autopct,選擇將百分比放置到圖表上面。
以上是用Matplotlib如何繪製堆疊圖和圓餅圖的詳細內容。更多資訊請關注PHP中文網其他相關文章!