开发者社区 问答 正文

在极坐标中离散的热图或色条

我想做一个heatmap/colormap与某些值在派类箱,如下图所示。 每个细胞都有自己的颜色。问题是极坐标。

我已经看到了一些线程如下: python中的极坐标热图,但这里的例子是连续函数,而我希望它是离散的。 我找不到类似的东西来创建极坐标空间。 在matplotlib或seaborn中有没有我错过的简单解决方案? 谢谢,祝你有美好的一天 问题来源StackOverflow 地址:/questions/59380772/discrete-heatmap-or-colorbar-in-polar-coordinates

展开
收起
kun坤 2019-12-28 14:09:58 716 分享 版权
阿里云 AI 助理回答

在Matplotlib中创建离散的极坐标热图确实需要一些额外的步骤,因为大多数内置功能倾向于连续数据。但您可以通过自定义方法来实现这一目标。以下是一个示例代码,展示了如何使用Matplotlib和NumPy创建一个离散的极坐标热图:

import numpy as np
import matplotlib.pyplot as plt

# 极坐标网格点数
N_r = 10
N_theta = 20

# 创建极坐标网格
theta = np.linspace(0, 2*np.pi, N_theta, endpoint=False)
r = np.linspace(0.1, 1, N_r)
R, THETA = np.meshgrid(r, theta)

# 假设的数据,您可以根据实际情况替换这些值
data = np.random.randint(0, 5, size=(N_r, N_theta))

# 将极坐标转换为直角坐标
X = R * np.cos(THETA)
Y = R * np.sin(THETA)

# 创建一个新的图形并切换到极坐标
fig, ax = plt.subplots(subplot_kw={'projection': 'polar'})
ax.set_theta_zero_location('N')
ax.set_theta_direction(-1)  # 逆时针方向

# 使用pcolormesh绘制热图,注意这里的x,y是转换后的直角坐标
cax = ax.pcolormesh(X.ravel(), Y.ravel(), data.ravel(), shading='auto', cmap='viridis')

# 添加颜色条
plt.colorbar(cax, ax=ax, orientation='vertical', shrink=0.75)

# 显示图像
plt.show()

这段代码首先生成了一个离散的极坐标网格,并填充了随机数据作为示例。然后,它将这些极坐标数据转换为直角坐标系下的数据,以便使用pcolormesh函数绘制热图。请注意,由于pcolormesh要求输入是直角坐标,所以我们需要对原始极坐标数据进行转换。

请根据您的具体需求调整数据、颜色映射(cmap参数)以及其他可视化选项。希望这能帮助您实现所需的效果!

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答