如何在matplotlib中创建径向热图?

5

我可以使用ggplot2得到如下的径向热力图enter image description here

我该如何使用matplotlib得到相同的效果呢?

这里展示的是一个样本数据和可视化效果,而非用于创建ggplot2径向热力图的数据。

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

df = pd.DataFrame(np.random.uniform(-1, 1, (24,12)))
df.columns = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
sns.heatmap(df, cmap = "coolwarm", cbar = False)

编辑:我的数据维度与我提供的示例数据框相同。我想绘制相同的图表。

2个回答

8
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np

fig = plt.figure()
ax = Axes3D(fig)

n = 12
m = 24
rad = np.linspace(0, 10, m)
a = np.linspace(0, 2 * np.pi, n)
r, th = np.meshgrid(rad, a)

z = np.random.uniform(-1, 1, (n,m))
plt.subplot(projection="polar")

plt.pcolormesh(th, r, z, cmap = 'inferno')

plt.plot(a, r, ls='none', color = 'k') 
plt.grid()
plt.colorbar()
plt.savefig('a.png')
plt.show()

enter image description here


您好。很乐意帮助。在Python中,尺寸非常重要。 - Ashlou
只是一些小事情,剩下的部分——标签、坐标轴刻度等——和其他所有的 matplotlib 绘图一样,对吗? - scientific_explorer
可以随意提问。 - Ashlou

2
我会使用极坐标。
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D


fig = plt.figure()
ax = Axes3D(fig)

n= 12
rad = np.linspace(0, 10, n)
a = np.linspace(0, 2 * np.pi, n)
r, th = np.meshgrid(rad, a)

z = np.random.rand(n,n)
plt.subplot(projection="polar")

plt.pcolormesh(th, r, z)

plt.plot(a, r, color='k', ls='none',cmap = 'binary') 
plt.grid()
plt.colorbar()
plt.show()

enter image description here


当然。首先,您需要三个变量。径向(rad),角度(a)和热(z)值。我为rad和a创建了100个变量。然后我使用np.mesh将它们放入网格中,最后我添加了热值作为随机变量。 - Ashlou
我能看到这张图片。您能否使用我的数据框复制它?我尝试使用相同的代码替换 z = np.random.uniform(-1, 1, (24,12)) 但它没有起作用。 - scientific_explorer
那么我猜我不能使用您的答案和我的规格来绘制我的图形了吧? - scientific_explorer
为什么不呢?只需使用12和24,但不要忘记顺序。如果您收到错误,请写下来。 - Ashlou
你应该这样做: z = np.random.uniform(-1, 1, (12,24)) - Ashlou
显示剩余7条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接