簡體   English   中英

Python 散點圖 plot 用於多個組,x 軸為列,y 軸為值

[英]Python scatter plot for multiple groups with columns in x-axis and values in y-axis

我有一個 dataframe 有 6 列 - id、jan_data、feb_data、mar_data、apr_data、組。 對於樣本數據,我給了 2 個組,我想創建 2 個不同的散點圖 - 每個組一個(組可以更多)。 Label 應讀作“組 1”、“組 2”。

X 軸應包含列名稱 jan_data、feb_data、mar_data、apr_data,其中 label 為“月”,y 軸的名稱應為“值”(垂直書寫)。 現在必須為每個 id 繪制散點 plot(對於 x 軸中的相應月份數據)。

import pandas as pd
df_plot = pd.DataFrame({'id': [101,102,103,104,105,106],
                         'jan_data': [30,0,5000,5500,8900,80],
                         'feb_data': [40,0,6000,6780,7800,90],
                         'mar_data': [50,20,7000,4300,6700,78],
                         'apr_data': [60,30,8000,1200,0,67],
                         'group': [2,2,1,1,1,2]})
    id  jan_data    feb_data    mar_data    apr_data    group
0   101 30          40          50          60          2
1   102 0           0           20          30          2
2   103 5000        6000        7000        8000        1
3   104 5500        6780        4300        1200        1
4   105 8900        7800        6700        0           1
5   106 80          90          78          67          2

有人可以幫我解決這個問題。 下面是一組的示例圖像 - 第 1 組。

第 1 組的樣本圖

首先melt您的 DataFrame,這樣您就有一列 X 值和一列 Y 值。 然后使用groupby為每個組創建不同的 plot。 我們可以指定id將用於顏色。 (如果您希望繪圖中有 > 20 個 ID,請使用不同的cmap )。 DataFrame.plot.scatter強制使用顏色條,因此只需使用plt.scatter

import matplotlib.pyplot as plt

data = df_plot.melt(id_vars=['id', 'group'])

for idx, gp in data.groupby('group'):
    fig, ax = plt.subplots(figsize=(4,4))
    ax.scatter(x=gp['variable'], y=gp['value'],
               c=gp['id'], cmap='tab20')
    
    ax.grid()
    ax.set_ylabel('Value', fontsize=12)
    ax.set_xlabel('Months', fontsize=12)
    ax.set_title(f'Group: {idx}', fontsize=14)
    
    plt.show()

在此處輸入圖像描述 在此處輸入圖像描述

暫無
暫無

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

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