python - 在 matplotlib/seaborn 中为箱线图添加图例
问题描述
我是 Python 新手。
我使用以下代码在 matplotlib/seaborn 中生成了一个箱线图(带有 swarmplot 覆盖)。我现在想添加一个遵循每个框的配色方案的图例。我在网上找到的许多解决方案似乎不适用于这种特定类型的图表(例如,仅适用于分组箱线图)。
当我尝试实现此处建议的代码时,我收到错误消息。
非常感谢所有输入!
# Import libraries and modules
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
# Set seaborn style.
sns.set(style="whitegrid", palette="colorblind")
# Load summary tidy data.
tidy = pd.read_csv('tidy.csv')
# Define plots for tidy data
fig, ax = plt.subplots(figsize=(10,6))
ax = sns.boxplot(x='header1', y='header2', data=tidy, order=["header1", "header2"])
ax = sns.swarmplot(x="header1", y="header2", data=tidy, color=".25", order=["header1", "header2"])
labels = [item.get_text() for item in ax.get_xticklabels()]
labels[0] = 'header1'
labels[1] = 'header2'
ax.set_xticklabels(labels)
ax.legend(loc='best')
我正在使用的数据示例。
Object,Metric,Length
MT1,B2A1,3.57675
MT1,B2A2,2.9474600000000004
MT1,B2A3,2.247772857142857
MT1,B2A4,3.754455
MT1,B2A5,2.716282
MT1,B2A6,2.91325
MT10,B2A1,3.34361
MT10,B2A2,2.889958333333333
MT10,B2A3,2.22087
MT10,B2A4,2.87669
MT10,B2A5,1.6745005555555557
MT12,B2A1,3.3938900000000003
MT12,B2A2,2.00601
MT12,B2A3,2.1720200000000003
MT12,B2A4,2.452923333333333
解决方案
该no handles with labels found to put in the legend
错误是由于ax.legend()
在您的两位艺术家(boxplot 和 swarmplot)没有标签时调用。
sns.boxplot
基于 matplotlib 的boxplot和scatter ,所以你只需要分别给它们一个和参数。sns.swarmplot
labels
label
ax = sns.boxplot(..., labels=["Metric", "Length"])
ax = sns.swarmplot(..., label="something goes here")
或者,根据这一点,您可以保持 seaborn 部分不变并摆弄:
handles, _ = ax.get_legend_handles_labels() # Get the artists.
ax.legend(handles, ["label1", "label2"], loc="best") # Associate manually the artists to a label.
推荐阅读
- hibernate - Hibernate:本机查询无法处理用单引号括起来的值
- kubernetes - 无法从 ansible 运行 kubectl
- mysql - 如何在一行中添加三个不同表中的三个数字mysql phpmyadmin
- python - Geopandas 不工作。我无法绘制图表
- swift - Cocoapods-Deintegrate from project 导致 SIGABRT 错误
- python - Django 中的并发进程日志
- azure - 如何使用空白登录 url 创建企业图库应用程序以启用 IdP 发起的流程?
- npm - 未找到或无法读取要导入的 SassFile:@material/button/mdc-button
- javascript - 如何使用 JavaScript 设置多项选择的值
- c# - Getcomponet.var 返回 null 但 public var 不为 null