我想做一个heatmap/colormap与某些值在派类箱,如下图所示。 每个细胞都有自己的颜色。问题是极坐标。
我已经看到了一些线程如下: python中的极坐标热图,但这里的例子是连续函数,而我希望它是离散的。 我找不到类似的东西来创建极坐标空间。 在matplotlib或seaborn中有没有我错过的简单解决方案? 谢谢,祝你有美好的一天 问题来源StackOverflow 地址:/questions/59380772/discrete-heatmap-or-colorbar-in-polar-coordinates
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在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
参数)以及其他可视化选项。希望这能帮助您实现所需的效果!