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

How do I create radial heatmap in matplotlib?

我可以像这样在 ggplot2 中获取径向热图

如何使用 matplotlib 获得相同的结果?

这是一个示例 df 和可视化,而不是用于使用 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)

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

我会用 polar。

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()

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()