Почему colorbar не может работать с плавким предохранителем тепловых карт? - PullRequest
0 голосов
/ 21 января 2020

Я работаю с двумя графиками, и они являются предохранителями. Это тепловая карта для рассеяния, но у тепловой карты нет цветовой шкалы, и я хочу показать этот цвет. Когда я пытаюсь это сделать, выдает ошибку:

RuntimeError: No mappable was found to use for colorbar creation. First define a mappable such as an image (with imshow) or a contour set (with contourf).

Вот код:

import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_csv("data/forestfires.csv")

x_number_list = df.X.tolist()
y_number_list = df.Y.tolist()
x_number_list = np.array(x_number_list)
y_number_list = np.array(y_number_list)

area_number_list = df.area.tolist()
area_number_list = [int(round(x+1,0)) for x in area_number_list]
temperature_number_list = df.temp.tolist()
temperature_number_list = np.array(temperature_number_list)

heatmap, xedges, yedges = np.histogram2d(y_number_list, x_number_list, weights=temperature_number_list)
fig, ax1 = plt.subplots(figsize=(7,7))
ax1.imshow(heatmap, interpolation='bicubic', cmap='hot', origin='lower')
ax1.scatter(x_number_list, y_number_list, s=area_number_list, color=(157/255, 173/255, 245/255, 0.9))
ax1.set_ylim(y_number_list.min()-0.5, y_number_list.max()+0.5)
ax1.set_xlim(x_number_list.min()-0.5, x_number_list.max()+0.5)

cb = plt.colorbar()

plt.show()

Вот результат графика:

enter image description here

Все данные, которые я использую в этой программе, являются числовыми. Я работаю на Jupyter и использую последнюю версию на python.

1 Ответ

1 голос
/ 21 января 2020

Вам нужно указать, где вы хотите разместить цветную полосу и что вы хотите, чтобы цветная полоса показывала. Я сделал бы это следующим образом.

Измените

ax1.imshow(heatmap, interpolation='bicubic', cmap='hot', origin='lower')

на

im = ax1.imshow(heatmap, interpolation='bicubic', cmap='hot', origin='lower')

, а затем укажите цветную полосу как

cb = fig.colorbar(im, ax=ax1)
...