簡體   English   中英

如何在一個 plot 中使用不同范圍的 plot 數據框的特定列(也許使用子圖?)

[英]how to plot specific columns of data frame with different range in one plot (Maybe using sub-plot?)

我有一個具有不同范圍參數的數據框。 您可以在下面看到示例數據:

在此處輸入圖像描述

由於參數范圍不同,如果我 plot 這些變量的箱線圖,結果看起來不太好。 我搜索並找到了這個鏈接How to plot boxplots of multiple columns with different ranges這解釋了使用 `plotly. 這是我在這個鏈接之后的代碼

from plotly.subplots import make_subplots
import plotly.graph_objects as go
vars = ['Current_Market_Cap', 'Last_Price', 'Alpha', "Beta"]
fig = make_subplots(rows=1, cols=len(vars))
for i, var in enumerate(vars):
    fig.add_trace(
        go.Box(y=f_df[var],
        name=var),
        row=1, col=i+1
    )

fig.update_traces(boxpoints='all', jitter=.3)

這段代碼的結果如下所示:

在此處輸入圖像描述

但是,我不想要交互模式,我真正需要的是並排顯示每個變量的簡單箱線圖。 基本上,我想要與 plotly 相同的 output 但不是很花哨和互動,只是基本的 python 代碼

反正有這樣做嗎? 也許改用subplot

如果你需要使用 matplotlib 創建上面的多范圍圖,正如你提到的,你可以像這樣使用子圖。 請注意,我使用了隨機數,因此沒有異常值。 但是,對於異常值,colors 也應該保持不變。

import numpy as np
import matplotlib.pyplot as plt
df = pd.DataFrame(
    {'Current_Market_Cap': np.random.rand(100)*1000000,
     'Last_Price': np.random.rand(100)*100,
     'Alpha': np.random.rand(100),
     'Beta': np.random.rand(100)*10
    })

fig, axs = plt.subplots(1, len(df.columns), figsize=(20,10))
mycolors = ['r', 'b', 'c', 'k']
for i, ax in enumerate(axs.flat):
    ax1 = ax.boxplot(df.iloc[:,i])
    ax.set_title(df.columns[i], fontsize=20, fontweight='bold')
    ax.tick_params(axis='y', labelsize=14)
    for item in ['boxes', 'whiskers', 'fliers', 'medians', 'caps']:
        plt.setp(ax1[item], color=mycolors[i])
    
plt.tight_layout()

Output

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM