Как создать радиальную тепловую карту в matplotlib? - PullRequest
0 голосов
/ 29 апреля 2018

Я могу получить радиальную тепловую карту в ggplot2 следующим образом enter image description here

Как мне получить то же самое с помощью 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)

РЕДАКТИРОВАТЬ: Размер моих данных такой же, как и в примере, который я предоставил. Я хотел бы построить то же самое.

Ответы [ 2 ]

0 голосов
/ 29 апреля 2018
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

0 голосов
/ 29 апреля 2018

Я бы использовал полярный.

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

...