Bokeh工具提示显示该行的所有值

时间:2017-04-11 10:21:23

标签: python-2.7 pandas hover bokeh

我正在尝试绘制包含工具提示的折线图,但下面的代码会导致在工具提示中显示该行的所有值,而不是显示这些坐标的单个值

Begin Tran

CREATE TABLE #Person(PersonId INT,FirstName NVARCHAR(50),LastName NVARCHAR(50))
CREATE TABLE #Customer (CustomerId INT,PersonId INT)

INSERT INTO #Person
SELECT 1,'John','Doe'     UNION ALL
SELECT 2 ,'Mike','Test'   UNION ALL
SELECT 3 ,'John','Doe'    UNION ALL
SELECT 4 ,'Mike','Test'   UNION ALL
SELECT 5 ,'John','Doe'    UNION ALL
SELECT 6 ,'John','Doe'    


INSERT INTO #Customer
SELECT 1001, 1     UNION ALL      
SELECT 1002 ,2   UNION ALL        
SELECT 1003 ,3    UNION ALL      
SELECT 1004 ,4    UNION ALL       
SELECT 1005,5      UNION ALL     
SELECT 1006,6           

GO
WITH CTE (PersonId, DuplicateCount)
AS
(
    SELECT FirstName,
    ROW_NUMBER() OVER(PARTITION BY  FirstName,LastName ORDER BY  FirstName,PersonId) AS DuplicateCount
    FROM #Person
)
--Select * from CTE WHERE DuplicateCount>1
DELETE FROM CTE WHERE DuplicateCount >1
DELETE FROM #Customer WHERE PersonId NOT IN(SELECT PersonId FROM #Person)


Select * from #Person
SELECT * from #Customer

ROLLBACK TRAN

以下是最终截图 enter image description here

我试图在实例上给定鼠标时只获得一个井,Date_time,Test_value

1 个答案:

答案 0 :(得分:1)

此代码:

hover.tooltips = [
    ("Wells","@wells"),
    ("Date","@%s"%(df['date_time'])),
    ("Values","@%s"%(df['test_value']))
]

不按你的想法行事。我们假设df['date_time']的值为[10, 20, 30, 40]。然后在您的字符串替换后,您的工具提示如下所示:

("Date", "@[10, 20, 30, 40]")

准确地解释了你所看到的内容。 @[10部分在ColumnDataSource中查找名为"[10"的列(因为前面有@)。没有具有该名称的列,因此工具提示会打印???以指示无法找到要查找的数据。其余的20, 30, 40只是纯文本,因此它按原样打印。在您的代码中,您实际上是在传递Pandas系列而不是列表,因此字符串替换也会在工具提示文本中打印Namedtype信息。

由于您将序列文字传递给scatter,因此它会为您创建一个列数据源,而CDS中的默认名称为'x''y'。我最好的猜测是,你真的想要:

hover.tooltips = [
    ("Wells","@wells"),
    ("Date","@x"),
    ("Values","@y")
]

但请注意,您希望在外部循环中执行此操作。因为它只是一遍又一遍地修改相同的悬停工具。