我有两个相同单位的变量我想在同一个x轴上用Bokeh绘图。看起来像plot.multi_line是正确的工具,但我无法从doc找到正确的语法。我尝试过(从文档中收集):
# df is a pandas DataFrame with contains 3 columns x, y1, y2
source = ColumnDataSource(data=df)
plot=figure()
plot.multi_line(['x','x'], ['y1', 'y2'], source=source)
或者试过:
plot.multi_line(xs=['x','x'], ys=['y1', 'y2'], source=source)
结果
RuntimeError: 向字形方法提供用户定义的数据源和可迭代值是 不可能。之一:
直接将所有数据作为文字传递:
p.circe(x = a_list,y = an_array,...)
或者,将所有数据放在ColumnDataSource中并传递列名:
source = ColumnDataSource(data = dict(x = a_list,y = an_array)) p.circe(x ='x',y ='x',source = source,...)
Doc给出了这个例子:
p.multi_line([[1, 3, 2], [3, 4, 6, 6]], [[2, 1, 4], [4, 7, 8, 5]],
color=["firebrick", "navy"], alpha=[0.8, 0.3], line_width=4)
我显然不希望使用原始列表传递值。我不明白,我需要一些帮助。
答案 0 :(得分:6)
好的,我觉得很傻,只是这样做:
let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "YourTable")
fetchRequest.returnsObjectsAsFaults = false
do
{
let results = try context.fetch(fetchRequest)
for managedObject in results
{
let managedObjectData:NSManagedObject = managedObject as! NSManagedObject
context.delete(managedObjectData)
}
} catch let error as NSError {
print("Detele all my data in \(entity) error : \(error) \(error.userInfo)")
}
可以做到这一点,就像在Matplotlib中那样......我对这个“plot.multi_line”函数感到困惑(我现在不明白为什么我会用它,但是很好)。
答案 1 :(得分:0)
我想您必须对源进行一些定义:
source = ColumnDataSource({
'x_mult': [df['x1'].to_list(), df['x2'].to_list()],
'y_mult': [df['y1'].to_list(), df['y2'].to_list()],
})
plot=figure()
plot.multi_line('x_mult', 'y_mult', source=source)
但是当您的y共享相同的x值时,我想使用plot.line会更合适:
source = ColumnDataSource(data=df)
plot=figure()
plot.line(x='x', y=['y1', 'y2'], source=source)