
代码绘制成果展示








代码解释


第一部分

# =========================================================================================# ====================================== 1. 环境设置 =======================================# =========================================================================================import numpy as npimport matplotlib.pyplot as pltfrom matplotlib import rcParams

第二部分

# =========================================================================================# ======================================2.颜色库=======================================# =========================================================================================COLOR_SCHEMES = {1: ['#0055D4', '#00C4FF', '#A3D8FF', '#E6E6E6', '#FFB78C', '#FF7F50', '#D62728'],}color_scheme_id = 60 #要使用的配色方案colors = COLOR_SCHEMES[color_scheme_id] #提取配色方案

第三部分

# =========================================================================================# ======================================3.绘图函数============================================# =========================================================================================def plot_formatted_3d_bars(data, error_data, x_labels, y_labels, colors):num_y, num_x = data.shape # 获取数据的行数和列数X, Y = np.meshgrid(np.arange(num_x), np.arange(num_y)) #生成X和Y的二维坐标网格矩阵color_list = [] #于存储每个柱体对应的颜色#遍历数据的每一行,yfor i in range(num_y):color_list.extend([colors[i]] * num_x) #将该分类对应的颜色复制并加到颜色列表中

第四部分

# 创建画布fig = plt.figure(figsize=(14, 8), dpi=150)#绘图ax.bar3d(X, #xY, #yZ, #zdx, #宽度dy, #宽度dz, #高度color=color_list, #颜色alpha=0.9, #透明度shade=True) #阴影渲染

第五部分

#遍历数据矩阵for i in range(num_y):for j in range(num_x):x_pos = j + dx_val / 2 #当前柱体顶部中心点的x坐标y_pos = i + dy_val / 2 #y坐标z_pos = data[i, j] #高度zerr = error_data[i, j] #获取对应的误差数值#柱体上方文本ax.text(x_pos, #xy_pos, #yz_pos + err + 1.5, #zstr(int(z_pos)), #文本color='black', #颜色ha='center', #水平居中对齐va='bottom', #垂直底部对齐fontweight='bold', #加粗fontsize=10, #大小zorder=10) #层

第六部分

#设置x轴的刻度位置ax.set_xticks(np.arange(num_x) + dx_val / 2)#设置x轴标注ax.set_xticklabels(x_labels, #文本rotation=45, #旋转ha='right', #水平va='center', #垂直fontsize=12) #大小#设置Z轴标题ax.set_zlabel('Species', #文本fontsize=16, #大小fontweight='bold', #加粗labelpad=15) #距离坐标轴距离

第七部分

#生成图例所需的颜色块和名称映射列表legend_patches = [mpatches.Patch(color=colors[i], label=y_labels[i]) for i in range(num_y)]#添加图例ax.legend(handles=legend_patches, #句柄loc='upper right', #位置bbox_to_anchor=(0.9, 0.8), #精确位置frameon=False, #移除边框线fontsize=12) #图例文字大小#添加子图编号ax.text2D(0.02,0.75,"(a)",transform=ax.transAxes,fontsize=20,fontweight='bold')plt.subplots_adjust(left=0.05, right=0.85, bottom=0.15, top=0.95) #调整边距

第八部分

# =========================================================================================# ======================================4.执行部分===========================================# =========================================================================================if __name__ == '__main__':file_path = r"data.xlsx" #读取原始数据df_data = pd.read_excel(file_path) #柱子数据#绘图plot_formatted_3d_bars(data, error_data, x_labels, y_labels, colors)

如何应用到你自己的数据

1.设置配色方案:
color_scheme_id = 60 #要使用的配色方案2.设置绘图结果的保存地址:
plt.savefig(fr'3d_bar_chart{color_scheme_id}.png', dpi=300, bbox_inches='tight')3.设置原始数据的路径:
file_path = r"data.xlsx" #读取原始数据
推荐


获取方式
