網站首頁 編程語言 正文
matplotlib
matplotlib是最流行的python底層繪圖庫,接下來就由小編為大家介紹一些關于matplotlib的一些基本圖形的繪制操作。這些操作可以將你的數據更加直觀的呈現在你的面前。
首先要使用Import導入pyplot庫并設置一個別名plt
from matplotlib import pyplot as plt
1.折線圖
以下實例繪制氣溫曲線。(氣溫是依靠numpy中隨機數產生的,因此要導入numpy)
import numpy as np
import random
a = [np.random.randint(20, 35) for i in range(120)]
x = np.arange(0, 120)
fig = plt.figure(figsize=(20, 8), dpi=80) # 設置圖形大小和圖形分辨率
plt.plot(x, a) #調用plot繪制圖形 將x軸坐標和對應的y軸的點傳入
# 調整x軸的刻度
_x = list(x)
_xtick_labels = ['10點{}分'.format(i) for i in range(60)]
_xtick_labels += ['11點{}分'.format(i) for i in range(60)]
plt.xticks(_x[::3], _xtick_labels[::3], rotation=45) # rotation表示x軸標簽旋轉度數
# 添加描述信息
plt.xlabel('時間')
plt.ylabel('溫度 單位(C)')
plt.title('10點-12點每分鐘的氣溫變化')
plt.show()
運行后發現中文字體無法顯示。
這是因為matplotlib在繪制過程中無法顯示中文,需要自己設置。
plt.rcParams['font.sans-serif'] = ['YouYuan']
plt.rcParams['axes.unicode_minus'] = False
加入這些代碼后,中文就可以正常顯示了
我們還可以加入網格 使圖像y軸對應的值更加清楚
gitd()語法格式
matplotlib.pyplot.grid(b=None, which='major',axis='both)
b,which,axis 都是可選的操作
只要在代碼末行添加以下一行代碼即可
plt.grid()
2.散點圖
(使用scatter方法繪制散點圖)
from numpy as np
import random
a = np.random.randint(6, 25, size=(31,))
a = list(a)
b = np.random.randint(12, 23, size=(31,))
# 設置字體
plt.rcParams['font.sans-serif'] = ['YouYuan']
plt.rcParams['axes.unicode_minus'] = False
x1 = np.arange(1, 32)
x2 = np.arange(40, 71)
# 使用plt.scatter()繪制散點圖
plt.scatter(x1, a, label='三月', s=20, color='orange')
plt.scatter(x2, b, label='四月',s=10, color='red')
# label表示不同顏色點的標簽,s是點的大小,color設置點的顏色
# 設置x軸刻度
_x = list(x1) + list(x2)
_xtick_labels = ['三月{}日'.format(i) for i in x1]
_xtick_labels += ['四月{}日'.format(i-39) for i in x2]
plt.xticks(_x[::3], _xtick_labels[::3], rotation=45)
plt.xlabel('時間')
plt.legend()
plt.ylabel('溫度')
plt.show()
運行后
3.條形圖
(使用bar或者barh方法繪制) (1).豎著的條形圖
a = ['貓', '狗', '蛇', '大象', '兔子', '馬', '驢', '斑馬', '獵豹', '豺狼']
b = [32.4, 23.3, 232, 2423, 232, 2332, 123, 132, 213, 132]
_x = list(range(len(a)))
plt.rcParams['font.sans-serif'] = ['YouYuan']
plt.rcParams['axes.unicode_minus'] = False
# 設置圖形大小
plt.figure(figsize=(20, 8), dpi=80)
# 豎著的條形圖 使用bar函數
# width表示柱形寬距
plt.bar(_x, b, width=0.3)
plt.xticks(_x, a)
plt.xlabel('動物種類')
plt.ylabel('動物數量')
plt.show()
(2).橫著的條形圖
a = ['貓', '狗', '蛇', '大象', '兔子', '馬', '驢', '斑馬', '獵豹', '豺狼']
b = [32.4, 23.3, 232, 2423, 232, 2332, 123, 132, 213, 132]
_x = list(range(len(a)))
plt.rcParams['font.sans-serif'] = ['YouYuan']
plt.rcParams['axes.unicode_minus'] = False
# 設置圖形大小
plt.figure(figsize=(20, 15), dpi=80)
# 橫著的條形圖 使用barh函數 注意柱形寬度要使用height
plt.barh(_x, b, height=0.3, color='orange')
plt.yticks(_x, a)
plt.ylabel('動物種類')
plt.xlabel('動物數量')
# alpha可以調節網格顏色深淺
plt.grid(alpha=0.3)
plt.show()
4.直方圖
(使用hist方法)
在傳入數據之后往往要以以下方式分組
組數:將數據分組 當數據在100個之內 一般分為5-12組
組距: 每個小組端點的距離
組數 = 極差/組距 = (max() - min()) or numpy.plp()// bin_width?
以下案例為電影時長分布直方圖
a = np.random.randint(90, 150, size=(250,))
print(a)
plt.figure(figsize=(20, 10), dpi=100)
bin_width = 3 # 設置組距
num_bins = int((max(a) - min(a)) // bin_width) # 分組
plt.xticks(list(range(min(a), max(a) + bin_width, bin_width)))
plt.hist(a, num_bins) # 傳入需要統計的數據 以及組數
plt.show()
但以上案例是組距相同的情況
實際生活往往有許多組距不相同的情況
這時候往往用條形圖來展現組距不相同的情況
a = [0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 60, 90]
b = [5, 5, 5, 5, 5, 5, 5, 5, 5, 15, 30, 60]
c = [836, 2737, 3723, 3926, 3596, 1438, 3273, 642, 824, 613, 215, 47]
plt.figure(figsize=(20, 10), dpi=100)
plt.bar(range(len(a)), c, width=1)
_x = [i-0.5 for i in range(13)]
_xtick_labels = a + [150] # + [150] 使得條形圖能顯示90,150之間的數據
plt.xticks(_x, _xtick_labels, )
plt.grid(alpha=0.3)
plt.show()
原文鏈接:https://juejin.cn/post/7173114307561914381
相關推薦
- 2022-05-13 C++ DeviceIoControl 獲取硬盤序列號
- 2022-09-01 Python利用appium實現模擬手機滑動操控的操作_python
- 2022-10-18 Python?numpy下幾種fft函數的使用方式_python
- 2023-07-08 后端返回svg文件流前端展示并下載
- 2022-10-17 C++STL教程之vector模板的使用_C 語言
- 2022-11-12 Shell實現字符串處理的方法詳解_linux shell
- 2022-06-18 android自定義滾動上下回彈scollView_Android
- 2022-06-17 Ruby序列化和持久化存儲(Marshal、Pstore)操作方法詳解_Golang
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支