網站首頁 編程語言 正文
1、Matplotlib 簡介
數據可視化有助于更有效地講述有關數據的故事并使其易于呈現。有時很難用靜態圖表來解釋數據的變化,為此,我們將討論matplotlib提供的名為“Animation”的動畫庫之一。以下是要涵蓋的主題。
最流行的Python二維繪圖庫是Matplolib。大多數人從Matplotlib開始他們的探索性數據分析之旅。它可以輕松創建繪圖、直方圖、條形圖、散點圖等。與Pandas和Seaborn一樣,它可以創建更復雜的視覺效果。
但是也有一些缺陷:
Matplotlib的命令式 API,通常過于冗長。
有時糟糕的風格默認值。
對網絡和交互式圖表的支持不佳。
對于大型和復雜的數據通常很慢。
2、繪制動畫正弦和余弦波
參考代碼如下
import matplotlib.animation as anime
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
fig = plt.figure()
l, = plt.plot([], [], 'k-')
l2, = plt.plot([], [], 'm--')
p1, = plt.plot([], [], 'ko')
p2, = plt.plot([], [], 'mo')
plt.xlabel('xlabel')
plt.ylabel('ylabel')
plt.title('title')
plt.xlim(-5, 5)
plt.ylim(-5, 5)
def func(x):
return np.sin(x) * 3
def func2(x):
return np.cos(x) * 3
metadata = dict(title="Movie", artist="sourabh")
writer = anime.PillowWriter(fps=15, metadata=metadata)
xlist = []
ylist = []
ylist2 = []
xlist2 = []
with writer.saving(fig, "sin+cosinewave.gif", 100):
for xval in np.linspace(-5, 5, 100):
xlist.append(xval)
ylist.append(func(xval))
l.set_data(xlist, ylist)
l2.set_data(xlist2, ylist2)
p1.set_data(xval, func(xval))
writer.grab_frame()
for xval in np.linspace(-5, 5, 100):
xlist2.append(xval)
ylist2.append(func2(xval))
l.set_data(xlist, ylist)
l2.set_data(xlist2, ylist2)
p2.set_data(xval, func2(xval))
writer.grab_frame()
動畫效果圖如下。
3、繪制曲面圖
參考代碼如下,這段代碼會運行一段時間。
import matplotlib
from matplotlib import cm
import matplotlib.animation as anime
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
np.random.seed(29680801)
fig, ax = plt.subplots(subplot_kw=dict(projection='3d'))
plt.xlim(-5, 5)
plt.ylim(-5, 5)
metadata = dict(title="Movie", artist="sourabh")
writer = anime.PillowWriter(fps=15, metadata=metadata)
def func(x, y, r, t):
return np.cos(r / 2 + t) * np.exp(-np.square(r) / 50)
xdata = np.linspace(-10, 10, 1000)
ydata = np.linspace(-10, 10, 1000)
x_list, y_list = np.meshgrid(xdata, ydata)
r_list = np.sqrt(np.square(x_list) + np.square(y_list))
with writer.saving(fig, "exp3d.gif", 100):
for t in np.linspace(0, 20, 160):
z = func(x_list, y_list, r_list, t)
ax.set_zlim(-1, 1)
ax.plot_surface(x_list, y_list, z, cmap=cm.viridis)
writer.grab_frame()
plt.cla()
動畫效果如下?
?4、繪制回歸圖
參考代碼如下
import matplotlib
from matplotlib import cm
import matplotlib.animation as anime
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
np.random.seed(23680545)
metadata = dict(title="Movie", artist="sourabh")
writer = anime.PillowWriter(fps=15, metadata=metadata)
fig = plt.figure()
plt.xlim(-8, 8)
plt.ylim(-8, 8)
def func(x):
return x * 1.2 + 0.1 + np.random.normal(0, 2, x.shape)
x = np.random.uniform(-7, 7, 10)
x = np.sort(x)
y = func(x)
coeff = np.polyfit(x, y, 1)
print(coeff)
xline = np.linspace(-6, 6, 40)
yline = np.polyval(coeff, xline)
lPnt, = plt.plot(x, y, 'o')
l, = plt.plot(xline, yline, 'k-', linewidth=3)
plt.show()
fig = plt.figure()
plt.xlim(-10, 10)
plt.ylim(-10, 10)
lPnt, = plt.plot([], [], 'o')
l, = plt.plot([], [], 'k-', linewidth=3)
x_List = []
y_List = []
x_pnt = []
y_pnt = []
with writer.saving(fig, "fitPlot.gif", 100):
for xval, yval in zip(x, y):
x_pnt.append(xval)
y_pnt.append(yval)
lPnt.set_data(x_pnt, y_pnt)
l.set_data(x_List, y_List)
writer.grab_frame()
writer.grab_frame()
for x_val, y_val in zip(xline, xline):
x_List.append(x_val)
y_List.append(y_val)
lPnt.set_data(x_pnt, y_pnt)
l.set_data(x_List, y_List)
writer.grab_frame()
for i in range(10):
writer.grab_frame()
效果圖如下
原文鏈接:https://blog.csdn.net/bashendixie5/article/details/124234501
相關推薦
- 2022-09-06 jquery點擊實現升序降序圖標切換_jquery
- 2023-02-02 C語言求質數的幾種簡單易懂方式_C 語言
- 2022-11-21 Nginx解決history模式下頁面刷新404問題示例_nginx
- 2022-08-12 Python打包成exe文件的詳細操作指南_python
- 2022-03-10 搭建Redis服務器步驟詳細介紹_Redis
- 2022-03-31 python常用內置模塊你了解嗎_python
- 2022-08-19 mv命令linux
- 2023-02-12 PyCharm軟件無法安裝lxml庫的問題及解決_python
- 最近更新
-
- 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同步修改后的遠程分支