小编big*_*dot的帖子

如何在散景python中捕获下拉窗口小部件的值?

链接中的散景0.12.1的官方文档提供了以下用于创建下拉列表的代码.

http://bokeh.pydata.org/en/latest/docs/user_guide/interaction/widgets.html#userguide-interaction-widgets

但是,当有人点击并从下拉列表中选择一个值时,它没有明确提到如何捕获下拉窗口小部件的值.

from bokeh.io import output_file, show
from bokeh.layouts import widgetbox
from bokeh.models.widgets import Dropdown

output_file("dropdown.html")

menu = [("Item 1", "item_1"), ("Item 2", "item_2"), None, ("Item 3", "item_3")]
dropdown = Dropdown(label="Dropdown button", button_type="warning", menu=menu)

show(widgetbox(dropdown))
Run Code Online (Sandbox Code Playgroud)

是看到有2个方法叫做on_click()&on_change()但是从文档中无法弄清楚如何捕获值.我们如何将选定的值分配给新变量?

编辑

根据@Ascurion的输入,我更新了我的代码,如下所示.但是当我在下拉列表中选择一个值时,Spyder的ipython控制台中不会打印任何内容.请指教.

    from bokeh.io import output_file, show
    from bokeh.layouts import widgetbox
    from bokeh.models.widgets import Dropdown

    output_file("dropdown.html")


    menu = [("Item 1", "item_1"), ("Item 2", "item_2"), None, ("Item 3", "item_3")]
    dropdown = Dropdown(label="Dropdown button", button_type="warning", menu=menu)

    def function_to_call(attr, old, new):
        print dropdown.value

    dropdown.on_change('value', function_to_call) …
Run Code Online (Sandbox Code Playgroud)

python plot data-visualization widget bokeh

6
推荐指数
2
解决办法
1万
查看次数

如何在Bokeh的条形图中添加数据标签?

在Bokeh指南中,可以创建各种条形图的示例.http://bokeh.pydata.org/en/0.10.0/docs/user_guide/charts.html#id4

这段代码将创建一个:

from bokeh.charts import Bar, output_file, show
from bokeh.sampledata.autompg import autompg as df

p = Bar(df, 'cyl', values='mpg', title="Total MPG by CYL")

output_file("bar.html")

show(p)
Run Code Online (Sandbox Code Playgroud)

我的问题是,是否可以将数据标签添加到图表的每个单独栏中?我在网上搜索但找不到明确的答案.

python bokeh

6
推荐指数
2
解决办法
9757
查看次数

使用 Anaconda Cloud 设置和运行 Bokeh 服务器

在 Datacamp Bokeh 课程中宣布,Anaconda Cloud 可以提供散景代码,而不会出现任何复杂的分期付款问题。但是,我对 Anaconda 的了解不足以实现这一目标。

我的问题如下:

起点: - 我有一段用于交互式散景图的 Python 代码

所需端点: - 我想在 Anaconda Cloud 上托管代码,以便外部用户可以通过浏览器访问绘图,而无需安装 python。

我的主要问题是,目前是否有关于如何从起点到终点的简单“傻瓜”教程?

我目前对 anaconda 的理解以完全了解我必须采取哪些步骤以及我需要实现我的目标的 Anaconda/Bokeh 文档的哪些部分。

示例代码取自:

http://docs.bokeh.org/en/latest/docs/user_guide/server.html

python cloud anaconda bokeh

6
推荐指数
1
解决办法
2373
查看次数

Python:如何从mlpd3,Bokeh,Plotly中的链接画笔获取数据?

使用下面的代码,我可以获得带有4个图的2x2图.使用画笔,我可以选择一些数据点.我的问题是如何将选定的数据点作为JSON数组或cvs.此代码使用mlpd3,但散景可以使用画笔进行类似的选择.但是没有选择数据点的示例.我试图将选定的数据作为对象继续使用python进行处理.在单元格中查看数据会很高兴.

%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mat
import mpld3

mpld3.enable_notebook()


from mpld3 import plugins

fig, ax = plt.subplots(2, 2, figsize=(10, 8))
fig.subplots_adjust(hspace=0.1, wspace=0.1)
ax = ax[::-1]

X = np.random.normal(size=(2, 100))
for i in range(2):
    for j in range(2):
        ax[i, j].xaxis.set_major_formatter(plt.NullFormatter())
        ax[i, j].yaxis.set_major_formatter(plt.NullFormatter())
        points = ax[i, j].scatter(X[j], X[i])

plugins.connect(fig, plugins.LinkedBrush(points))
Run Code Online (Sandbox Code Playgroud)

Bokeh在CustomJS for Selections中具有类似的行为

http://bokeh.pydata.org/en/latest/docs/user_guide/interaction/callbacks.html#userguide-interaction-jscallbacks-customjs-interactions

无论哪一个更容易提取所选项目 - 都可行..如果有一个Plotly解决方案,那也可以.

python json plotly bokeh mpld3

6
推荐指数
1
解决办法
675
查看次数

Python,熊猫;ValueError('窗口必须为整数',)

