我是Python新手
我使用以下代码在matplotlib/seaborn中生成了一个箱线图(带有Swarmlot覆盖)。我现在想添加一个图例,它遵循每个方框的颜色方案。我在网上找到的许多解决方案似乎不适用于这种特殊类型的图(例如,仅适用于grouped boxplots)
当我尝试实现建议的代码here时,我收到了错误消息
非常感谢您的所有意见
# 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和Swarmlot)没有标签sns.boxplot
基于matplotlib在scatter上的boxplot和sns.swarmplot
,所以您只需分别给它们一个labels
和label
参数或者,根据this的说法,您可以让seaborn部分保持不变,并摆弄:
相关问题 更多 >
编程相关推荐