【问题标题】:Plotting data by year over year using plotly使用 plotly 逐年绘制数据
【发布时间】:2019-09-30 08:05:15
【问题描述】:

我的数据如下所示:-

Month    Year       Value
Jan      2015       2.8          
Jan      2015       2.0   
Mar      2016       0.9    
Feb      2015       3.1  
Mar      2016       4.2   
Feb      2015       2.1    
Mar      2016       2.3       
Feb      2015       1.1
Apr      2016       1.3
Apr      2016       0.5

现在我想绘制折线图,​​但是通过使用这段代码,我得到了这个输出。下面

我使用过的代码:-

df = rslt_bb.sort_values(by='Year')
trace = go.Scatter(
x = df["Year"],
y = df["Value"],
mode='markers+lines'
)

layout = go.Layout(
#title='Distribution by year',
xaxis=dict(title='Year'),
yaxis=dict(title='Value'),
showlegend=True    
)

fig = dict(data=[trace], layout=layout)
offline.iplot(fig)

我希望绘图应该像不聚合同一行中的所有常见年份,我希望分散。全年,单个数据应单独可见,如下所示,

【问题讨论】:

  • 你拥有的数据是不可能的。
  • 剧情做了它应该做的。如果您没有其他信息,例如月,根本不可能。
  • 不过,您仍然可以计算每年的平均值来绘制一个点。看起来会更好,你的情节。
  • @Ram 仔细查看您提供的数据集。 Jan 2015 有两个不同的值。这不是一个连续的数据集。如果是这样,您可以插入缺失的日期来说明它。但现在这行不通。
  • 那你还得考虑@vestland提到的。同一日期的多个数据点。为此考虑pandas.groupby 功能。

标签: python pandas plotly


【解决方案1】:

您需要创建一个 datetime 对象来绘制 Time Series。所以不是

x = df["Year"]

使用

# import pandas as pd
x = pd.to_datetime(df.Year*100+df.Month, format='%Y%m')

【讨论】:

  • gkk = rslt_bb[['Date', 'Value']].groupby(['Date'])['Value'].mean().reset_index().sort_values(by='日期')感谢@Simon Fink 在你上面的代码之后我写了我的代码并且它工作正常。谢谢。我将您的答案标记为已回答。
猜你喜欢
  • 1970-01-01
  • 2022-09-27
  • 2014-03-14
  • 1970-01-01
  • 1970-01-01
  • 2021-10-11
  • 2017-05-28
  • 1970-01-01
  • 2021-04-03
相关资源
最近更新 更多