我似乎在Bokeh回调中遇到了与Pandas代码有关的问题。

这是错误之前输出的一部分。我的数据框看起来很正常,我不确定为什么会不高兴

                     time  temperature
0 2016-03-17 11:00:00        4.676
1 2016-03-17 11:30:00        4.633
2 2016-03-17 12:00:00        4.639
3 2016-03-17 12:30:00        4.603
4 2016-03-17 13:00:00        4.615
5 2016-03-17 13:30:00        4.650
6 2016-03-17 14:00:00        4.678
7 2016-03-17 14:30:00        4.698
8 2016-03-17 15:00:00        4.753
9 2016-03-17 15:30:00        4.847
ERROR:bokeh.server.protocol_handler:error handling message Message 'PATCH-DOC' (
revision 1): ValueError('window must be an integer',)
Run Code Online (Sandbox Code Playgroud)

这是我从flask embed示例更改的代码(此处链接):

def callback(attr, old, new):
        df = pd.DataFrame.from_dict(source.data.copy())
        print df[:10]
        if new == 0:
            data = df
        else:
            data = …
Run Code Online (Sandbox Code Playgroud)

python flask python-2.7

6
推荐指数
3
解决办法
2885
查看次数

Holoviews Hovertool 显示额外行?

我有一个数据集,我想在 X 轴上绘制具有 2 个不同变量的绘图(在 2 个不同的图中),但我想将其他值放入 Hovertool

from io import StringIO
import pandas as pd

data = """,item_id,start,station,rejects
0,item1,2019-10-14 19:00:00,assembly,4.297994269340974
1,item1,2019-10-14 19:00:00,ST1,0.20546537908362442
2,item1,2019-10-14 19:00:00,ST2,0.494539460127756
3,item1,2019-10-14 19:00:00,ST3,0.6892230576441103
4,item2,2019-10-14 23:30:00,assembly,4.432249894470241
5,item2,2019-10-14 23:30:00,ST1,0.19071837253655435
6,item2,2019-10-14 23:30:00,ST2,0.7651434643995749
7,item2,2019-10-14 23:30:00,ST3,0.7748600947051227
8,item3,2019-10-15 04:00:00,assembly,3.55576079427384
9,item3,2019-10-15 04:00:00,ST1,0.37002775208140615
10,item3,2019-10-19 04:00:00,ST2,0.7195914577530177
11,item3,2019-10-19 04:00:00,ST3,0.492379835873388
12,item4,2019-10-19 10:30:00,assembly,4.02656704026567
13,item4,2019-10-19 10:30:00,ST1,0.22926219258024177
14,item4,2019-10-19 10:30:00,ST2,0.690376569037657
15,item4,2019-10-19 10:30:00,ST3,0.838745695410320"""

data_reduced = pd.read_csv(StringIO(data), parse_dates=["start"], index_col=0)
Run Code Online (Sandbox Code Playgroud)

我想生成一个图表,其中item_idx 轴为 ,startx 轴为日期。我想跟踪每个站的废品以及装配的组合。

import holoviews as hv
import bokeh
from holoviews import opts
hv.extension('bokeh')
bokeh.plotting.output_notebook()

def plot(data_reduced, x_axis="item_id"):
    x_label …
Run Code Online (Sandbox Code Playgroud)

python holoviews

6
推荐指数
1
解决办法
1259
查看次数

在闪亮的应用程序中为 rbokeh 图设置 xlim

我正在为 R使用rbokeh 包。我在集成到一个闪亮的应用程序中取得了一些不错的结果。我现在想集成一个功能,其中dateRangeInput现在将选择图表的日期范围(它是时间序列数据)。

##necessary packages

install.packages("shiny")
install.packages("devtools")
install.packages("dplyr")
library(devtools)
devtools::install_github("ramnathv/htmlwidgets")
devtools::install_github("bokeh/rbokeh")
library(rbokeh)
library(dplyr)
library(shiny)

#example data set

james<-mtcars[c("mpg")]
james$date<-seq(from=as.Date("2013-05-16"),to=as.Date("2013-06-16"),by="days")
james$index<-1:4

#shiny app

