Matplotlib---柱狀圖、直方圖(高斯分布)


# _*_ coding: gbk _*_
# @Author: Wonde
# bar 直方圖

import matplotlib.pyplot as plt  # 繪圖
from matplotlib.font_manager import FontProperties  # 管理字體

font = FontProperties(fname=r'STLITI.TTF')  # 設置字體 設置路徑即可
plt.style.use('ggplot')  # 樣式可選,默認ggplot和classic
# print(plt.style.available)  #查看可以使用的背景樣式
classes = ['class1', 'class2', 'class3', 'class4']  # x軸數據
studentnum = [11, 21, 33, 25]    # y軸數據
classes_index = range(len(classes))  # 傳一個可迭代對象range是一個可迭代對象,目的是為了讓非數字的X軸均勻分布,通過索引實現
#畫布設計
fig = plt.figure()  #實例化一個對象
ax1 = fig.add_subplot(1, 1, 1)  # 將一個畫布分為幾(1)行(1)列以及選定第(1)張add_subplot(1, 1, 1)

ax1.bar(classes_index, studentnum)  # 設置一些參數
# def bar(self, x, height, width=0.8, bottom=None, *, align="center",**kwargs):
# 設置刻度值的顯示位置
ax1.xaxis.set_ticks_position('bottom')  # 刻度 x的刻度在底部,y的刻度在左邊
ax1.yaxis.set_ticks_position('left')

#設置X軸的刻度和數據,X軸因為不是具體數據,故用他所在的數組位置進行等差取值。
plt.xticks(classes_index, classes, rotation=0, fontsize=12, FontProperties=font)


# 設置x和y軸以及標題欄的名字
plt.xlabel('班級', FontProperties=font, Fontsize=15)
plt.ylabel('學生人數', FontProperties=font, Fontsize=15)
plt.title('班級----學生人數', FontProperties=font, Fontsize=19)
plt.show()

 

 

 

****************************************************************************************************************************************************

 

 

# _*_ coding: gbk _*_
# @Author: Wonde
# bar 直方圖

import matplotlib.pyplot as plt  # 繪圖
from matplotlib.font_manager import FontProperties  # 管理字體

font = FontProperties(fname=r'STLITI.TTF')  # 設置字體 設置路徑即可
plt.style.use('ggplot')  # 樣式可選,默認ggplot和classic
# print(plt.style.available)  #查看可以使用的背景樣式
classes = ['class1', 'class2', 'class3', 'class4']  # x軸數據
studentnum = [11, 21, 33, 25]    # y軸數據
classes_index = range(len(classes))  # 傳一個可迭代對象range是一個可迭代對象
#畫布設計
fig = plt.figure()  #實例化一個對象
ax1 = fig.add_subplot(1, 1, 1)  # 將一個畫布分為幾(1)行(1)列以及選定第(1)張add_subplot(1, 1, 1)

ax1.barh( classes_index, studentnum)  # 設置一些參數
#     def barh(self, y, width, height=0.8, left=None, *, align="center",**kwargs):
# 設置刻度值的顯示位置
ax1.xaxis.set_ticks_position('bottom')  # 刻度 x的刻度在底部,y的刻度在左邊
ax1.yaxis.set_ticks_position('left')

# yticks設置y軸的刻度值 和數據,此時Y軸是班級,不是一個具體數值,所以需要用索引來做均分間隔。
plt.yticks(classes_index, classes, rotation=0, fontsize=12, FontProperties=font)


# 設置x和y軸以及標題欄的名字
plt.xlabel('學生人數', FontProperties=font, Fontsize=15)
plt.ylabel('班級', FontProperties=font, Fontsize=15)
plt.title('班級----學生人數', FontProperties=font, Fontsize=19)
plt.show()

  

 

 

  重在理解!!!

 

高斯分布,又稱為正態分布。秘籍的直方圖可以繪制出高斯分布圖

 

# _*_ coding: gbk _*_
# @Author: Wonder
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties

font = FontProperties(fname='simhei.ttf')
plt.style.use('ggplot')
num1, num2, sigama = 20, 50, 10
# 構造符合均值為20的正態分布,以及均值為50的正態分布。
x1 = num1 + sigama * np.random.randn(10000)  # 10000為構造隨機數的個數
x2 = num2 + sigama * np.random.randn(10000)

fig = plt.figure()  # 初始化畫板
ax1 = fig.add_subplot(1, 2, 1)
ax1.hist(x1, bins=50, color='yellow')  # bins=50表示分成50份,即會有50個直方圖組成正態分布大圖
ax2 = fig.add_subplot(122)

ax2.hist(x2, bins=50, color='green')

fig.suptitle('兩個圖在一起', fontproperties=font, fontweight='bold',
             fontsize=15)  # fontweight為字體粗細,bold為粗體,fontproperties字體屬性
ax1.set_title('均值為20的正態分布圖', fontproperties=font)
ax2.set_title('均值為50的正態分布圖', fontproperties=font)
plt.show()

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM