【问题标题】:Plotly: Categorical scatterplot formattingPlotly:分类散点图格式
【发布时间】:2021-05-11 01:53:25
【问题描述】:

我在使用 pandas 和 plotly 正确格式化散点图时遇到问题。我想实现类似于下面的情节(使用谷歌表格创建)。

使用 google colab pandas 和 plotly 使用完全相同的数据,我有一个完全不同的可视化,其中所有点都放在一个网格上,这使得可视化异常值非常困难。

如何使用 python 获得类似于谷歌表格中的情节的结果?最好是一个交互式的情节。

import numpy as np
import pandas as pd
import hvplot.pandas
import plotly.express as px
import matplotlib.pyplot as plt

worksheet= spreadsheet.worksheet('left_to_right') ;

# get_all_values gives a list of rows.
rows = worksheet.get_all_values()
df = pd.DataFrame(rows)
headers = df.iloc[0]

cols = list(df.columns) 

pd.options.plotting.backend = "plotly" 
df.plot(
    kind='scatter',
    x=cols[0], 
    y=cols[1:], 
    width=1500,  
    height=1000 
)

数据集链接: https://docs.google.com/spreadsheets/d/1NOHH9dUEAhRjrl0NWq_zUIgzUdYfupJjuEaXyRmTFEY/edit?usp=sharing

【问题讨论】:

    标签: python plotly scatter-plot


    【解决方案1】:

    您可以创建Strip Chart with Plotly Express,请参阅下面的代码以获取示例。

    import pandas as pd
    import plotly.express as px
    
    # load the data
    df = pd.read_csv('Data.csv', header=None)
    
    # prepare the data
    df = df.melt(id_vars=df.columns[0])
    df = df.drop(labels=['variable'], axis=1)
    df.columns = ['variable', 'value']
    df = df.sort_values(by='variable')
    df = df.reset_index(drop=True)
    df
    #        variable     value
    # 0     Amygdala   1.066667
    # 1     Amygdala   1.057650
    # 2     Amygdala   1.117117
    # 3     Amygdala   1.007353
    # 4     Amygdala   0.979522
    #          ...       ...
    # 1075  Thalamus   1.019973
    # 1076  Thalamus   1.001422
    # 1077  Thalamus   1.037945
    # 1078  Thalamus   0.963793
    # 1079  Thalamus   1.012915
    
    # plot the data
    fig = px.strip(df, x='variable', y='value', color='value', stripmode='overlay')
    
    fig.update_layout(plot_bgcolor='white',
                      paper_bgcolor='white',
                      showlegend=False,
                      xaxis=dict(title=None, linecolor='gray', mirror=True),
                      yaxis=dict(title=None, linecolor='gray', mirror=True))
    
    fig.show()
    

    【讨论】:

    • 通常它几乎可以工作,我只是看到在你的 Y 轴上我们有像 1... 1.1 等在我的值是 1.0025、1.0151 ... 所以某些点的精确数据而不是统一的间隔,怎么修呢?链接到图表它也像 df = df.sort_values([ 'value', 'variable'],ascending = False) 一样额外排序,除此之外通常不会更改您的代码photos.google.com/search/_tra_/photo/…
    猜你喜欢
    • 2020-09-04
    • 2020-11-06
    • 1970-01-01
    • 2021-11-04
    • 2020-02-20
    • 2020-05-15
    • 1970-01-01
    • 2022-01-16
    • 2022-01-21
    相关资源
    最近更新 更多