Python 3.x seaborn.catplot的问题

Python 3.x seaborn.catplot的问题,python-3.x,seaborn,facet-grid,violin-plot,Python 3.x,Seaborn,Facet Grid,Violin Plot,我是Python的初学者(在Spyder 3.3.2和Anaconda Navigator 1.9.6中使用Python 3.7)。我在创作海生小提琴的情节上没有问题,但当我试图将它们切面化时,我遇到了一些问题。我试着用它 这是我的小提琴情节代码(它的作品): 我的数据是,所以所有时间点都在第一列,“巨噬细胞频率”数据在第二列。其余所有列表示其他单元格类型 这是我的catplot代码(它不工作): 我得到“关键错误:(‘B细胞频率’、‘中性粒细胞频率’、‘NK细胞频率’、‘巨噬细胞频率’)” 我

我是Python的初学者(在Spyder 3.3.2和Anaconda Navigator 1.9.6中使用Python 3.7)。我在创作海生小提琴的情节上没有问题,但当我试图将它们切面化时,我遇到了一些问题。我试着用它

这是我的小提琴情节代码(它的作品): 我的数据是,所以所有时间点都在第一列,“巨噬细胞频率”数据在第二列。其余所有列表示其他单元格类型

这是我的catplot代码(它不工作): 我得到“关键错误:(‘B细胞频率’、‘中性粒细胞频率’、‘NK细胞频率’、‘巨噬细胞频率’)”

我甚至不想单独讨论每一个专栏。我想让代码遍历每一列(单元格类型),以收集数据并将每一列的数据放入自己的绘图中

我将catplot代码简化为基本代码,以查看其是否有效: 它工作并生成小提琴图,但有以下错误:“ValueError:序列的真值不明确。请使用a.empty、a.bool()、a.item()、a.any()或a.all()

所以
我想制作一个由多个小提琴图(X轴上的时间点,Y轴上的细胞类型频率)组成的网格,其中每个图从每个列获取数据。为什么只有当我将“y”限制为数据帧中的一列时,我才能成功

我已经用谷歌搜索了我所有的错误,但我似乎无法对代码进行正确的更改。如果我改变了一件事,那么我会得到一个新的错误(比如“TypeError:type'NonType'的对象没有len()”,“ValueError:num必须是1使用这个:

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

x
y
只是
df

中的列名,我想用catplot制作一个多小提琴图的网格。好的,但是seaborn可以处理长格式的数据帧;您有一个宽格式的数据帧(尽管您的称呼不同)。如何?基于此(),我的数据看起来更像他们展示的长格式电子表格示例。如果我遗漏了什么,请告诉我。根据您的评论,我查阅了其他网站以找出我的误解。此网站帮助我理解了您的观点(谢谢!):该网站还不错。它在长格式下写道:在长格式中,每一行是每个主题的一个时间点。“。这里显然不是这种情况。长格式的数据帧将有三列:时间点、频率类型和值
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)
g=sns.catplot(x = df["Timepoint"], y = df["Macrophage Frequency"], palette = "Blues", data=df, kind="violin")
g = sns.catplot(x = "Timepoint", y = "Macrophage Frequency", palette = "Blues", data=df, kind="violin")