当前位置: 首页 > 知识库问答 >
问题:

只允许将类似列表的对象传递给 isin(),您传递了一个 [str]

胡星汉
2023-03-14

我正在尝试使用ploly python创建仪表板。需要为饼图的日期选择创建下拉列表。所有数据都来自. csv文件。

期望:饼图中显示的数据基于所选日期。

数据:
在此处输入图像描述

代码:

date_category = list(df['Date'].unique())

app.layout = ...,

        dcc.Dropdown(id='date_drdn', multi=False, value= ['02/01/2022'], 
                      options = [{'label':x, 'value':x} 
                                for x in date_category]
                      ),
                     
        dcc.Graph(id='pie-fig', figure={})

@app.callback(  
      Output('pie-fig', 'figure'),
      Input('date_drdn', 'value'))


def update_graph(selection):
 
      dff = df[df['Date'].isin(selection)]      
      fig = px.pie(dff, values='Transactions', names='Product', color_discrete_sequence=px.colors.sequential.RdBu)
      fig.update_traces(textinfo= "label+value+percent").update_layout(title_x=0.5)
      return fig     

然而,当选择日期时,它一直显示错误信息。< br >错误消息:“只允许将类似列表的对象传递给< code>isin(),您传递了< code>[str]”

并且数据不会基于所选日期显示。

有人知道原因和解决方法吗?

共有1个答案

安轶
2023-03-14

如果下拉列表的返回值允许多个选择,它将采用列表格式并生效。由于预期的饼图是日期和时间的单一选择,因此不需要列表格式作为初始值。同时,回调的返回值将是用于条件提取的单个日期和时间数据。

date_category = list(df['Date'].unique())

from dash import Dash, dcc, html, Input, Output
import plotly.express as px
#from jupyter_dash import JupyterDash

app = Dash(__name__)
#app = JupyterDash(__name__)

app.layout = html.Div([
    html.H3('Daily Graph'),
    dcc.Dropdown(id='date_drdn',
                 multi=False,
                 value= '02/01/2022',
                 options = [{'label':x, 'value':x} for x in date_category]
                ),
                     
        dcc.Graph(id='pie-fig', figure={})
])

@app.callback(  
     Output('pie-fig', 'figure'),
     Input('date_drdn', 'value'))
def update_graph(selection):
    # if selection:
    dff = df[df['Date'] == selection]
    #print(dff)
    fig = px.pie(dff, values='Transactions', names='Product', color_discrete_sequence=px.colors.sequential.RdBu)
    fig.update_traces(textinfo="label+value+percent").update_layout(title_x=0.5)
    return fig

if __name__ == '__main__':
    app.run_server(debug=True)#, mode='inline'
 类似资料:
  • 问题内容: 我有两节课。和。 我有一个要在中使用的功能。我当时正在考虑将的引用传递给的构造函数,然后再调用该函数。 那行得通吗?有人可以给我举个例子吗? 提前致谢! 问题答案: 是的,它将起作用。这是一种不错的方法。您只需传递A类的 实例 : 然后您可以拥有:

  • 问题内容: 我在php中有对象,每个对象代表一个“项目”以及与之相关的所有信息。 当用户浏览页面时,这些对象应传递给javascript。理想情况下,镜像相同的结构,因此我可以使用Raphael在我的网站上将每个项目及其信息显示为单独的形状。 但是,如何将对象从php转换为javascript? 问题答案: 您可以将PHP对象转换为数组,然后使用JSON函数对其进行编码。之后,从JavaScrip

  • 我是一个非程序员,有非常少的代码接触,但我想修改一个现有的代码库。我大大简化了下面的代码。请让我知道,如果我可以提供任何进一步的信息或如果这是没有意义的所有!Vocab很难。:) ClassD:

  • 问题内容: 我正在考虑我的应用程序的解决方案。这是一种情况:我有一个类,该类的方法将ObjectA作为输入参数并调用几个小方法,这些方法中的每个方法都需要ObjectA的某些部分(它们不重叠,即需求和,需求等等)。 …)现在的问题是:鉴于一般的良好代码实践和性能,将ObjectA传递给这些方法中的每一个方法更好,以便它们可以自己提取所需的值,还是仅传递它们的值更好?我的意思是: 要么 感谢您的任何

  • 问题内容: 这里有角的新手。我试图找出将对象传递给指令时出了什么问题。 这是我的指令: 这是我调用指令的模板: 是一组对象。 当我运行此,日志,而日志罚款的范围,甚至有一个与所有的数据,我找孩子。 我不确定我在这里做错了什么,因为这种确切的方法以前对我有用。 编辑: 我已经用所有必需的代码创建了一个插件:http ://plnkr.co/edit/uJCxrG 如您所见,该作用域在范围中可用,但我

  • 问题内容: 我想将一个类变量传递给另一个类,并使其成为该类的类变量。在以下情况下我该怎么做? 问题答案: 很难理解您正在问的问题,但这是一个可能的答案: 使B类成为A的子类: 如果重新声明为,则会出现一种情况,其中存在一个可以称为或的属性。(或在任一或刚刚…甚至作为或地方,并有类型和分别。) 如果您无法在和(或,以及一些包含声明的第三类)之间创建直接或子类型关系,那么您很不走运。他们无法共享声明。