独立脚本(无jupyter)中的交互式数据帧散点图

时间:2019-06-04 19:57:40

标签: python pandas matplotlib bokeh pyviz

TL / DR:我正在尝试做的事情:

  1. 使用数据框(df中存在大量现有数据集)
  2. 作为独立脚本运行(无jupyter)
  3. 能够轻松地交互/浏览数据
  4. 简单但完整的示例(看到很多代码片段最终无法正常工作)

过去,我一直在使用dataframe,matplotlib和tkinter做得很好,但是我开始用数据集大小来达到性能极限。似乎最近集中在数据分析和库上,我认为我可以使事情看起来更现代,并以更少的代码提高交互性。问题的一部分似乎是做事的方式太多,尚不清楚当前/最佳实践是什么,甚至如何做到这一切。

我以为我真的很接近Bokeh示例,但是后来我发现“散点图”不再是bokeh.plotting或bokeh.charts模块的一部分,并分解为bkcharts项目。不,它被移到了holoviews还是holoplot或hvplot ...让我们深入研究,好吧,似乎它已被移入PyViz,但使用了具有bokeh后端的hvplot。我对脑海中旋转的所有库和工具感到困惑。

如果有人可以向我展示一个具有上述要求的简单(但完整)示例,我将不胜感激?

这是使用了matplotlib和数据框的 OLD 简化示例(为简化起见,删除了tkinter交互式内容):

import matplotlib.pyplot as plt
from io import StringIO
import pandas as pd

data_ssv = """tone_amp_0  tone_freq_0     SNR
75.303        628.0  68.374
84.902       8000.0  61.292
92.856        288.0  70.545
70.000       2093.0  35.036
76.511       6834.0  66.952 """

data = pd.read_table(StringIO(data_ssv), sep="\s+", header=0)

x_points=data.loc[:, ['tone_amp_0']]
y_points=data.loc[:, ['SNR']]
z_points=data.loc[:, ['tone_freq_0']]

fig = plt.figure()
ax = plt.axes()

ax.scatter(x_points, y_points, c=z_points, cmap='hsv');

plt.show()

更新:

这是我到目前为止所获得的最接近的数据,但数据未绘制:

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

data_ssv = """tone_amp_0  tone_freq_0     SNR
75.303        628.0  68.374
84.902       8000.0  61.292
92.856        288.0  70.545
70.000       2093.0  35.036
76.511       6834.0  66.952 """

data = pd.read_table(StringIO(data_ssv), sep="\s+", header=0)

p = figure(x_axis_label='tone_amp_0', y_axis_label='SNR')

p.circle(x=data.loc[:, ['tone_amp_0']], y=data.loc[:, ['SNR']])

output_file("basic_interactive_plot.py.html")

show(p)

0 个答案:

没有答案