Фильтр

Brooksfield

Brooksfield
# 使用Python实现简单的数据可视化下面是一个使用Python的matplotlib库创建简单数据可视化的示例。这个程序会生成一个包含折线图、柱状图和散点图的综合图表。```pythonimport matplotlib.pyplot as pltimport numpy as np# 设置中文字体支持plt.rcParams['font.sans-serif'] = ['SimHei', 'Microsoft YaHei', 'DejaVu Sans']plt.rcParams['axes.unicode_minus'] = False# 创建示例数据np.random.seed(42) # 设置随机种子以确保结果可重复x = np.arange(1, 11)y_line = x * 2 + np.random.randn(10) * 2 # 线性数据加噪声y_bar = np.random.randint(5, 20, 10) # 柱状图数据x_scatter = np.random.randn(30) * 3 + 10 # 散点图x数据y_scatter = x_scatter * 0.8 + np.random.randn(30) * 2 # 散点图y数据# 创建图形和子图fig, axes = plt.subplots(2, 2, figsize=(12, 10))fig.suptitle('数据可视化示例', fontsize=16, fontweight='bold')# 1. 折线图axes[0, 0].plot(x, y_line, marker='o', color='royalblue', linewidth=2, markersize=8)axes[0, 0].set_title('折线图示例', fontsize=12)axes[0, 0].set_xlabel('X轴')axes[0, 0].set_ylabel('Y轴')axes[0, 0].grid(True, alpha=0.3)axes[0, 0].fill_between(x, y_line.min(), y_line, alpha=0.2, color='royalblue')# 2. 柱状图colors = plt.cm.viridis(np.linspace(0, 1, len(y_bar)))bars = axes[0, 1].bar(x, y_bar, color=colors, edgecolor='black', linewidth=1)axes[0, 1].set_title('柱状图示例', fontsize=12)axes[0, 1].set_xlabel('类别')axes[0, 1].set_ylabel('数值')axes[0, 1].grid(True, alpha=0.3, axis='y')# 在柱状图上添加数值标签for bar in bars: height = bar.get_height() axes[0, 1].text(bar.get_x() + bar.get_width()/2., height + 0.3, f'{int(height)}', ha='center', va='bottom', fontsize=9)# 3. 散点图scatter = axes[1, 0].scatter(x_scatter, y_scatter, c=np.random.rand(30), # 颜色根据随机值变化 s=np.random.randint(20, 100, 30), # 点的大小随机 alpha=0.7, cmap='plasma', edgecolors='black', linewidth=0.5)axes[1, 0].set_title('散点图示例', fontsize=12)axes[1, 0].set_xlabel('X轴')axes[1, 0].set_ylabel('Y轴')axes[1, 0].grid(True, alpha=0.3)# 添加颜色条cbar = plt.colorbar(scatter, ax=axes[1, 0])cbar.set_label('颜色值')# 4. 组合图表(折线+柱状)axes[1, 1].plot(x, y_line, marker='s', color='darkorange', linewidth=2, label='折线')axes[1, 1].bar(x, y_bar, alpha=0.5, color='seagreen', label='柱状', width=0.4)axes[1, 1].set_title('组合图表示例', fontsize=12)axes[1, 1].set_xlabel('X轴')axes[1, 1].set_ylabel('Y轴')axes[1, 1].grid(True, alpha=0.3)axes[1, 1].legend()# 调整布局plt.tight_layout(rect=[0, 0, 1, 0.96]) # 为总标题留出空间# 保存图表plt.savefig('data_visualization.png', dpi=150, bbox_inches='tight')# 显示图表plt.show()# 打印数据统计信息print("数据统计信息:")print(f"折线图数据 - 平均值: {y_line.mean():.2f}, 标准差: {y_line.std():.2f}")print(f"柱状图数据 - 总和: {y_bar.sum()}, 最大值: {y_bar.max()}, 最小值: {y_bar.min()}")print(f"散点图数据 - 相关系数: {np.corrcoef(x_scatter, y_scatter)[0,1]:.3f}")```## 代码说明1. **数据生成**: - 使用numpy生成示例数据 - 折线图:线性关系加随机噪声 - 柱状图:随机整数数据 - 散点图:带有相关性的随机数据2. **可视化组件**: - 折线图:显示趋势,带有填充区域 - 柱状图:分类比较,使用渐变色 - 散点图:显示两个变量之间的关系,点的大小和颜色表示额外维度 - 组合图表:展示如何在同一图表中组合多种图形3. **美化功能**: - 网格线增强可读性 - 数据标签 - 颜色条 - 图例 - 中文字体支持4. **输出**: - 显示图表窗口 - 保存为PNG图片 - 打印数据统计信息## 运行要求运行此代码需要安装以下Python库:```bashpip install matplotlib numpy```这个示例展示了如何使用matplotlib创建基本但美观的数据可视化,适合用于数据分析、报告或演示。
Загрузка комментариев...