adn*_*nan 1 python pandas d3.js plotly
我正在尝试根据“Plotly”中的类别和日期的 ID 计数创建多个折线图 我的日期包含三列“日期”、“类别”、“ID”
我现在使用此代码绘制了一条线
b=mdata.groupby(['Date']).count()['ID ']
b=b.sort_index(ascending=True)
xScale = b.index
yScale = b.values
trace =go.Scatter(
x = xScale,
y = yScale,
marker=dict(
color='Red')
)
data2 = [trace]
graphJSON2 = json.dumps(data2, cls=plotly.utils.PlotlyJSONEncoder)
Run Code Online (Sandbox Code Playgroud)
输出图表应该在 X 轴上有日期,在 Y 轴上有 ID 计数和基于类别的多条线
据我所知,您将不得不使用pandas.DataFrame.pivot 之类的方法来获取您在此处寻找的数据结构。这是使用以下示例数据框应该适合您的数据集描述的建议:
数据:
Date ID Category
0 2013-01-02 1 A
1 2013-01-02 3 B
2 2013-01-03 1 C
3 2013-01-03 2 B
4 2013-01-03 1 B
5 2013-01-03 3 A
6 2013-01-03 3 A
7 2013-01-03 4 A
8 2013-01-04 4 B
9 2013-01-04 4 C
10 2013-01-05 1 B
11 2013-01-06 2 A
Run Code Online (Sandbox Code Playgroud)
阴谋:
代码:
import plotly.graph_objs as go
import pandas as pd
import numpy as np
# sample dataframe to match OPs structure
df = pd.DataFrame({'Date' : [pd.Timestamp('20130102'), pd.Timestamp('20130102'),
pd.Timestamp('20130103'), pd.Timestamp('20130103'),
pd.Timestamp('20130103'), pd.Timestamp('20130103'),
pd.Timestamp('20130103'), pd.Timestamp('20130103'),
pd.Timestamp('20130104'), pd.Timestamp('20130104'),
pd.Timestamp('20130105'),pd.Timestamp('20130106')],
'ID' : [1, 3, 1, 2, 1 , 3,3,4,4,4,1,2],
'Category' : pd.Categorical(["A","B","C","B","B","A",
"A","A","B","C","B","A" ])})
# data munging to get OPs desired plot
df = pd.pivot_table(df, values='ID', index=['Date'],columns='Category', aggfunc=np.sum)
# ploty
fig = go.Figure()
for col in df.columns:
fig.add_trace(go.Scatter(x=df.index, y=df[col].values,
name = col,
mode = 'markers+lines',
line=dict(shape='linear'),
connectgaps=True
)
)
fig.show()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4475 次 |
| 最近记录: |