Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Pandas 在plotly中创建下拉菜单_Pandas_Plotly - Fatal编程技术网

Pandas 在plotly中创建下拉菜单

Pandas 在plotly中创建下拉菜单,pandas,plotly,Pandas,Plotly,我有以下数据帧: # Create DataFrame df = pd.DataFrame({"Col_A_date":[2018-09-04,2018-09-05,2018-09-04,2018-09-05], "Col_B_hour":[7,7,8,8], "Col_C":[1,1,2,2], "Col_value":[1.9,2.2,2.6,3.8]

我有以下数据帧:

# Create DataFrame
df = pd.DataFrame({"Col_A_date":[2018-09-04,2018-09-05,2018-09-04,2018-09-05],
                   "Col_B_hour":[7,7,8,8],
                   "Col_C":[1,1,2,2],
                    "Col_value":[1.9,2.2,2.6,3.8]
                   })

我想创建一个图形,其中列a显示为下拉菜单(2018-09-04和2018-09-05),列B为x轴,列值为y轴,列C为轨迹。所以我可以在同一个图表中看到不同日期的数据。有可能使用plotly吗?

是的,有可能。更新了你的解释。 如果我正确理解你的需求,那就是你想要的:

# import libraries
import pandas as pd
import plotly
import plotly.graph_objs as go

# Create DataFrame
df = pd.DataFrame({"Col_A_date":["2018-09-04","2018-09-05","2018-09-04","2018-09-05"],
                   "Col_B_hour":[7,7,8,8],
                   "Col_C":[1,1,2,2],
                   "Col_value":[1.9,2.2,2.6,3.8]
                   })
# create four df for traces
df1 = df.loc[(df["Col_A_date"] == "2018-09-04") & (df["Col_C"] == 1)]
df2 = df.loc[(df["Col_A_date"] == "2018-09-04") & (df["Col_C"] == 2)]
df3 = df.loc[(df["Col_A_date"] == "2018-09-05") & (df["Col_C"] == 1)]
df4 = df.loc[(df["Col_A_date"] == "2018-09-05") & (df["Col_C"] == 2)]
print(df1,df2,df3,df4)
# Create traces
trace1 = go.Bar(x=list(df1["Col_B_hour"]),
                y=list(df1["Col_value"]),
                name="1",
                text = list(df1["Col_value"]),
                textposition="auto",
                hoverinfo="name",
                marker=dict(color="rgb(0,102,204)")
                )
trace2 = go.Bar(x=list(df2["Col_B_hour"]),
                y=list(df2["Col_value"]),
                name="2",
                text=list(df2["Col_value"]),
                textposition="auto",
                hoverinfo="name",
                marker=dict(color="rgb(255,128,0)")
                )
trace3 = go.Bar(x=list(df3["Col_B_hour"]),
                y=list(df3["Col_value"]),
                name="3",
                text = list(df3["Col_value"]),
                textposition="auto",
                hoverinfo="name",
                marker=dict(color="rgb(255,178,102)")
                )
trace4 = go.Bar(x=list(df4["Col_B_hour"]),
                y=list(df4["Col_value"]),
                name="4",
                text=list(df4["Col_value"]),
                textposition="auto",
                hoverinfo="name",
                marker=dict(color="rgb(255,255,153)")
                )
# Pull traces to data
data = [trace1,trace2,trace3,trace4]
# Specify dropout parameters
updatemenus = list([
    dict(active=-1,
         buttons=list([   
            dict(label = "4 Aug 1",
                 method = "update",
                 args = [{"visible": [True, False, False, False]},
                         {"title": "4 Aug 1"}]),
            dict(label = "4 Aug 2",
                 method = "update",
                 args = [{"visible": [False, True, False, False]},
                         {"title": "4 Aug 2"}]),
            dict(label = "5 Aug 1",
                 method = "update",
                 args = [{"visible": [False, False, True, False]},
                         {"title": "5 Aug 1"}]),
            dict(label = "5 Aug 2",
                 method = "update",
                 args = [{"visible": [False, False, False, True]},
                         {"title": "5 Aug 2"}]),
            dict(label = "All",
                 method = "update",
                 args = [{"visible": [True, True, True, True]},
                         {"title": "All"}]),
            dict(label = "Reset",
                 method = "update",
                 args = [{"visible": [False, False, False, False]},
                         {"title": "Reset"}])
        ]),
    )
])
# Set layout
layout = dict(title="Dropdown",
              showlegend=False,
              xaxis=dict(title="Hours"),
              yaxis=dict(title="Number"),
              updatemenus=updatemenus)
# Create fig
fig = dict(data=data, layout=layout)
# Plot the plotly plot
plotly.offline.plot(fig, filename="update_dropdown.html")
下面是选项
All
的外观: 第一个
跟踪

这里有一些有用的文档链接:about。不要害怕看文档-这里有一些关于如何正确使用此软件包的极好示例。

不,这不是我想要的。对于df1,将有2条基于列C值的记录道,因此在记录道中,y=df列2[df列2[Col列C]=1][Col列U值]和记录道中,y=df列2[df列2[Col列C]=2][Col列U值]。类似地,那里的df2将跟踪1(y=df_2[Col_C]=1][Col_值])和跟踪2(y=df_2[df_2[Col_C]=2][Col u值])。在您的示例中,图中不包括Col_C。这确实回答了我的问题,但没有解决我的问题。这是可行的,当你有一个小的df,但在我的实际数据,我有7个或更多的列C值和日期将动态更新。我在想,下拉菜单会为该按钮指定日期和子批次。然而,所有子图都有相同的轨迹。@dsh-m,嗯。然后你需要想象你想要的图是什么样子,并在这里添加它的图像,以便更好地理解你在寻找什么。也许可以用这些新信息问另一个问题。写一个写得好的问题。这是一个很好的方法来得到一个能解决你的问题的答案,这对我来说是一个完美的解决方案