MatPlotLib с пользовательскими словарями конвертировать в графики - PullRequest
0 голосов
/ 03 февраля 2020

Проблема:

У меня есть список ~ 108 словарей с именем list_of_dictionary, и я хотел бы использовать Matplotlib для генерации линейных графиков.

Словари имеют следующий формат (это один из 108):

{'price': [59990, 
           59890,
           60990,
           62990, 
           59990, 
           59690], 
 'car': '2014 Land Rover Range Rover Sport', 
 'datetime': [datetime.datetime(2020, 1, 22, 11, 19, 26), 
              datetime.datetime(2020, 1, 23, 13, 12, 33), 
              datetime.datetime(2020, 1, 28, 12, 39, 24), 
              datetime.datetime(2020, 1, 29, 18, 39, 36), 
              datetime.datetime(2020, 1, 30, 18, 41, 31), 
              datetime.datetime(2020, 2, 1, 12, 39, 7)]
}

Понимание словаря:

car 2014 Land Rover Range Rover Sport по цене:

  • 59990 на datetime.datetime(2020, 1, 22, 11, 19, 26)
  • 59890 на datetime.datetime(2020, 1, 23, 13, 12, 33)
  • 60990 на datetime.datetime(2020, 1, 28, 12, 39, 24)
  • 62990 вкл. datetime.datetime(2020, 1, 29, 18, 39, 36)
  • 59990 вкл. datetime.datetime(2020, 1, 30, 18, 41, 31)
  • 59690 вкл. datetime.datetime(2020, 2, 1, 12, 39, 7)

Вопрос :

С этой структурой, как можно создать мини-графов с помощью matplotlib (скажем, 11 строк x 10 столбцов)?

Где каждый мини-граф будет иметь :

  • название графа от car
  • по оси x от datetime
  • y- ось от price

Что я пробовал:

df = pd.DataFrame(list_of_dictionary)
df = df.set_index('datetime')
print(df)

Я не знаю, что делать после этого ...

Соответствующее исследование:

Я прочитал их несколько раз, но чем больше я их читаю, тем больше путаюсь :( .

1 Ответ

0 голосов
/ 03 февраля 2020

Я не знаю, имеет ли смысл попытаться нарисовать так много графиков на фигуре. Вам нужно будет сделать несколько вариантов, чтобы уместить все декорации осей на странице (заголовки, метки осей, метки галочек и т. Д. c ...).

, но основная идея c заключается в следующем:

car_data = [{'price': [59990, 
           59890,
           60990,
           62990, 
           59990, 
           59690], 
 'car': '2014 Land Rover Range Rover Sport', 
 'datetime': [datetime.datetime(2020, 1, 22, 11, 19, 26), 
              datetime.datetime(2020, 1, 23, 13, 12, 33), 
              datetime.datetime(2020, 1, 28, 12, 39, 24), 
              datetime.datetime(2020, 1, 29, 18, 39, 36), 
              datetime.datetime(2020, 1, 30, 18, 41, 31), 
              datetime.datetime(2020, 2, 1, 12, 39, 7)]
}]*108

fig, axs = plt.subplots(11,10, figsize=(20,22)) # adjust figsize as you please

for car,ax in zip(car_data, axs.flat):
    ax.plot(car["datetime"], car['price'], '-')
    ax.set_title(car['car'])

В идеале, все ваши оси могут иметь одни и те же оси x и y, чтобы вы могли иметь метки только слева. самые и самые нижние оси. Это делается автоматически, если вы добавите sharex=True и sharey=True к subplots():

fig, axs = plt.subplots(11,10, figsize=(20,22), sharex=True, sharey=True) # adjust figsize as you please
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...