Я новичок в 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>