我是Python的初学者(使用Spyder 3.3.2和Anaconda Navigator 1.9.6中的Python 3.7 )。我创建海上小提琴图没有问题,但当我尝试快速格式化它们的时候,我遇到了问题。我试过使用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)我的数据是long form,所以所有的时间点都在第一列,“巨噬细胞频率”数据在第二列。其余所有列表示其他单元格类型。Here is a screenshot of my data spreadsheet
这是我的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)我得到“关键错误:('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()。“
所以..。
我想创建一个包含多个小提琴图(X轴上的Timepoint,Y轴上的Cell type frequency )的网格,每个图从每列获取数据。为什么仅当我将"y“限制为数据帧中的一列时,我才能成功?
我已经谷歌了我所有的错误,但我似乎不能对我的代码进行正确的更改。如果我改变了一件事,那么我会得到一个新的错误(比如"TypeError:类型为'NonType‘的对象没有len()","ValueError: num必须是1 <= num <= 0,而不是1",等等)
发布于 2019-08-21 21:04:58
使用以下命令:
g = sns.catplot(x = "Timepoint", y = "Macrophage Frequency", palette = "Blues", data=df, kind="violin")x和y只是df中的列名。
https://stackoverflow.com/questions/54656980
复制相似问题