Аннотирующая линейная диаграмма со значениями данных - PullRequest
0 голосов
/ 28 октября 2019

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

Это пример кода, который я написал, чтобы попытаться решить эту проблему:

ax= weekdays.plot(marker='o',label='Conversion rates between signup states')
ax.set_xticklabels(['original','sunday','monday',
                 'tuesday','wednesday','thursday',
                 'friday','saturday'])
for i in weekdays.values:
    ax.text(str(i),xy=i)

Вот пример моих данных (из рабочих дней). Я вернул его как словарь для удобства чтения:

{'filter': {0: 'original',
  1: 'sunday',
  2: 'monday',
  3: 'tuesday',
  4: 'wednesday',
  5: 'thursday',
  6: 'friday',
  7: 'saturday'},
 'session_to_leads': {0: 16.28,
  1: 13.88,
  2: 13.63,
  3: 15.110000000000001,
  4: 13.469999999999999,
  5: 13.54,
  6: 12.58,
  7: 12.82},
 'leads_to_opps': {0: 9.47,
  1: 6.279999999999999,
  2: 7.62,
  3: 8.6,
  4: 7.5600000000000005,
  5: 7.9,
  6: 7.08,
  7: 5.7299999999999995},
 'opps_to_complete': {0: 1.92,
  1: 0.86,
  2: 1.3599999999999999,
  3: 1.69,
  4: 1.3599999999999999,
  5: 1.48,
  6: 1.51,
  7: 0.88}}

1 Ответ

0 голосов
/ 28 октября 2019

Вы можете попробовать это по-другому с плотно. Сначала вы можете сгенерировать новый фрейм данных с 3 столбцами со следующим кодом:

values = weekdays.T.values[1:].ravel()
idx = weekdays.T.values[0].ravel().tolist() * 3 

cols = weekdays.columns[1:]
cols_ = []
for col in cols:
    cols_.append([col]*8)
cols_ = np.array(cols_).ravel()

weekdays_ = pd.DataFrame({'days': idx, 'values': values, 'cols': cols_})

, вывод будет таким, как показано ниже:

         days values              cols
0    original  16.28  session_to_leads
1      sunday  13.88  session_to_leads
2      monday  13.63  session_to_leads
3     tuesday  15.11  session_to_leads
4   wednesday  13.47  session_to_leads
5    thursday  13.54  session_to_leads
6      friday  12.58  session_to_leads
7    saturday  12.82  session_to_leads
8    original   9.47     leads_to_opps

Теперь вы используете следующее, чтобы получитьсюжет

import plotly_express as px # or import plotly.express as px

px.line(weekdays_, x='days', y='values', color='cols')

, который создает следующий интерактивный сюжет.

interactive plotly chart

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...