基于指定CSV文件的Python柱状图生成技术问询
我帮你把需求相关的内容整理成清晰的Markdown格式,还补全了生成柱状图的完整实现代码,你可以直接参考:
蒸发指标统计数据可视化实现
原始CSV统计数据
这里是你提供的统计数据,用表格展示更直观:
| Statistic | Evap_a_lm | Evap_am | Evap_lm | Evap_od |
|---|---|---|---|---|
| STD_ctessel: | 0.553843 | 0.572184 | 0.546684 | 0.568511 |
| STD_htessel: | 0.761471 | 0.938552 | 0.747172 | 0.919918 |
| Mean_Bias_ctessel: | -0.290104 | -0.248983 | -0.310019 | -0.267554 |
| Mean_Bias_htessel: | -0.214769 | -0.0868161 | -0.233181 | -0.103245 |
你编写的部分代码片段
import os,sys,math,time import csv fr... # 你未完成的后续代码部分
完整的柱状图实现代码
我帮你补全了代码,用matplotlib实现遍历行名称和索引生成分组柱状图的功能,替换CSV路径就能直接运行:
import os, sys, math, time import csv import matplotlib.pyplot as plt import numpy as np # 替换为你的CSV文件实际路径 csv_path = "your_statistics.csv" # 读取CSV数据 stat_labels = [] metric_values = [] with open(csv_path, mode='r') as csv_file: csv_reader = csv.DictReader(csv_file) metrics = csv_reader.fieldnames[1:] # 获取四个Evap指标名称 for row in csv_reader: stat_labels.append(row['Statistic']) # 提取当前行的数值并转换为float values = [float(row[metric]) for metric in metrics] metric_values.append(values) # 转换为numpy数组方便处理 metric_values = np.array(metric_values) num_stats = len(stat_labels) num_metrics = len(metrics) # 设置柱状图参数 bar_width = 0.2 x_coords = np.arange(num_stats) # 创建画布和轴对象 fig, ax = plt.subplots(figsize=(10, 7)) # 遍历每个指标,绘制对应柱状图 for idx, metric in enumerate(metrics): ax.bar(x_coords + idx * bar_width, metric_values[:, idx], width=bar_width, label=metric) # 设置图表样式 ax.set_xlabel('统计类型', fontsize=12) ax.set_ylabel('数值', fontsize=12) ax.set_title('蒸发指标统计对比柱状图', fontsize=14, pad=20) ax.set_xticks(x_coords + bar_width * (num_metrics - 1) / 2) ax.set_xticklabels(stat_labels, rotation=45, ha='right') ax.legend(title='蒸发指标', bbox_to_anchor=(1.05, 1), loc='upper left') # 调整布局,避免标签被截断 plt.tight_layout() plt.show()
这段代码会自动读取你的CSV数据,把每个统计类型(比如STD_ctessel:)作为x轴标签,每个标签下对应四个Evap指标的柱状条,方便你直观对比不同指标的统计差异。
内容的提问来源于stack exchange,提问作者steve
相关产品推荐
相关产品推荐

