【问题标题】:Plotly: How can I set marker size based on column value?Plotly:如何根据列值设置标记大小?
【发布时间】:2020-07-23 21:12:31
【问题描述】:

嗨,
我正在尝试使用 plotly(4.6.0 版)来创建绘图,但是标记/大小属性有问题。我在示例中使用了波士顿房价数据集。我想使用我的数据框的一列中的值来为标记设置可变大小,但是当我使用对列的直接引用时出现错误 (size='TAX' )。我可以将大小设置为常数 (size=1) 没有问题。我在网上找到了一些示例,但是当我尝试使用它们时它们会产生“ValueError:...”错误。我怎样才能避免这个错误?代码和错误如下所示。

    import chart_studio.plotly as py
    import plotly.graph_objs as go
    from plotly.offline import iplot, init_notebook_mode
    import cufflinks
    cufflinks.go_offline(connected=True)
    init_notebook_mode(connected=True)
    import pandas as pd
    from sklearn.datasets import load_boston

    boston = load_boston()
    df = pd.DataFrame(boston.data, columns=boston.feature_names)
    y = boston.target
    df['RAD_CAT']=df['RAD'].astype(str)

    df.iplot(
        x='CRIM',
        y='INDUS',
        size='TAX',
        #size=1,
        text='RAD',
        mode='markers',
        layout=dict(
            xaxis=dict(type='log', title='CRIM'),
            yaxis=dict(title='INDUS'),
            title='CRIM vs INDUS Sized by RAD'))

    ValueError:  
        Invalid value of type 'builtins.str' received for the 'size' property of scatter.marker  
            Received value: 'TAX'  

        The 'size' property is a number and may be specified as:  
          - An int or float in the interval [0, inf]  
          - A tuple, list, or one-dimensional numpy array of the above  

【问题讨论】:

    标签: python size plotly valueerror markers


    【解决方案1】:
    import chart_studio.plotly as py
    import plotly.graph_objs as go
    from plotly.offline import iplot, init_notebook_mode
    import cufflinks
    
    cufflinks.go_offline(connected=True)
    init_notebook_mode(connected=True)
    import pandas as pd
    from sklearn.datasets import load_boston
    
    boston = load_boston()
    df = pd.DataFrame(boston.data, columns=boston.feature_names)
    
    df.iplot(
        x='CRIM',
        y='INDUS',
        size=df['TAX']/20, 
        text='RAD',
        mode='markers',
        layout=dict(
            xaxis=dict(type='log', title='CRIM'),
            yaxis=dict(title='INDUS'),
            title='CRIM vs INDUS Sized by TAX'))
    

    【讨论】:

    • 谢谢!这解决了问题。我还修改为除以 1 以保持大小不缩放。
    猜你喜欢
    • 2018-04-15
    • 2021-07-05
    • 2021-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-16
    • 1970-01-01
    • 2023-03-18
    相关资源
    最近更新 更多