shiny_example <- function(chart_data = james){

  date_minmax <- range(chart_data$date)

  shinyApp(
    ui=fluidPage(
      titlePanel("a plot"),
      sidebarLayout(
        sidebarPanel(
          textInput("index","Enter the index from 1 to 16",value=1),
          uiOutput("date_range")
        ),
        mainPanel(
          rbokeh::rbokehOutput("plot_cars")
        )
      )
    ),
    server=function(input,output,session)
    {
      current_data <- reactive({
        current_df <- subset(james,index==input$index)
        return(current_df)
      })
      output$date_range <- renderUI({
        plot_data <- current_data()
        current_id_range <- range(plot_data$date)
        return(
          dateRangeInput("date_range",
                         "Date Range(X Axis", …
Run Code Online (Sandbox Code Playgroud)

r shiny bokeh rbokeh

5
推荐指数
1
解决办法
654
查看次数

Bokeh小部件 - 工作复选框组示例

我正在评估Bokeh是否已准备好进行更广泛的使用.我已经绘制了两列数据帧(最后的代码),"关闭"和"调整关闭". 在此输入图像描述

我想放入复选框来切换图中两个折线图的显示.因此,如果未选中相关复选框,则不会显示该行.http://bokeh.pydata.org/en/latest/docs/user_guide/interaction.html上的Bokeh文档确实讨论了复选框组,但未提供明确的工作示例.感谢任何有助于获取数据框列的复选框的帮助.

import pandas as pd
from bokeh.plotting import figure, output_file, show

IBM = pd.read_csv(
        "http://ichart.yahoo.com/table.csv?s=IBM&a=0&b=1&c=2011&d=0&e=1&f=2016",
        parse_dates=['Date'])

output_file("datetime.html")

p = figure(width=500, height=250, x_axis_type="datetime")

p.line(IBM['Date'], IBM['Close'], color='navy', alpha=0.5)
p.line(IBM['Date'], IBM['Adj Close'], color='red', alpha=0.5)

show(p)
Run Code Online (Sandbox Code Playgroud)

python bokeh

5
推荐指数
2
解决办法
6932
查看次数

在Django模板中渲染Bokeh小部件

我是django和bokeh的新手。我试图渲染一个简单的散景图,该图由几个选择选项支持,这些选项实际上使我可以在django Web应用程序中调整图的内容。

当从中获得的scriptdiv元素bokeh.embed.components()作为上下文变量传递到模板时,将绘制图。当我在一个bokeh.io.vform对象中拥有一个小部件和一个图时,这是行不通的。

bokeh.io.show()通过指定bokeh.plotting.output_file(),在执行时我得到正确的输出,但是我试图在我的Web应用程序中运行它。我有什么想念的吗?还是有其他方法符合我的意图?

我的仅渲染bokeh小部件的代码如下:

views.py

#django imports 
from bokeh.embed import components
from bokeh.plotting import figure
from bokeh.io import vform
from bokeh.models.widgets import Select
def test(request):
    s = Select(title="test", value="a", options=['a','b','c'])
    script,div = components(s)
    return render(request,'test.html',RequestContext(request,{'script':script,'div':div}))
Run Code Online (Sandbox Code Playgroud)

test.html

<html>
<head>
      <link href="http://cdn.bokeh.org/bokeh/release/bokeh-0.11.1.min.css" rel="stylesheet" type="text/css">
       <script src="http://cdn.bokeh.org/bokeh/release/bokeh-0.11.1.min.js"></script>
</head>
{% load staticfiles %}
<body>
      {{ div | safe }}
      {{ script | safe }}
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

我希望从Django的test()启动test.html时会呈现一个选择表单元素。但不会发生。

python django bokeh

5
推荐指数
1
解决办法
984
查看次数

Python打开html文件,截屏,裁剪并保存为图像

我使用Bokeh包生成地图以显示模拟结果.输出是具有交互性的html格式的单独地图.各个地图需要交互性.

请参阅此链接以获取示例:

http://bokeh.pydata.org/en/0.10.0/docs/gallery/texas.html

模拟可以自动设置为运行多次,并为每次运行生成一个映射.这可能是100的地图.我希望能够将地图拼接在一起以创建电影 - 这不需要交互性.Bokeh具有通过浏览器创建PNG文件的功能,因此可以手动将每个地图保存为文件,并使用ffmpeg创建电影.但是,如果你需要为100个文件做这个,那么这不是一个真正的选择.目前没有办法通过Bokeh自动生成PNG文件,但我相信它会在某些时候添加.

所以我需要一个解决方法.我的想法是从他们存储在本地驱动器上的位置打开每个html文件,拍摄屏幕截图,裁剪图像以保留所需的部分并保存.但我还没有找到一个有效的解决方案.

裁剪图像很简单:

from PIL import Image

img = Image.open(file_name)
box = (1, 1, 1000, 1000)
area = img.crop(box)
area.save('saved_image', 'jpeg')
Run Code Online (Sandbox Code Playgroud)

我的问题是打开html文件并首先拍摄屏幕截图以提供上述代码.

为此我尝试了以下内容,但都需要URL而不是html文件.另外两个都使用Firefox不适合我,但我已经安装了chrome并适当地修改了代码.

如何在python中使用Selenium WebDriver进行部分截图?

http://www.idiotinside.com/2015/10/20/take-screenshot-selenium-python/

我的代码是:

from selenium import webdriver

driver = webdriver.Chrome()
driver.get('file_name')
driver.save_screenshot('image.png')
driver.quit()
Run Code Online (Sandbox Code Playgroud)

哪个回报:

{"code":-32603,"message":"Cannot navigate to invalid URL"}
Run Code Online (Sandbox Code Playgroud)

显然,文件名不是网址,因此很清楚.如果你把它传递给一个网站,它的工作正常.获取html加载和拍照的任何帮助将不胜感激!它不必涉及Selenium.

html python selenium bokeh

5
推荐指数
2
解决办法
9739
查看次数