从pandas df向bokeh绘图函数传递列数据

2024-06-28 19:45:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我在用bokeh自动绘制代谢组学数据的函数。目前,我正在尝试从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',我可以很好地进行绘图,但是我需要能够遍历所有列。

有什么指导吗?这是最好的方法吗?

提前谢谢。


Tags: or数据fromimportpandasdfoutputshow