小编Ice*_*lim的帖子

Plotly:如何将下拉菜单与 pandas 数据框一起使用?

我正在编写一个小脚本来使用plotly 绘制材料数据,我尝试使用下拉列表来选择要显示的数据帧的哪一列。我可以通过一一定义列来做到这一点,但数据框的大小会改变,所以我想使其灵活。

我尝试了一些事情并做到了这一点;

for i in df.columns:
    fig = go.Figure()
    fig.add_trace(go.Scatter(x=df.index, y=df[i]))

    fig.update_layout(
        updatemenus=[
            go.layout.Updatemenu(
                buttons=list([
                    dict(
                        args=["values", i],
                        label=i,
                        method="update"
                    ),
                ]),
                direction="down",
                pad={"r": 10, "t": 10},
                showactive=True,
                x=0.1,
                xanchor="left",
                y=1.1,
                yanchor="top"
            ),
        ]
    )
    fig.update_layout(
        annotations=[
            go.layout.Annotation(text="Material:", showarrow=False,
                             x=0, y=1.085, yref="paper", align="left")
        ]
    )

fig.show()
Run Code Online (Sandbox Code Playgroud)

图表显示了 df 的最后一列,而下拉列表仅保存最后一个列标题?

我的数据看起来像这样,其中 i 是索引,图表和下拉列表显示“G”列;

i  A  B  C  D  E  F  G
1  8  2  4  5  4  9  7
2  5  3  7  7  6  7  3
3  7  4 …
Run Code Online (Sandbox Code Playgroud)

python pandas plotly dropdown

5
推荐指数
1
解决办法
4208
查看次数

Plotly-Dash:为每个选定的 df 列添加新的 yaxis

我有一个基本的 dash 应用程序,可以从数据框字典中绘制一些数据。第一个下拉列表选择 df,而第二个下拉列表选择要绘制的 df 列。

这很有效,但我似乎无法为每个绘制的列添加新的 yaxis。我在每个 df 中有大量列,它们根据选择的 df 变化。

首先,我尝试yaxis=i在定义 x、y 和名称后更改 updateGraph 回调以包括在内。查看文档,似乎我可以定义 yaxis,go.Scatter但我需要将它们设置为“y2”、“y3”、“y4”等。我也尝试通过go.Figure.add_trace这种方式更新布局,但都没有已经工作了。代码如下,其中dict_main是各种大小的数据帧的字典。

感谢所有帮助!

data = list(dict_main.keys())
channels = dict_main[data[0]]

app.layout = html.Div(
    [
        html.Div([
            dcc.Dropdown(
                id='data-dropdown',
                options=[{'label': speed, 'value': speed} for speed in data],
                value=list(dict_main.keys())[0],
                searchable=False
            ),
        ], style={'width': '49%', 'display': 'inline-block'}),
        html.Div([
            dcc.Dropdown(
                id='channel-dropdown',
                multi=True
            ),
        ], style={'width': '49%', 'display': 'inline-block'}
        ),
        html.Div([
            dcc.Graph(
                id='Main-Graph',
            ),
        ], style={'width': '98%', 'display': 'inline-block'}
        )
    ]
)

@app.callback( …
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas plotly plotly-dash

5
推荐指数
1
解决办法
752
查看次数

Plotly:如何从 Pandas 数据框中的每一列创建子图?

我有一个包含 36 列的数据框“df”,这些列被绘制到一个单独的图表上,并使用下面的代码以 html 格式显示。

import plotly.offline as py
import plotly.io as pio

pio.write_html(py.offline.plot([{
'x': df.index,
'y': df[col],
'name': col
}for col in trend_data.columns], filename=new_file_path))
Run Code Online (Sandbox Code Playgroud)

我想遍历每一列并为每一列创建一个子图。我试过了;

from plotly.subplots import make_subplots

sub_titles = df.columns()
fig = make_subplots(rows=6, cols=6, start_cell="bottom-left", subplot_titles=sub_titles)
for i in df.columns:
    fig.add_trace(i)
Run Code Online (Sandbox Code Playgroud)

我创建了 6 行和列,因为这将提供 36 个图并尝试使用标题名称作为子图标题,但我收到一个 ValueError,指出它需要一个二维字典列表。

另外,我尝试通过以下方式添加子情节标题;

sub_titles = list(df)
fig = py.subplots.make_subplots(rows=6, cols=6, sub_titles=sub_titles)
Run Code Online (Sandbox Code Playgroud)

这也会返回错误。任何帮助表示赞赏。

python pandas plotly plotly-python

4
推荐指数
1
解决办法
2880
查看次数

Python:如何拆分和重新连接一系列字符串中的第一个和最后一个项目

我有一系列字符串,该系列看起来像;

Series
"1, 2, 6, 7, 6"
"1, 3, 7, 9, 9"
"1, 1, 3, 5, 6"
"1, 2, 7, 7, 8"
"1, 4, 6, 8, 9"
"1"
Run Code Online (Sandbox Code Playgroud)

我想删除除第一个和最后一个之外的所有元素,因此输出看起来像;

Series
"1, 6"
"1, 9"
"1, 6"
"1, 8"
"1, 9"
"1"
Run Code Online (Sandbox Code Playgroud)

要使用 Split(),我是否需要遍历系列中的每个元素?我试过这个,但无法获得我正在寻找的输出。

python pandas

4
推荐指数
1
解决办法
826
查看次数