【发布时间】:2016-11-22 21:00:28
【问题描述】:
我正在研究使用散景自动绘制代谢组学数据的函数。目前,我正在尝试从 CSV 读取我的数据框并遍历为每个代谢物(列)生成箱形图的列。
我有一个示例 df,如下所示:
Sample Group AMP ADP ATP
1A A 239847 239084 987374
1B A 245098 241210 988950
2A B 238759 200554 921032
2B B 230029 215408 89980
我的代码如下所示:
import pandas
from bokeh.plotting import figure, output_file, show, save
from bokeh.charts import BoxPlot
df = pandas.read_csv("testdata_2.csv")
for colname, col in df.iteritems():
p = BoxPlot(df, values=df[colname], label='Group', xlabel='Group', ylabel='Peak Area',
title=colname)
output_file("boxplot.html")
show(p)
这会产生错误:
raise ValueError("expected an element of either %s, got %r" % (nice_join(self.type_params), value))
ValueError: expected an element of either Column Name or Column String or List(Column Name or Column String
似乎设置values=df[colname] 是问题所在。如果我用values=df['colname'] 替换它,它会给我一个colname 的关键错误。如果我指定一个给定的列,例如values='ATP',我可以很好地绘制,但我需要能够遍历所有列。
有什么指导吗?这甚至是最好的方法吗?
提前致谢。
【问题讨论】:
-
您需要将列的名称传递给值,即
values=colname -
我尝试过同时使用
values=colname和values='colname'。两者都会产生错误。
标签: python pandas plot boxplot bokeh