matplotlib---柱狀圖, 直方圖, 餅狀圖的繪製

一. 柱狀

  1. 電影票房柱狀圖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. 先介紹一下直方圖
    類似如下圖, 橫軸代表人類身高, 縱軸代表每一個身高出現的次數, 如果某一個柱狀的寬度乘以縱軸高度, 則結果爲這個身高的人的總數.
    在這裏插入圖片描述

  2. 簡單的直方圖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()

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章