import numpy as np import openpyxl import os.path import matplotlib.pyplot as plt def draw_cbf_graph(region, data, save_path): bar_x = np.array(['0.5', '1', '1.5', '2', '2.5', 'cCBF']) bar_y = np.array(data) color = ['#4CAF50', '#4CAF50', '#4CAF50', '#4CAF50', '#4CAF50', '#478FC1'] # Plotting the Graph font_color = '#FFFFFF' plt.rcParams['text.color'] = font_color plt.rcParams['axes.labelcolor'] = font_color plt.rcParams['xtick.color'] = font_color plt.rcParams['ytick.color'] = font_color plt.figure(facecolor='#000000') ax = plt.axes() ax.set_facecolor('#000000') ax.spines['left'].set_color(font_color) ax.spines['right'].set_color(font_color) ax.spines['bottom'].set_color(font_color) ax.spines['top'].set_color(font_color) plt.rcParams["font.sans-serif"] = ["SimHei"] # 设置字体 plt.bar(bar_x, bar_y, width=0.5, color=color) for i in range(len(bar_x)): plt.text(i - 0.2, bar_y[i] - 2, f"{bar_y[i]:.2f}") plt.title(f"221例健康人西门子5延迟数据矫正前后{region}CBF对比") plt.xlabel("PLD") plt.ylabel("CBF") plt.savefig(save_path, dpi=200) plt.cla() plt.close('all') def main(): data_types = ['CBF1', 'CBF2', 'CBF3', 'CBF4', 'CBF5', 'corr-CBF'] # 请尝试添加'AnImage_AAL3'图谱,并修复错误 atlas_list = ['AnImage_WholeBrain', 'AnImage_BrainLobes'] output_dir = r'..\Data\cbf-graph' os.makedirs(output_dir, exist_ok=True) input_file = r'..\Data\csv-simple-stat.xlsx' workbook = openpyxl.load_workbook(input_file, data_only=True) for atlas in atlas_list: cbf_mean_dict = {} for data_type in data_types: worksheet = workbook[f'{atlas}_{data_type}'] for column_num in range(2, worksheet.max_column + 1): name = worksheet.cell(row=1, column=column_num).value mean = worksheet.cell(row=worksheet.max_row - 8, column=column_num).value print(atlas, data_type, name, mean) if name not in cbf_mean_dict: cbf_mean_dict[name] = [] cbf_mean_dict[name].append(mean) for region, data in cbf_mean_dict.items(): draw_cbf_graph(region, data, os.path.join(output_dir, f'{region}.png')) main()