TL / DR:我正在尝试做的事情:
过去,我一直在使用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)