Matplotlib 绘制动态数据

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可以让数据科学家更好地理解数据和分析数据。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程