一. 柱狀
-
電影票房柱狀圖1
import matplotlib.pyplot as plt import numpy as np
# 設置matplotlib正常顯示中文和負號 matplotlib.rcParams['font.sans-serif']=['SimHei'] matplotlib.rcParams['axes.unicode_minus']=False # 生成畫布 plt.figure(figsize=(20, 8), dpi=80) # 橫座標電影名字 movie_name = ['雷神3:諸神黃昏','正義聯盟','東方快車謀殺案','尋夢環遊記','全球風暴','降魔傳','追捕','七十七天','密戰','狂獸','其它'] # 縱座標票房 y=[73853,57767,22354,15969,14839,8725,8716,8318,7916,6764,52222] x=range(len(movie_name)) plt.bar(x,y,width=0.5, color=['b','r','g','y','c','m','y','k','c','g','g']) plt.xticks(x, movie_name) plt.show()
2. 電影票房柱狀圖2
plt.figure(figsize=(20, 8), dpi=80)
movie_name = [‘雷神3:諸神黃昏’,‘正義聯盟’,‘東方快車謀殺案’]
first_day = [10587.6, 10062.5, 1275.7]
first_weekend = [36224.9, 34479.6, 11830]
先得到movie_name長度, 再得到下標組成列表
x = range(len(movie_name))
plt.bar(x, first_day, width=0.2)
向右移動0.2, 柱狀條寬度爲0.2
plt.bar([i + 0.2 for i in x], first_weekend, width=0.2)
底部漢字移動到兩個柱狀條中間(本來漢字是在左邊藍色柱狀條下面, 向右移動0.1)
plt.xticks([i + 0.1 for i in x], movie_name)
plt.show()
二. 直方圖
-
先介紹一下直方圖
類似如下圖, 橫軸代表人類身高, 縱軸代表每一個身高出現的次數, 如果某一個柱狀的寬度乘以縱軸高度, 則結果爲這個身高的人的總數.
-
簡單的直方圖1
import matplotlib.pyplot as plt import numpy as np
設置matplotlib正常顯示中文和負號
matplotlib.rcParams[‘font.sans-serif’]=[‘SimHei’] # 用黑體顯示中文
matplotlib.rcParams[‘axes.unicode_minus’]=False # 正常顯示負號
隨機生成(10000,)服從正態分佈的數據
data = np.random.randn(10000)
“”"
繪製直方圖
data:必選參數,繪圖數據
bins:直方圖的長條形數目,可選項,默認爲10
normed:是否將得到的直方圖向量歸一化,可選項,默認爲0,代表不歸一化,顯示頻數。normed=1,表示歸一化,顯示頻率。
facecolor:長條形的顏色
edgecolor:長條形邊框的顏色
alpha:透明度
“”"
plt.hist(data, bins=40, normed=0, facecolor=“blue”, edgecolor=“black”, alpha=0.7)
顯示橫軸標籤
plt.xlabel(“區間”)
顯示縱軸標籤
plt.ylabel(“頻數/頻率”)
顯示圖標題
plt.title(“頻數/頻率分佈直方圖”)
plt.show()
3. 簡單的直方圖2
# 直方圖
plt.figure(figsize=(20, 8), dpi=80)
time =[131, 98, 125, 131, 124, 139, 131, 117, 128, 108, 135, 138, 131, 102, 107, 114, 119, 128, 121, 142, 127, 130, 124, 101, 110, 116, 117, 110, 128, 128, 115, 99, 136, 126, 134, 95, 138, 117, 111,78, 132, 124, 113, 150, 110, 117, 86, 95, 144, 105, 126, 130,126, 130, 126, 116, 123, 106, 112, 138, 123, 86, 101, 99, 136,123, 117, 119, 105, 137, 123, 128, 125, 104, 109, 134, 125, 127,105, 120, 107, 129, 116, 108, 132, 103, 136, 118, 102, 120, 114,105, 115, 132, 145, 119, 121, 112, 139, 125, 138, 109, 132, 134,156, 106, 117, 127, 144, 139, 139, 119, 140, 83, 110, 102,123,107, 143, 115, 136, 118, 139, 123, 112, 118, 125, 109, 119, 133,112, 114, 122, 109, 106, 123, 116, 131, 127, 115, 118, 112, 135,115, 146, 137, 116, 103, 144, 83, 123, 111, 110, 111, 100, 154,136, 100, 118, 119, 133, 134, 106, 129, 126, 110, 111, 109, 141,120, 117, 106, 149, 122, 122, 110, 118, 127, 121, 114, 125, 126,114, 140, 103, 130, 141, 117, 106, 114, 121, 114, 133, 137, 92,121, 112, 146, 97, 137, 105, 98, 117, 112, 81, 97, 139, 113,134, 106, 144, 110, 137, 137, 111, 104, 117, 100, 111, 101, 110,105, 129, 137, 112, 120, 113, 133, 112, 83, 94, 146, 133, 101,131, 116, 111, 84, 137, 115, 122, 106, 144, 109, 123, 116, 111,111, 133, 150]
bins = 2
group = int((max(time) - min(time)) / bins)
plt.hist(time, group, normed=1)
plt.hist(time, group)
指定刻度的範圍以及時長
plt.xticks(list(range(min(time), max(time)))[::2])
plt.xlabel(“電影時長大小”)
plt.ylabel(“電影的數據量”)
表格中的網狀線
plt.grid(True, linestyle=’–’, alpha=0.8)
plt.show()
三. 餅狀圖
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rcParams[‘font.sans-serif’] = [‘SimHei’]
matplotlib.rcParams[‘axes.unicode_minus’] = False
label_list = [“第一部分”, “第二部分”, “第三部分”] # 各部分標籤
size = [55, 35, 10] # 各部分大小
color = [“r”, “g”, “b”] # 各部分顏色
explode = [0.05, 0, 0] # 各部分突出值
“”"
繪製餅圖
explode:設置各部分突出
label:設置各部分標籤
labeldistance:設置標籤文本距圓心位置,1.1表示1.1倍半徑
autopct:設置圓裏面文本
shadow:設置是否有陰影
startangle:起始角度,默認從0開始逆時針轉
pctdistance:設置圓內文本距圓心距離
返回值
l_text:圓內部文本,matplotlib.text.Text object
p_text:圓外部文本
“”"
patches, l_text, p_text = plt.pie(size, explode=explode, colors=color, labels=label_list, labeldistance=1.1, autopct="%1.1f%%", shadow=True, startangle=90, pctdistance=0.6)
plt.axis(“equal”) # 設置橫軸和縱軸大小相等,這樣餅纔是圓的
plt.title(“餅狀圖”)
plt.legend()
plt.show()