【问题标题】:How to color a Seaborn boxplot using a different dataframe than the one plotted in Python?如何使用与 Python 中绘制的数据框不同的数据框为 Seaborn 箱线图着色?
【发布时间】:2020-03-08 17:53:12
【问题描述】:

我正在尝试使用 Seaborn 创建一个箱线图,该箱线图具有来自一个数据集的数据,但基于不同的数据集进行着色。下面以一个较小的数据集为例。我实际使用的数据集要大得多。

  1. 导入库:
import numpy as np
import pandas as pd
import seaborn as sns
  1. 创建数据集
data = ([[0.038095,0.259664,-0.016144],
         [0.070850,0.533989,0.221025],
         [0.010452,0.108146,0.007267],
         [0.033338,0.006664,0.160160],
         [0.005897,0.060313,-0.001070],
         [0.089018,0.002074,0.409608],
         [-0.010612,0.006957,0.331146],
         [-0.002889,0.005181,0.928332]])
dataset = pd.DataFrame(data,columns=['A','B','C'])
dataset
  1. 制作箱线图
sns.boxplot(data=dataset)

Boxplot figure

  1. 这是我想用来为箱线图着色的数据集。基本上,我希望 A 和 B 为红色(“否”),C 为绿色(“是”)。
type = ([
    ['A', 'No'],
    ['B','No'],
    ['C', 'Yes']])

type_dataset = pd.DataFrame(type); type_dataset

那么,如何根据类型数据集对箱线图进行着色?我需要合并数据集吗?感谢任何/所有帮助!谢谢。

【问题讨论】:

    标签: python seaborn boxplot


    【解决方案1】:

    boxplot 使用palette 关键字参数:

    sns.boxplot(data=dataset, palette=['r', 'r', 'g'])
    

    或者,从您的 type_dataset 对象中获取元数据:

    cmap = {'Yes': 'green', 'No': 'red'}
    sns.boxplot(data=dataset, palette=[cmap[v] for v in type_dataset[1]])
    

    【讨论】:

    • 非常感谢!由于我的数据集不仅仅是三列,我使用了第二种解决方案。完美运行。
    猜你喜欢
    • 2023-02-24
    • 2017-03-13
    • 1970-01-01
    • 2020-07-08
    • 1970-01-01
    • 2017-12-16
    • 2015-12-31
    • 2020-07-23
    • 2018-09-08
    相关资源
    最近更新 更多