本文目录导读:

我来帮你写一个简单的数据可视化脚本,这里用Python的matplotlib和pandas库,从零开始创建基础图表。
安装所需库
pip install matplotlib pandas numpy
基础折线图
import matplotlib.pyplot as plt
import pandas as pd
# 准备数据
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]
# 创建图表
plt.figure(figsize=(10, 6))
plt.plot(x, y, marker='o', linestyle='-', color='blue', linewidth=2)
# 添加标签和标题
plt.xlabel('X轴标签')
plt.ylabel('Y轴标签')'简单折线图示例')
plt.grid(True, alpha=0.3)
# 显示图表
plt.show()
多种图表类型
import matplotlib.pyplot as plt
import numpy as np
# 生成示例数据
categories = ['A', 'B', 'C', 'D', 'E']
values = [23, 45, 56, 78, 33]
# 1. 柱状图
plt.figure(figsize=(12, 8))
plt.subplot(2, 2, 1)
plt.bar(categories, values, color='skyblue', edgecolor='black')'柱状图')
plt.xlabel('分类')
plt.ylabel('数值')
# 2. 饼图
plt.subplot(2, 2, 2)
colors = ['gold', 'lightcoral', 'lightskyblue', 'lightgreen', 'orange']
plt.pie(values, labels=categories, colors=colors, autopct='%1.1f%%')'饼图')
# 3. 散点图
plt.subplot(2, 2, 3)
x = np.random.randn(50)
y = np.random.randn(50)
plt.scatter(x, y, c='red', alpha=0.5)'散点图')
plt.xlabel('X')
plt.ylabel('Y')
# 4. 直方图
plt.subplot(2, 2, 4)
data = np.random.randn(1000)
plt.hist(data, bins=30, color='green', alpha=0.7)'直方图')
plt.xlabel('数值')
plt.ylabel('频数')
plt.tight_layout()
plt.show()
从CSV数据创建可视化
import pandas as pd
import matplotlib.pyplot as plt
# 创建示例数据
data = {
'日期': ['2023-01', '2023-02', '2023-03', '2023-04', '2023-05'],
'销售额': [100, 150, 130, 200, 180],
'利润': [30, 45, 40, 60, 55]
}
df = pd.DataFrame(data)
# 折线图
plt.figure(figsize=(12, 5))
plt.subplot(1, 2, 1)
plt.plot(df['日期'], df['销售额'], marker='s', label='销售额')
plt.plot(df['日期'], df['利润'], marker='o', label='利润')'月度销售数据')
plt.xlabel('月份')
plt.ylabel('金额')
plt.legend()
plt.xticks(rotation=45)
# 复合柱状图
plt.subplot(1, 2, 2)
x = range(len(df))
width = 0.35
plt.bar([i - width/2 for i in x], df['销售额'], width, label='销售额', color='blue')
plt.bar([i + width/2 for i in x], df['利润'], width, label='利润', color='green')'销售对比')
plt.xlabel('月份')
plt.ylabel('金额')
plt.xticks(x, df['日期'], rotation=45)
plt.legend()
plt.tight_layout()
plt.show()
快速可视化函数
import matplotlib.pyplot as plt
import numpy as np
def quick_plot(data, plot_type='line', title='数据可视化'):
"""
快速创建可视化图表
参数:
- data: 数据(列表或numpy数组)
- plot_type: 图表类型('line', 'bar', 'hist', 'scatter')
- title: 图表标题
"""
plt.figure(figsize=(8, 5))
if plot_type == 'line':
plt.plot(data, marker='o', linestyle='-')
elif plot_type == 'bar':
plt.bar(range(len(data)), data)
elif plot_type == 'hist':
plt.hist(data, bins=20, alpha=0.7)
elif plot_type == 'scatter':
x = np.arange(len(data))
plt.scatter(x, data, alpha=0.7)
plt.title(title)
plt.grid(True, alpha=0.3)
plt.show()
# 使用示例
data = np.random.randn(100)
quick_plot(data, 'hist', '随机数据分布')
保存图表为图片
# 在创建图表后
plt.savefig('my_chart.png', dpi=300, bbox_inches='tight')
plt.savefig('my_chart.pdf', format='pdf') # 矢量格式
完整示例:股票数据可视化
import matplotlib.pyplot as plt
import numpy as np
# 模拟股票数据
dates = ['2023-01', '2023-02', '2023-03', '2023-04', '2023-05', '2023-06']
prices = [100, 105, 98, 110, 115, 108]
volume = [1000, 1200, 800, 1500, 1300, 1100]
# 创建子图
fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(10, 8))
# 价格走势
ax1.plot(dates, prices, color='blue', marker='o', linewidth=2)
ax1.set_title('股票价格走势')
ax1.set_ylabel('价格')
ax1.grid(True, alpha=0.3)
# 成交量
ax2.bar(dates, volume, color='green', alpha=0.6)
ax2.set_title('成交量')
ax2.set_ylabel('成交量')
ax2.grid(True, alpha=0.3)
plt.tight_layout()
plt.show()
使用建议
- 从简单开始:先用简单数据测试,再应用到实际数据
- 图表类型选择:
- 趋势展示:折线图
- 比较数据:柱状图
- 占比分析:饼图
- 分布分析:直方图
- 美化图表、标签、图例、网格
- 保存图片:使用
plt.savefig()保存为png或pdf
这个脚本框架可以快速上手,根据你的具体数据格式调整即可,需要更复杂的图表(如交互式图表)可以考虑使用Plotly或Bokeh库。