Python 用数据值注释折线图

Python 用数据值注释折线图,python,pandas,matplotlib,Python,Pandas,Matplotlib,我用多个折线图绘制。我想为每条线中的每个点绘制数据值,这些点对应于数据框中的值。然而,我在注释这些数据点时遇到困难 这是我为尝试解决此问题而编写的代码示例: ax= weekdays.plot(marker='o',label='Conversion rates between signup states') ax.set_xticklabels(['original','sunday','monday', 'tuesday','wednesday','thur

我用多个折线图绘制。我想为每条线中的每个点绘制数据值,这些点对应于数据框中的值。然而,我在注释这些数据点时遇到困难

这是我为尝试解决此问题而编写的代码示例:

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}}

您可以使用plotly以不同的方式进行尝试。您可以首先使用以下代码生成一个包含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')
这将生成以下交互式绘图


这很好,但当我尝试将其封装在函数->ValueError:数组必须具有相同的长度时,会收到此错误消息您能提供回溯吗?或者你能说出哪一行抛出错误吗?