文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

结合 NumPy 和 Matplotlib 进行数据可视化的十种创意

2024-11-28 16:27

关注

1. 基础数据类型可视化

首先,让我们从最基础的数据类型开始。NumPy 可以创建各种类型的数组。Matplotlib 可以将这些数组转化为直观的图表。

import numpy as np
import matplotlib.pyplot as plt

# 创建一个简单的数组
x = np.linspace(0, 10, 100)
y = np.sin(x)

# 使用 Matplotlib 绘制图形
plt.plot(x, y)
plt.title('Sine Wave')
plt.xlabel('Time')
plt.ylabel('Amplitude')
plt.show()

这段代码生成了一个简单的正弦波形图。np.linspace 函数用于生成等差数列,np.sin 用于计算正弦值。plt.plot 函数绘制曲线,plt.title, plt.xlabel, plt.ylabel 设置图表和轴标签。

2. 多重数据系列可视化

接下来,让我们尝试同时绘制多个数据系列。这在比较不同数据集时非常有用。

# 创建两个不同的数据系列
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)

# 绘制两个数据系列
plt.plot(x, y1, label='sin(x)')
plt.plot(x, y2, label='cos(x)')
plt.legend()  # 显示图例
plt.show()

这里,我们增加了 plt.legend() 函数,它会根据 label 参数自动添加图例。这样就可以区分不同的数据系列了。

3. 散点图可视化

散点图非常适合显示离散数据之间的关系。例如,我们可以用它来表示两个变量之间的相关性。

# 创建随机数据
x = np.random.randn(100)
y = np.random.randn(100)

# 绘制散点图
plt.scatter(x, y)
plt.title('Scatter Plot')
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
plt.show()

np.random.randn 生成标准正态分布的随机数。plt.scatter 用于绘制散点图。

4. 直方图可视化

直方图可以用来展示数据的分布情况。这对于分析数据频率非常有帮助。

# 创建随机数据
data = np.random.randn(1000)

# 绘制直方图
plt.hist(data, bins=30, alpha=0.7)
plt.title('Histogram')
plt.xlabel('Value')
plt.ylabel('Frequency')
plt.show()

plt.hist 用于绘制直方图,bins 参数指定直方图的柱子数量,alpha 参数设置透明度。

5. 等高线图可视化

等高线图适用于展示二维函数的等值线。这在地理信息系统中很常见。

# 创建网格数据
x = np.linspace(-5, 5, 100)
y = np.linspace(-5, 5, 100)
X, Y = np.meshgrid(x, y)
Z = np.sqrt(X**2 + Y**2)

# 绘制等高线图
plt.contourf(X, Y, Z, 20, cmap='viridis')
plt.colorbar()
plt.title('Contour Plot')
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
plt.show()

np.meshgrid 用于创建网格数据,plt.contourf 绘制等高线图,cmap 参数设置颜色映射。

6. 热力图可视化

热力图常用于展示二维数据矩阵,非常适合展示数据的相关性或密度。

# 创建一个随机的二维数据矩阵
data = np.random.rand(10, 10)

# 绘制热力图
plt.imshow(data, cmap='hot', interpolation='nearest')
plt.colorbar()
plt.title('Heatmap')
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
plt.show()

plt.imshow 用于绘制热力图,cmap 参数设置颜色映射,interpolation 参数设置插值方法。

7. 饼图可视化

饼图用于展示各个部分占总体的比例,非常适合展示分类数据。

# 创建分类数据
labels = ['A', 'B', 'C', 'D']
sizes = [15, 30, 45, 10]

# 绘制饼图
plt.pie(sizes, labels=labels, autopct='%1.1f%%', startangle=140)
plt.title('Pie Chart')
plt.show()

plt.pie 用于绘制饼图,autopct 参数用于显示百分比,startangle 参数设置起始角度。

8. 箱线图可视化

箱线图用于展示数据的分布情况,特别是四分位数和异常值。

# 创建随机数据
data = np.random.randn(100)

# 绘制箱线图
plt.boxplot(data)
plt.title('Box Plot')
plt.ylabel('Value')
plt.show()

plt.boxplot 用于绘制箱线图,它可以清晰地展示数据的中位数、四分位数和异常值。

9. 三维可视化

Matplotlib 还支持三维可视化,这对于展示多维数据非常有用。

from mpl_toolkits.mplot3d import Axes3D

# 创建三维数据
x = np.linspace(-5, 5, 100)
y = np.linspace(-5, 5, 100)
X, Y = np.meshgrid(x, y)
Z = np.sin(np.sqrt(X**2 + Y**2))

# 创建三维图形
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_surface(X, Y, Z, cmap='viridis')

ax.set_title('3D Surface Plot')
ax.set_xlabel('X-axis')
ax.set_ylabel('Y-axis')
ax.set_zlabel('Z-axis')
plt.show()

mpl_toolkits.mplot3d 模块提供了三维绘图功能,plot_surface 用于绘制三维表面图。

10. 动态可视化

动态可视化可以展示数据随时间的变化,非常适合展示时间序列数据。

import matplotlib.animation as animation

# 创建数据
x = np.linspace(0, 10, 100)
y = np.sin(x)

# 创建图形对象
fig, ax = plt.subplots()
line, = ax.plot(x, y)

# 更新函数
def update(frame):
    line.set_ydata(np.sin(x + frame / 10.0))
    return line,

# 创建动画
ani = animation.FuncAnimation(fig, update, frames=100, interval=50)
plt.title('Dynamic Sine Wave')
plt.xlabel('Time')
plt.ylabel('Amplitude')
plt.show()

matplotlib.animation 模块提供了动画功能,FuncAnimation 用于创建动画,update 函数定义每一帧的更新逻辑。

实战案例:股票价格走势分析

假设我们有一个包含某股票每日收盘价的数据集,我们想要分析其价格走势并预测未来趋势。

import pandas as pd
import yfinance as yf

# 下载股票数据
ticker = 'AAPL'
data = yf.download(ticker, start='2022-01-01', end='2023-01-01')

# 绘制股票价格走势图
plt.figure(figsize=(12, 6))
plt.plot(data['Close'], label='Close Price')
plt.title(f'{ticker} Stock Price')
plt.xlabel('Date')
plt.ylabel('Price (USD)')
plt.legend()
plt.show()

# 计算移动平均线
data['MA50'] = data['Close'].rolling(window=50).mean()
data['MA200'] = data['Close'].rolling(window=200).mean()

# 绘制移动平均线
plt.figure(figsize=(12, 6))
plt.plot(data['Close'], label='Close Price')
plt.plot(data['MA50'], label='50-Day MA')
plt.plot(data['MA200'], label='200-Day MA')
plt.title(f'{ticker} Stock Price with Moving Averages')
plt.xlabel('Date')
plt.ylabel('Price (USD)')
plt.legend()
plt.show()

在这个案例中,我们使用 yfinance 库下载了苹果公司(AAPL)的股票数据,并绘制了收盘价走势图。接着,我们计算了 50 日和 200 日的移动平均线,并将其与收盘价一起绘制,以便观察价格趋势。

通过上述示例,我们已经看到了 NumPy 和 Matplotlib 在数据可视化中的强大能力。无论是简单的正弦波形还是复杂的等高线图,都能轻松实现。希望这些基础示例能够帮助大家更好地理解和应用这两个库。下一期我们继续探索更多有趣的应用!

来源:小白PythonAI编程内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