- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在使用 IPython Notebook 和 Matplotlib 来可视化一些数据,并使用内联显示模式(即我想在 IPython Notebook 的 Web 界面上显示我的绘图并与之交互)。
我有一个显示几个不同图表的图,我希望有一个交互式界面(例如一组复选框),允许我隐藏或显示图表。
我的情节是这样的:
我换句话说:我有一个图,其中显示许多不同的图表,每个图表都是一条线,并且有自己的图例。我想在图中添加一组复选框,每个复选框对应一个图表。当检查点被选中时,图表将可见,当未选中时,图表将消失。
最佳答案
为此,您需要引用由您的绘图例程创建的艺术家。附加到 DataFrame 对象的绘图方法返回它们绘制的 Axes 对象(这对于简单的事情很有用,但使复杂的事情变得不可能)因此,一些绘图代码:
%matplotlib notebook
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
def pandas_plot(ax, df, style_cycle, **kwargs):
"""
Plot a pandas DataFrame
Parameters
----------
ax : matplotlib.axes.Axes
The axes to plot to
df : pd.DataFrame
The data to plot
style_cycle : Cycler
Something that when iterated over yields style dict
Returns
-------
ret : dict
Dictionary of line2d artists added
"""
ret = {}
x = df.index
for n, sty in zip(df.columns, style_cycle):
sty.update(kwargs)
ln, = ax.plot(x, df[n], label=n, **sty)
ret[n] = ln
ax.legend()
return ret
现在一些用于设置小部件界面的代码(这比您要求的要多,但这是我从 scipy 演讲中预先制作的):
from IPython.html.widgets import *
from IPython.display import display
def widget_function_factory(arts):
"""
Generate fulnction + args to pass to interactive
Parameters
----------
arts : dict
dictionary of Line2D
"""
name = Dropdown(options=list(arts.keys()))
def set_all(_, old_line, new_line):
ln = arts[new_line]
lw.value = ln.get_lw()
alph.value = ln.get_alpha() or 1
visible.value = ln.get_visible()
markevery.value = ln.get_markevery()
marker.value = ln.get_marker()
def set_lw(_, old_lw, new_lw):
ln = arts[name.value]
arts[name.value].set_lw(new_lw)
arts[name.value].axes.legend()
def set_alpha(_, old_value, new_value):
ln = arts[name.value]
ln.set_alpha(new_value)
ln.axes.legend()
def set_visible(_, old_value, new_value):
ln = arts[name.value]
ln.set_visible(new_value)
ln.axes.legend()
def set_markevery(_, old_value, new_value):
ln = arts[name.value]
ln.set_markevery(new_value)
def set_marker(_, old_value, new_value):
ln = arts[name.value]
ln.set_marker(new_value)
ln.axes.legend()
lw = FloatSlider(min=1, max=5, description='lw: ')
alph = FloatSlider(min=0, max=1, description='alpha: ')
visible = Checkbox(description='visible: ')
markevery = IntSlider(min=1, max=15, description='markevery: ')
marker = Dropdown(options={v:k for k, v in matplotlib.markers.MarkerStyle.markers.items()},
description='marker: ')
name.on_trait_change(set_all, 'value')
lw.on_trait_change(set_lw, 'value')
alph.on_trait_change(set_alpha, 'value')
visible.on_trait_change(set_visible, 'value')
markevery.on_trait_change(set_markevery, 'value')
marker.on_trait_change(set_marker, 'value')
display(name, lw, alph, marker, markevery, visible)
set_all(None, None, name.value)
绘制:
th = np.linspace(0, 2*np.pi, 128)
df = pd.DataFrame({'sin': np.sin(th),
'shift +': np.sin(th + np.pi / 3),
'shift -': np.sin(th - np.pi / 3)}, index=th)
fig, ax = plt.subplots()
from cycler import cycler
style_cycle = cycler('color',['r', 'black', 'pink']) + cycler('marker', 'sxo')
#style_cycle = [{'color': 'r', 'marker': 's'},
# {'color': 'black', 'marker': 'x'},
# {'color': 'pink', 'marker': 'o'}]
arts = pandas_plot(ax, df, style_cycle, markevery=10)
vlns = []
for x in np.arange(1, 7) * np.pi/3:
vlns.append(plt.axvline(x, color='k', linestyle=':'))
plt.axhline(0, color='k', linestyle=':')
并创建控件
widget_function_factory(arts)
cycler
是一个从 mpl 衍生出来的副项目(并且将成为 1.5 的必需 dep)。目前可以通过 pip 安装。
参见https://gist.github.com/tacaswell/7a0e5e76fb3cafa3b7cd#file-so_interactive_demo-ipynb用于演示笔记本。
正在进行的工作使这变得更容易(以便 mpl 艺术家可以自动构建他们的 UI 元素)。实现这一目标的基础设施是 mpl 2.1 的主要目标之一。
关于python - IPython Notebook/Matplotlib : Interactive show/hide graphs on a plot, 有可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33113031/
我刚刚将我的 Ember 插件从 3.0 版升级到了 3.8 版,现在我收到了这个警告: Interaction added to non-interactive element no-invalid
我正在尝试使用git add --interactive有选择地向我的索引添加一些更改,但我不断收到“您编辑的大块不适用。再次编辑...”消息。即使我选择 e 选项,我也会收到此消息,并立即保存/关闭
我正在尝试将 SelectedDateChanged 绑定(bind)到一个命令,这样我就可以将它放在我的 ViewModel 中,但无论如何它都不会接受此代码 http://pastebin.com
有时我的应用程序 UI 中有两个共享按钮(取决于状态)。它们可以共享相同的数据,但位于 UI 的不同部分。我们想要分析从哪个按钮(UI 的一部分)执行了共享。我希望使用 fieldsObject这部分
我发现了一些这样的代码, 1 (require 'cl-lib) 2 (require 'company) 3 4 (defun company-sample-backend (command
背景 gbm 包 的引用手册指出,interact.gbm 函数计算 Friedman 的 H 统计量以评估变量相互作用的强度。 H 统计量的范围为 [0-1]。 dismo 包的引用手册没有引用任何
免责声明:我知道它不是有效的 HTML。我想了解为什么不允许这样做? W3C 建议使用像 button 这样的交互元素。或 a不得包含其他交互元素。 我可以找到很多提到这条规则和一些变通办法的资源,还
在我的网络应用程序中, map 最初设置为非交互式(用户无法在 map 上移动): var map = new mapboxgl.Map({ container: 'map', sty
我正在尝试设置它,以便当我使用 applescript 打开我的插画文件时没有用户交互,但标准是: tell application id "com.adobe.Illustrator" activa
我已经在几个项目中使用了 System.Windows.Interactivity DLL,没有任何问题。现在在我最新的项目中我无法让它工作。我总是收到以下错误: 命名空间“http://schema
Presto 网站(和其他文档)讨论了 Presto 上的“交互式查询”。什么是“交互式查询”?来自 Presto 网站:“Facebook 使用 Presto 对多个内部数据存储进行交互式查询,包括
当我尝试执行 mvn release: Perform 时,出现此错误 [ERROR] Provider message: [ERROR] The svn command failed. [ERROR
我正在尝试使用 C# Interactive 尝试一些 mongodb 驱动程序,但是一旦我尝试创建一个 MongoClient我收到以下异常: > var client = new MongoCli
我想使用IB Api,但无法弄清楚我们如何请求完整的符号列表和信息。 在我找到的文档中:reqScannerParameters()-但不清楚如何获取例如纳斯达克股票的 list ? 有没有更好的办法
我已经开始将 IB 与 IBridgePy 结合使用,我想知道是否有可能以某种方式执行任何回溯测试,有没有人如何做到这一点? 最佳答案 IB 没有现成的回测/重放工具。基本上,您必须下载历史数据并通过
我是否编译 Racket 程序似乎对运行时性能没有影响。 通过编译改进的只是最初加载文件吗?换句话说,是否正在运行 racket src.rkt即时进行 jit 编译,这就是为什么我认为编译与交互式没
在解决一些练习时,我发现了 2 个重复出现的 IO 模式。第一个模式已经被方便的interact覆盖了。第二种模式类似,但按行处理输入。 如何编写 interactLinewise 方法? 最佳答案
我正在尝试使用来自 Fsi 的 F# 程序集,但似乎无法找到一种方法来获取模块中定义的方法列表以便调用它们。 这是我尝试使用的示例文件。在关注 "exposing methods that are c
我正在开发一个基本的 Haskell 程序,其中包含这行代码: interact (unwords . (map pigLatin . words) ) 但是,在将字符串数组传递给我的 pigLati
我不确定我的措辞是否正确。当一个元素被放入放置区时,我需要知道该元素相对于它所在的放置区的 x/y 位置。 非常感谢任何见解。谢谢! 最佳答案 这绝对应该由图书馆提供,但既然不是,我就是这样完成的:
我是一名优秀的程序员,十分优秀!