Matplotlib 绘制动态数据
Matplotlib是一个基于Python的2D绘图库,可以轻松的将数据和图形可视化展示。能够绘制直方图,折线图,饼图,散点图等多种形式的图形并具有灵活性和高度的可定制性。
阅读更多:Matplotlib 教程
安装Matplotlib
Matplotlib可以使用pip来安装:
pip install matplotlib
如果需要安装特定版本,可以使用到版本号:
pip install matplotlib==3.3.2
Matplotlib的基本参数
在Matplotlib中,我们可以设置颜色、线型、标记等参数来定制绘图。以下是演示代码:
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 10, 1000) # 定义x轴数据
y = np.sin(x) # 定义y轴数据
plt.plot(x, y, color='b', linestyle='--', linewidth=2, alpha=0.6, marker='o', markersize=6, markeredgecolor='yellow', markeredgewidth=2, label='Sin(x)')
plt.legend() # 添加图例
plt.xlabel('x axis') # 添加x轴标签
plt.ylabel('y axis') # 添加y轴标签
plt.title('This is a sin(x) graph') # 添加标题
plt.show() # 显示图像
在上述代码中,我们设置了以下的参数:
颜色: color=’b’ # 线条颜色为蓝色
线型: linestyle=’–‘ # 线型为虚线
线宽: linewidth=2 # 线宽为2px
透明度: alpha=0.6 # 透明度为0.6
标记: marker=’o’ # 点标记为圆形
标记大小: markersize=6 # 标记大小为6px
标记颜色: markeredgecolor=’yellow’ # 标记边缘颜色为黄色
标记边缘宽度: markeredgewidth=2 # 标记边缘宽度为2px
使用Matplotlib绘制多个子图
除了单一的图形之外,Matplotlib还提供了一个方便的子图接口,允许我们在一个网格中绘制多个子图。我们可以使用subplot()命令来创建一个子图,该命令接受三个整数作为其参数,分别代表行数、列数和子图编号,以下是演示代码:
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 10, 1000) # 定义x轴数据
plt.figure(figsize=(8, 6))
# 绘制第一个子图
plt.subplot(211)
plt.plot(x, np.sin(x), color='red')
plt.title('Sin(x)')
# 绘制第二个子图
plt.subplot(212)
plt.plot(x, np.cos(x), color='blue')
plt.title('Cos(x)')
plt.show() # 显示图像
在上述代码中,我们使用了plt.subplot()函数创建了两个子图,并使用plt.figure()控制整个绘图大小。
Matplotlib绘制3D图形
Matplotlib还提供了3D图形的绘制功能,可以帮助我们更好的展现数据。以下是一个绘制3D散点图的演示代码:
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = Axes3D(fig) # 创建3D坐标轴
## 绘制3D图形
x = np.random.randn(100)
y = np.random.randn(100)
z = np.random.randn(100)
ax.scatter(x, y, z, s=50, c='red', marker='o')
ax.set_xlabel('X Label')
ax.set_ylabel('Y Label')
ax.set_zlabel('Z Label')
plt.show()
在上述代码中,我们使用了Axes3D类来创建一个3D坐标轴,使用scatter()函数绘制了一个3D散点图,并使用set_xlabel()、set_ylabel()和set_zlabel()函数设置了3个坐标轴的标签。
Matplotlib绘制条形图
Matplotlib同时也支持绘制多种类型的图形,其中包括了条形图。
以下是一个绘制水果销售条形图的演示代码:
import numpy as np
import matplotlib.pyplot as plt
fruits = ['Apples', 'Oranges', 'Bananas', 'Berries']
sales = [20, 35, 30, 25]
colors = ['red', 'orange', 'yellow', 'purple']
plt.bar(fruits, sales, color=colors)
plt.title('Fruit Sales')
plt.xlabel('Fruit')
plt.ylabel('Sales')
plt.show()
在上述代码中,我们使用bar()函数绘制了一个条形图,颜色和水果是对应的,使用title()、xlabel()、ylabel()等函数添加了图形的标题和坐标轴标签。
Matplotlib绘制动态数据
Matplotlib还支持绘制动态的数据,比如实时监控数据等。
以下是一个绘制动态数据的演示代码:
import random
import matplotlib.pyplot as plt
plt.ion() # 开启交互模式
y_list = []
for i in range(50):
y_list.append(random.randint(1, 100)) # 生成随机数
plt.clf() # 清空当前图形
plt.plot(y_list)
plt.draw() # 绘制新图形
plt.pause(0.1) # 暂停一定的时间
在上述代码中,我们使用ion()函数开启交互模式,然后使用plot()函数绘制折线图,并循环生成数据并不断更新图形。
绘制交互式数据可视化
在数据可视化领域,交互式数据可视化可以帮助用户更好地理解数据,并进行复杂的数据分析。在Matplotlib中,可以使用Dash Dot Dot库来实现交互式数据可视化。
以下是一个绘制交互式数据可视化的演示代码:
import dash
import dash_core_components as dcc
import dash_html_components as html
import plotly.graph_objs as go
import pandas as pd
import numpy as np
# 生成随机数
np.random.seed(0)
x = np.random.randint(1, 101, 100)
y = np.random.randint(1, 101, 100)
app = dash.Dash()
app.layout = html.Div([
html.H1('Random Distribution Visualization'),
dcc.Graph(id='scatterplot',
figure={
'data': [
go.Scatter(
x=x,
y=y,
mode='markers'
)
],
'layout': go.Layout(
title='Random Distribution',
xaxis={'title': 'X Axis'},
yaxis={'title': 'Y Axis'}
)
})
])
if __name__ == '__main__':
app.run_server(debug=True)
在上述代码中,我们使用Dash Dot Dot库创建了一个Dash应用,使用Scatter函数绘制了散点图,并使用Layout函数设置了图形的标题和坐标轴的标签。
总结
Matplotlib是Python中最常用的数据可视化库之一,其提供的功能丰富多样,可以满足大量的绘图需求。除了基本的绘图操作,Matplotlib还支持绘制多种类型的图形,包括3D图形、条形图等,并支持绘制动态数据和交互式数据可视化。学会使用Matplotlib可以让数据科学家更好地理解数据和分析数据。