मेरे पास यह पांडा डेटाफ्रेम है


index   cath_date
0   2015    65
1   2016    88
2   2017    106
3   2018    97
0   2019Q2  120
6   2019Q1  101
17  2019Q3  48

मैंने इस कोड को प्लॉट करने की कोशिश करते हुए एक लाइन ग्राफ को प्लॉट करने की कोशिश की

x= df['index'].values.tolist()
y= df['cath_date'].values.tolist()
fig = go.Figure(data=go.Scatter(x= df['index'].astype(str).tolist(), y= y,
                                text= y,textposition= 'top center', mode='lines+markers',
                                hovertemplate='Avg: %{y} <br> Year: %{x}<extra></extra>'))
fig.update_layout(title_text='PPCI Primary Average 2015-2018',
                  xaxis= dict(dtick = 1, title=dict(text="Year"), showgrid = True), 
                  yaxis = dict(rangemode="tozero",autorange=True, title=dict(text="Average"), showgrid= True))
fig.show()

यह आंकड़ा

जैसा कि आप 2019Q1, 2019Q2, 2019Q3 मान देख सकते हैं, तो समस्या क्या है

1
Mahmoud Housam 21 नवम्बर 2019, 20:18

1 उत्तर

स्ट्रिंग के एक एक्स-अक्ष का कोई मतलब नहीं है, इसलिए प्लॉटली उन्हें संख्याओं की तरह व्यवहार कर रहा है। निश्चित रूप से Q1/2/3 होने का कोई मतलब नहीं है, इसलिए हमें उन्हें संख्याओं में बदलने की आवश्यकता है:

import pandas as pd
import plotly.graph_objects as go

index = [2015,2016,2017,2018,2019,2019.25,2019.5]
cath_date = [65,88,106,97,120,101,48]

x = index
y = cath_date

fig = go.Figure(data=go.Scatter(x= x, y= y,
                                text= y,textposition= 'top center', mode='lines+markers',
                                hovertemplate='Avg: %{y} <br> Year: %{x}<extra></extra>'))
fig.update_layout(title_text='PPCI Primary Average 2015-2018',
                  xaxis= dict(dtick = 1, title=dict(text="Year"), showgrid = True), 
                  yaxis = dict(rangemode="tozero",autorange=True, title=dict(text="Average"), showgrid= True))
fig.show()

अब आपके अंतिम तीन डेटा बिंदु वास्तव में दिखाई देंगे।

1
Joseph Rajchwald 21 नवम्बर 2019, 21:08