Matplotlib中幾種常用的圖形(四)
條形圖
條形圖常常用來描述一組資料的對比情況,例如:一週七天,每天的城市車流量等。【條形圖有兩個引數x,y】bar()繪製豎直條形圖、barh()繪製水平條形圖。
匯入繪圖工具包:
import matplotlib.pyplot as plt
import numpy as np
繪製豎直條形圖
x = np.linspace(0, 5, 5)
y = np.random.randint(0, 20, size=5)
# 表示先生成15(5*3)個隨機數,然後將它們組裝成5行,那麼每行三個數,對應了顏色的三個組成部分
color = np.random.rand(15).reshape (5, 3)
plt.bar(x, y, alpha=0.8, color=color)
plt.show()
繪製出來的圖形如下:
水平條形圖的繪製:
plt.barh(x, y)
plt.show()
直方圖
直方圖描述了資料中某個範圍內資料出現的頻度。【直方圖的引數只有一個x,不像條形圖需要傳入x,y】。
hist()函式:
—bins:可以使一個bin數量的整數值,也可以使表示bin的一個序列,預設值為10.
—normed:如果值是True,直方圖的值將進行歸一化處理,形成概率密度,預設值時False。
—color:指定直方圖的顏色,可以使單一顏色值或顏色的序列。如果指定了多個數據集合,顏色序列將會設定為相同的順序。如果未指定,將會使用一個預設的線條顏色。
—orientation:通過設定orientation為horizontal建立水平直方圖,預設值為vertical。
x = [np.random.randint(0, n, n) for n in [3000, 4000, 5000]]
bins = [0, 100, 500, 1000, 2000, 3000, 4000, 5000]
labels = ["3k", "4k", "5k"]
plt.hist(x, bins=bins, label=labels)
plt.legend()
plt.show()
餅 圖
餅狀圖通常用來表達集合中各個部分的百分比,【餅圖也只有一個引數x!】pie()餅圖適合展示各部分佔總體的比例,條形圖適合比較各部分的大小
普通各部分佔滿餅圖、普通未佔滿餅圖,餅圖陰影、分裂等屬性設定:
—#label引數設定每一塊的標籤;labeldistance引數設定標籤距離圓心的距離(比例值)。
—#autopct引數設定比例值的顯示格式(%1.1f%%); pctdistance引數設定比例值文字距離圓心的距離。
—#explode引數設定每一塊頂點距圓形的長度(比例值);color引數設定每一塊的顏色。
—#shadow引數為布林值,設定是否繪製陰影。
—#startangle設定旋轉角度”’。
普通各部分佔滿餅圖
plt.figure(figsize=(6, 9)) # 調節圖形大小,寬,高
p = np.array([0.7, 0.2, 0.1])
colors = ['red', 'yellow', 'green']
labels = ["dog", "cat", "other"]
plt.pie(p, labels=labels, autopct="%1.2f%%", colors=colors)
plt.axis("equal") # plt.figure(figsize=(4, 4))
plt.legend() # 指明要繪製的圖例
plt.title("Pie chart")
plt.savefig("PieChart.jpg")
plt.show()
普通未佔滿餅圖
plt.figure(figsize=(6, 9))
p = np.array([0.6, 0.2, 0.1])
colors = ['red', 'yellow', 'green']
labels = ["dog", "cat", "other"]
plt.pie(p, labels=labels, autopct="%1.2f%%", colors=colors)
plt.axis("equal")
plt.title("Pie chart")
plt.savefig("Pie.jpg")
plt.show()
餅圖分裂及陰影
plt.figure(figsize=(6, 6))
p = np.array([0.4, 0.2, 0.15, 0.15, 0.1])
colors = ['red', 'yellow', 'green', 'blue', 'purple']
labels = ["dog", "cat", "bird", "cow", "sheep"]
plt.pie(p, labels=labels, autopct="%1.2f%%", colors=colors, labeldistance=1.2,
pctdistance=0.5, explode=[0.1, 0.1, 0.1, 0.2, 0.1], shadow=True,
startangle=90)
plt.axis("equal")
plt.title("Animal Pie Chart")
plt.show()
散點圖
【散點圖需要兩個引數x,y,但此時x不是表示x軸的刻度,而是每個點的橫座標!】
x = np.random.randn(1000)
y = np.random.randn(1000)
color = np.random.random(3000).reshape(1000, 3) # 設定顏色
size = np.random.randint(0, 100, 1000) # 設定大小
plt.scatter(x, y, color=color, s=size, alpha=0.5) # alpha設定透明度
plt.show()