Почему в моей легенде на графе Сиборн не отображаются все ярлыки? - PullRequest
1 голос
/ 26 апреля 2020

У меня есть граф Seaborn, показывающий семь различных классов животных:

g = sns.countplot(data=df, x="class_type")
plt.legend(title="Animal Type", loc="upper right", labels=["Mammal", "Bird", "Reptile", "Fish", 
                                                           "Amphibian", "Bug", "Invertebrate"])
plt.show(g)

, который дает мне это изображение. countplot

Как видите, отображается только первая метка. Как мне показать метку для каждого столбца, пожалуйста?

это верх (первые 20 строк) моего фрейма данных:

   animal_name  hair  feathers  eggs  milk  airborne  aquatic  predator  \
0     aardvark     1         0     0     1         0        0         1   
1     antelope     1         0     0     1         0        0         0   
2         bass     0         0     1     0         0        1         1   
3         bear     1         0     0     1         0        0         1   
4         boar     1         0     0     1         0        0         1   
5      buffalo     1         0     0     1         0        0         0   
6         calf     1         0     0     1         0        0         0   
7         carp     0         0     1     0         0        1         0   
8      catfish     0         0     1     0         0        1         1   
9         cavy     1         0     0     1         0        0         0   
10     cheetah     1         0     0     1         0        0         1   
11     chicken     0         1     1     0         1        0         0   
12        chub     0         0     1     0         0        1         1   
13        clam     0         0     1     0         0        0         1   
14        crab     0         0     1     0         0        1         1   
15    crayfish     0         0     1     0         0        1         1   
16        crow     0         1     1     0         1        0         1   
17        deer     1         0     0     1         0        0         0   
18     dogfish     0         0     1     0         0        1         1   
19     dolphin     0         0     0     1         0        1         1   

    toothed  backbone  breathes  venomous  fins  legs  tail  domestic  \
0         1         1         1         0     0     4     0         0   
1         1         1         1         0     0     4     1         0   
2         1         1         0         0     1     0     1         0   
3         1         1         1         0     0     4     0         0   
4         1         1         1         0     0     4     1         0   
5         1         1         1         0     0     4     1         0   
6         1         1         1         0     0     4     1         1   
7         1         1         0         0     1     0     1         1   
8         1         1         0         0     1     0     1         0   
9         1         1         1         0     0     4     0         1   
10        1         1         1         0     0     4     1         0   
11        0         1         1         0     0     2     1         1   
12        1         1         0         0     1     0     1         0   
13        0         0         0         0     0     0     0         0   
14        0         0         0         0     0     4     0         0   
15        0         0         0         0     0     6     0         0   
16        0         1         1         0     0     2     1         0   
17        1         1         1         0     0     4     1         0   
18        1         1         0         0     1     0     1         0   
19        1         1         1         0     1     0     1         0   

    catsize  class_type  
0         1           1  
1         1           1  
2         0           4  
3         1           1  
4         1           1  
5         1           1  
6         1           1  
7         0           4  
8         0           4  
9         0           1  
10        1           1  
11        0           2  
12        0           4  
13        0           7  
14        0           7  
15        0           7  
16        0           2  
17        1           1  
18        1           4  
19        1           1  

, как вы можете видеть, это смесь цифр c, строка и одно горячее закодированное данные.

1 Ответ

1 голос
/ 26 апреля 2020

Спасибо, что включили пример данных.

Одна проблема, похоже, заключается в том, что команда plt.legend() не работает на текущей оси.

Вы можете сделать это вместо этого:

import seaborn as sns, pandas as pd, matplotlib.pyplot as plt 

ax = sns.countplot(data=df, x="class_type", hue='class_type', dodge=False) 
h,l = ax.get_legend_handles_labels()
labels=["Mammal", "Bird", "Reptile", "Fish", "Amphibian", "Bug", "Invertebrate"]
ax.legend(h,labels,title="Animal Type", loc="upper right") 
plt.show()

Результат: enter image description here

Здесь найден наконечник dodge=False kwarg: https://github.com/mwaskom/seaborn/issues/871

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...