Создайте тепловую карту в python matplotlib с прерывистыми метками x и y из dict в формате {tuple: float} - PullRequest
0 голосов
/ 08 июля 2019

Этот вопрос происходит от этого вопроса.По сути, я пытаюсь создать тепловую карту, используя matplotlib с координатами в виде осей x и y, и значением, таким как частота в этой позиции, в качестве тепла.У меня есть редкие словарные данные [x, y] = value_on_that_position для хранения информации, что означает, что метки xy не являются непрерывными.

Поэтому я попытался решить этот вопрос с кодом

import pandas as pd
ser = pd.Series(list(data.values()), index=pd.MultiIndex.from_tuples(data.keys()))
df = ser.unstack().fillna(0)
df.shape

Работает хорошо, если только отсутствует ярлык.Например, он может нарисовать что-то вроде:

   1    3    4    5
6  50   51   34   76
7  12   10   23   23
9  23   0    70   75
10 10   12   13   40

Поскольку метки x и y в моей задаче обозначают координаты, мне нужно, чтобы они были полными и непрерывными, хотелось бы, чтобы метки x и y былив этом случае, как [1 2 3 4 5] и [6 7 8 9 10], со значением 0, автоматически заполненным в этих несуществующих координатах.

Я знаю, что могу достичь цели простымдобавьте несколько точек в набор данных, например, добавив data [2, 8] = 0 в этом случае, и ser.unstack().fillna(0) выполнит эту работу.Но я не хочу слишком много работать со словарем, так как он уже достаточно большой (поэтому я храню данные в разреженном словаре, а не в плотном).Есть ли лучший способ сделать это?Есть ли какая-нибудь функция, предоставляемая pandas dataframe, может сделать это легко?

...