小编PJW*_*PJW的帖子

为移动视图启用触摸滚动,Bokeh app

我有一个使用Bokeh创建并在Heroku上托管的Web应用程序.我最近为应用程序创建了一个移动样式,可以在这里查看:

https://btac-web-plots.herokuapp.com/avyview?style=snowpacktracker-mobile

但是,在iOS移动设备上查看时,单指触摸滚动不起作用.作为一个黑客解决方法,我设置了我的html文件()width: 95%.invcontent-wrapper标签index.html.这会在触摸滚动功能的右侧显示背景的垂直条带,就像传统的滚动条一样.我还在垂直条上添加了向上和向下箭头,以引导用户将其用作滚动条.

如何为整个屏幕启用触摸滚动?问题可能是返回的Bokeh文档不允许触摸滚动交互......?

我在Bokeh中使用目录格式(使用Bokeh服务器),我的index.htmlJinja模板文件包含以下相关部分:

CSS:

        {% if display_style|string() == "snowpacktracker-mobile" %}
          <style>
            html {
              width: 100%;
              height: 100%;
            }
            body {
              width: 100%;
              height: 100%;
              margin: auto;
              background-color: lightgray;
              overflow-y: scroll;
              -webkit-overflow-scrolling: touch;
              float: left;
            }
           .invcontent-wrapper {
             padding: 0px;
             min-height: 200px;
             width: 95%; /*allows for exposed background on the side*/
             position: relative;
            }
            container { /*this holds arrows so the user knows to …
Run Code Online (Sandbox Code Playgroud)

html css mobile ios bokeh

8
推荐指数
1
解决办法
695
查看次数

页面上所有脚本完全加载后运行js函数

当我的页面完全加载时,我试图运行一个简单的 JavaScript 函数。例如这个函数:

<script type="text/javascript">
function changeSize() {
  var el = document.getElementById("my-id");
  el.style.height = "500px";
  };
</script>
Run Code Online (Sandbox Code Playgroud)

我的页面有一个从外部 URL 检索的长时间加载(秒)脚本,该脚本呈现 html 正文中的主要内容。

我正在使用 Bootstrap,其中我的主体部分base.html是:

<body>

  <div class="container-fluid">
    {% block header %}{% endblock %}

    {% block content %}{% endblock %}

    {% block footer %}{% endblock %}

  </div>

  <!-- jQuery first, then Popper.js, then Bootstrap JS -->
  <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>
  <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>
</body>
Run Code Online (Sandbox Code Playgroud)

内容块通过外部 html 文件加载,即:

{% extends 'base.html' %}

{% block header …
Run Code Online (Sandbox Code Playgroud)

html javascript css jquery jinja2

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

Bokeh gridplot:使用 sizing_mode='stretch_both' 定义图形的不同高度

是否可以为 Bokehgridplot布局中的各个图形定义不同的高度 ( bokeh==1.0.4)?

例如,我有三个具有三种不同高度的人物:

p1 = figure(
     name="fig1",
     width=500, height=500,
)

p2 = figure(
     name="fig2",
     width=500, height=1000,
)

p1 = figure(
     name="fig3",
     width=500, height=100,
)
Run Code Online (Sandbox Code Playgroud)

然后我将数字放入 agridplot并将根添加到curdoc()

grid = gridplot(
  children = [p1,p2,p3],
  ncols=1,
  sizing_mode='stretch_both',
)

curdoc().add_root(grid)
Run Code Online (Sandbox Code Playgroud)

但是,当我渲染 Bokeh 文档(使用 Bokeh 服务器)时,每行的高度是相同的,并进行缩放以填充包含的 div 中的可用空间。

如果我使用sizing_mode='scale_width'人物高度,则会被识别并使用。为什么忽略高度sizing_mode='stretch_both'

layout()请注意,如果我使用而不是,此行为是相同的gridplot()

python bokeh

7
推荐指数
0
解决办法
505
查看次数

Matplotlib boxplot仅显示最大和最小传单

我正在使用plt.boxplot()命令制作标准的Matplotlib箱图.我创建boxplot的代码行是:

bp = plt.boxplot(data, whis=[5, 95], showfliers=True)
Run Code Online (Sandbox Code Playgroud)

因为我的数据分布很大,所以我在胡须的范围之外得到了很多传单.为了获得更清晰的出版质量情节,我想只展示单个传单.而在最低点.数据的值,而不是所有传单.这可能吗?我没有在文档中看到任何内置选项来执行此操作.

(我可以将胡须的范围设置为最大/分钟,但这不是我想要的.我想将胡须保持在第5和第95百分位).

下面是我正在研究的数字.注意飞行员的密度. 盒形图

python matplotlib boxplot

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

移动端滚动,页面跳转至顶部

我的网络应用程序在这里: https ://www.snowpacktracker.com/btac/snowpacktracker

在桌面上,滚动的一切都很好。然而,在移动设备上(特别是在 iPad 上),任何触摸向下滚动的尝试都会使页面回到顶部。我注意到,如果我克服跳跃(这很困难)并让页面向下滚动以使标题不可见,则滚动可以正常工作,所以也许标题中的某些内容是有原因的。无论出于何种原因,我无法在将开发工具设置为移动尺寸的桌面上重现此内容,只能在移动设备上重现(但也许这只是我没有正确使用开发工具)。

以下是演示该问题的屏幕录制(在 iPad 上): https ://vimeo.com/661613444

以下是有关我的设置的一些最少信息:

Bokeh Web 应用程序,使用 Flask 在 html 模板中渲染 Bokeh 内容 ( base.html)。container-fluid除了导航按钮的Bootstrap 类之外,标头还使用 Bootstrap类。我还有一个自定义style.css用于覆盖基本模板中的某些类。相关的style.css可能是:

.placeholderbokehapp-snowpack {
  background-color: white;
  padding-right: 20px;
  padding-left: 20px;
  padding-top: 15px;
  padding-bottom: 15px;
  min-height: 300px;
}
Run Code Online (Sandbox Code Playgroud)
.container-fluid {
  padding-right: 20px;
  padding-left: 20px;
  min-width: 1100px;
}
Run Code Online (Sandbox Code Playgroud)

除了导入 Bokeh、jquery、popper 和 bootstrap 的 js 库之外,我还有自定义 js 来定义用于加载的旋转轮,以及一个调整大小传感器来在页面尺寸发生变化时停止旋转轮。

散景==2.4.1,Flask==1.1.2,jquery==3.3.1,popper==1.14.3,bootstrap==4.1.3

很乐意根据需要提供任何其他详细信息。

html css mobile scroll bokeh

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

通过重复输入来绘制置信度和预测间隔

我有两个变量的相关图,x轴上的预测变量(温度)和y轴上的响应变量(密度)。我最适合的最小二乘回归线是二阶多项式。我还要绘制置信度和预测间隔。答案中描述的方法似乎很完美。但是,我的数据集(n = 2340)对许多(x,y)对都有重复的条目。我得到的情节看起来像这样: 在此处输入图片说明

这是我的相关代码(从上面的链接答案中略作修改):

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from statsmodels.sandbox.regression.predstd import wls_prediction_std
import statsmodels.formula.api as smf    
from statsmodels.stats.outliers_influence import summary_table

d = {'temp': x, 'dens': y}
df = pd.DataFrame(data=d)

x = df.temp
y = df.dens

plt.figure(figsize=(6 * 1.618, 6))
plt.scatter(x,y, s=10, alpha=0.3)
plt.xlabel('temp')
plt.ylabel('density')

# points linearly spaced for predictor variable
x1 = pd.DataFrame({'temp': np.linspace(df.temp.min(), df.temp.max(), 100)})

# 2nd order polynomial
poly_2 = smf.ols(formula='dens ~ 1 + temp + I(temp …
Run Code Online (Sandbox Code Playgroud)

python regression pandas statsmodels

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

使用StatsModels绘制二阶多项式的分位数回归

我在这里遵循StatsModels示例来绘制分位数回归线.只需对我的数据稍作修改,该示例效果很好,生成此绘图(请注意,我已修改代码以仅绘制0.05,0.25,0.5,0.75和0.95分位数): 在此输入图像描述

但是,我想绘制OLS拟合和相应分位数的二阶多项式拟合(而不是线性).例如,以下是相同数据的二阶OLS行: 在此输入图像描述

如何修改链接示例中的代码以生成非线性分位数?

这是我从链接示例中修改的相关代码,以生成第一个图:

d = {'temp': x, 'dens': y}
df = pd.DataFrame(data=d)

# Least Absolute Deviation
# 
# The LAD model is a special case of quantile regression where q=0.5

mod = smf.quantreg('dens ~ temp', df)
res = mod.fit(q=.5)
print(res.summary())

# Prepare data for plotting
# 
# For convenience, we place the quantile regression results in a Pandas DataFrame, and the OLS results in a dictionary.

quantiles = [.05, .25, .50, .75, .95]
def fit_model(q):
    res = …
Run Code Online (Sandbox Code Playgroud)

python regression pandas statsmodels

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

散景日期时间轴,控制小刻度

我有一个提供散景图的网络应用程序(使用散景 v0.12.7)。x 轴是日期时间,显示用户定义的天数(日期范围默认为 31 天)。无需在 Bokeh 中定义任何刻度参数,主要刻度数默认为 5,如此处的实时 Web 应用程序所示:

https://btac-web-plots.herokuapp.com/avyview?style=snowpacktracker

我想在主要刻度之间的每一天显示次要刻度。我尝试了以下方法,它允许任何日期范围长度,并每 5 天指定一个主要刻度(start并且end是 Pandas 日期时间索引):

num_days = ((end - start) / np.timedelta64(1, 'D')).astype(int)
fig.xaxis.ticker = DaysTicker(
  days = np.arange(1, num_days, 5),
  num_minor_ticks = 4
  )
Run Code Online (Sandbox Code Playgroud)

这会每 5 天正确显示主要刻度,但不显示次要刻度。另一个潜在的解决方案可能是每天绘制主要刻度,然后将刻度标签设置为不可见,除了每 5 天(不确定如何实现这一点......)。

在这些图上显示每日小刻度的最佳方法是什么?

这是我的绘图代码的一部分(包括DaysTicker),以第一个面板为例:

fig = figure(
  title="New Snow, SWE, Snow Depth, and Settlement",
  name="newsnow_extra_fig",
  x_axis_type="datetime",
  y_axis_label='HN24 / SWE (in)',
  width=width, height=height2,
  tools=tools,
  toolbar_sticky=False,
  logo=None
  )
fig.y_range = Range1d(-12, 30)
fig.extra_y_ranges = {"Depth": Range1d(start=-72, end=180)} …
Run Code Online (Sandbox Code Playgroud)

python datetime bokeh

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

删除重复项,保留最近的日期,Pandas数据帧

我有一个包含两列的Pandas数据框:一个datetime列和一个表示站ID的整数列.我需要一个具有以下修改的新数据框:

对于每组重复STATION_ID值,请保留具有最新条目的行DATE_CHANGED.如果STATION_IDall 的重复条目包含相同的条目,DATE_CHANGED则删除重复项并保留单行STATION_ID.如果该STATION_ID值没有重复项,只需保留该行即可.

数据框(按排序STATION_ID):

              DATE_CHANGED  STATION_ID
0      2006-06-07 06:00:00           1
1      2000-09-26 06:00:00           1
2      2000-09-26 06:00:00           1
3      2000-09-26 06:00:00           1
4      2001-06-06 06:00:00           2
5      2005-07-29 06:00:00           2
6      2005-07-29 06:00:00           2
7      2001-06-06 06:00:00           2
8      2001-06-08 06:00:00           4
9      2003-11-25 07:00:00           4
10     2001-06-12 06:00:00           7
11     2001-06-04 06:00:00           8
12     2017-04-03 18:36:16           8
13     2017-04-03 18:36:16           8
14     2017-04-03 18:36:16           8 …
Run Code Online (Sandbox Code Playgroud)

python pandas

3
推荐指数
1
解决办法
2752
查看次数

如何在 sqlite3 中创建多个 ":memory:" 数据库

我正在尝试使用 sqlite3 创建多个内存数据库(如果可能)。对于磁盘数据库,我会这样做:

import sqlite3 

db1 = sqlite3.connect('/mnt/tmp/db1.db')
db2 = sqlite3.connect('/mnt/tmp/db2.db')
db3 = sqlite3.connect('/mnt/tmp/db3.db')
Run Code Online (Sandbox Code Playgroud)

如果我改为:

db1 = sqlite3.connect("file::memory:?cache=shared")
db2 = sqlite3.connect("file::memory:?cache=shared")
db3 = sqlite3.connect("file::memory:?cache=shared")
Run Code Online (Sandbox Code Playgroud)

这会导致三个独立的内存数据库吗?这似乎创建了到共享内存数据库的三个连接,这不是我想要的。

然后我继续在数据库(磁盘上或内存中)上创建游标:

cur_db1 = db1.cursor()
cur_db2 = db2.cursor()
cur_db3 = db3.cursor()
Run Code Online (Sandbox Code Playgroud)

如果无法使用多个内存数据库,我的最佳选择是使用 RAM 磁盘数据库(如在我的第一个代码块中),然后"PRAGMA journal_mode=MEMORY"在这些连接上执行吗?

sqlite python-2.7

3
推荐指数
1
解决办法
831
查看次数

Python,将时间戳字符串转换为 MMDDHH 整数

我有一个时间戳字符串,例如:

2019-01-04 21:15:00

我想将其转换为格式为 MMDDHH 的整数,四舍五入到最接近的小时。在这种情况下,结果将是:

10421

首选 Python 日期时间解决方案,但 Pandas 也可以。

python datetime python-2.7 pandas

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