Проблемы с seaborn.catplot - PullRequest
       40

Проблемы с seaborn.catplot

0 голосов
/ 12 февраля 2019

Я новичок в Python (использую Python 3.7 в Spyder 3.3.2 и Anaconda Navigator 1.9.6).У меня нет проблем с созданием морских скрипичных сюжетов, но как только я пытаюсь их пересмотреть, у меня возникают проблемы.Я пытался использовать catplot .

Вот мой код сюжета для скрипки (он работает):

# Libraries
import seaborn as sns
import pandas as pd
import os # Imports `os`
from matplotlib import pyplot as plt

os.chdir(r"XXXXXX") # Changes directory 
os.listdir('.') # Lists all files and directories in current directory


## Data set
File = 'test_eventcountratios.xlsx' # Assigns Excel filename to File
df = pd.read_excel(File)

ax = sns.violinplot(x = df["Timepoint"], y = df["Macrophage Frequency"], palette = "Blues")  
ax.set_xticklabels(ax.get_xticklabels(),rotation=30)

Мои данные длинная форма , поэтому все временные точки находятся в первом столбце и "Частота макрофагов""данные находятся во втором столбце.Все остальные столбцы представляют другие типы ячеек. Вот скриншот моей электронной таблицы данных

Вот мой код catplot (он не работает):

g=sns.catplot(data=df, x="Timepoint", y=df["B cell Frequency","Neutrophil Frequency","NK cell Frequency","Macrophage Frequency"],
              palette = "Blues",
              kind = "violin", split=True)

Я получаю "Key Error: ('Частота B-клеток »,« Частота нейтрофилов »,« Частота NK-клеток »,« Частота макрофагов »)"

Я даже не хочу вызывать каждый столбец отдельно.Я хотел бы, чтобы код проходил через каждый столбец (тип ячейки), чтобы собрать данные и поместить данные каждого столбца в свой собственный график.

Я разобрал код catplot до основ, чтобы посмотреть, сработало ли это:

g=sns.catplot(x = df["Timepoint"], y = df["Macrophage Frequency"], palette = "Blues", data=df, kind="violin")

Он работает и создает сценарий скрипки, но с этой ошибкой: "ValueError: Истинное значение серииявляется неоднозначным. Используйте a.empty, a.bool (), a.item (), a.any () или a.all (). "

Итак ...

Iхотите создать сетку из нескольких графиков скрипки (точка времени на оси X, частота типа ячейки на оси Y), где каждый график берет данные из каждого столбца.Почему я добиваюсь успеха только тогда, когда я ограничиваю свое «y» одним столбцом в моем фрейме данных?

Я погуглил все свои ошибки, но я не могу внести правильные изменения в свой код.Если я что-то изменю, то получу новую ошибку (например, «TypeError: объект типа« NonType »не имеет len ()», «ValueError: num должно быть 1 <= num <= 0, а не 1» и т. Д.)</p>

1 Ответ

0 голосов
/ 21 августа 2019

Используйте это:

g = sns.catplot(x = "Timepoint", y = "Macrophage Frequency", palette = "Blues", data=df, kind="violin")

x и y - это просто имя столбца в df.

...