You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Python风玫瑰图设置统一的颜色图例与刻度

统一多张风玫瑰图的刻度与颜色图例

要让多张风玫瑰图的刻度、颜色图例完全一致,核心是强制所有图表使用相同的风速分组区间、颜色映射和刻度范围,以下是具体实现方法:

关键修改点

  • 手动定义统一的风速分组区间(bins),避免每张图自动生成不同区间
  • 指定固定的颜色映射(cmap)
  • 统一设置纵轴(百分比)的刻度范围

修改后的完整代码

from windrose import WindroseAxes
from matplotlib import pyplot as plt
import matplotlib.cm as cm
import pandas as pd

# 读取数据
MON = pd.read_csv(r'data.csv')
ws = MON["Ws"].values
wd = MON["Wd"].values

# 定义全局统一的风速分组区间(根据你的数据范围调整)
# 示例按0-2, 2-4,...,8-10 m/s分组,确保所有图用同一套区间
unified_bins = [0, 2, 4, 6, 8, 10]
# 统一颜色映射
unified_cmap = cm.viridis

# 绘制第一张图
fig1, ax1 = plt.subplots(subplot_kw={'projection': 'windrose'})
ax1.bar(wd, ws, normed=True, opening=0.8, edgecolor='white',
        bins=unified_bins, cmap=unified_cmap)
ax1.set_title('plot1')
# 统一百分比刻度范围,示例设为0-30%
ax1.set_ylim(0, 30)
ax1.set_legend(title='风速 (m/s)')

# 绘制第二张图(替换为你的第二组数据即可)
# 示例用同一组数据演示,实际可替换为另一CSV的ws2、wd2
ws2 = ws
wd2 = wd

fig2, ax2 = plt.subplots(subplot_kw={'projection': 'windrose'})
ax2.bar(wd2, ws2, normed=True, opening=0.8, edgecolor='white',
        bins=unified_bins, cmap=unified_cmap)
ax2.set_title('plot2')
ax2.set_ylim(0, 30)
ax2.set_legend(title='风速 (m/s)')

plt.show()

代码解释

  1. unified_bins:手动设置风速分组区间,让所有图表的颜色块对应完全相同的风速范围,从根源解决图例区间不一致的问题。
  2. unified_cmap:指定固定颜色映射表,避免matplotlib自动为不同图表分配不同配色。
  3. set_ylim:统一设置百分比刻度的上下限,保证多张图的纵轴刻度对齐。

原问题图例对比

第一张图:plot1
第二张图:plot2

内容的提问来源于stack exchange,提问作者hari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 23:32:49