TL / DR: что я пытаюсь сделать:
- Использовать фрейм данных (большой существующий набор данных в df)
- Запускать как отдельный скрипт (без jupyter)
- Уметь легко взаимодействовать / исследовать данные
- Простой, но полный пример (видно множество фрагментов кода, которые в итоге не работают)
В прошлом я былвсе в порядке с dataframe, matplotlib и tkinter, но я начинаю поражать стену производительности своим размером набора данных.Кажется, что со всем вниманием к анализу данных и библиотекам в последнее время я подумал, что смогу сделать вещи более современными и улучшить интерактивность с меньшим количеством кода.Часть проблемы, кажется, состоит в том, что слишком много способов сделать что-то, что неясно, каковы текущие / лучшие практики или даже как все это сделать.
Я думал, что был очень близок к примеру с Bokeh, но потом обнаружил, что Scatter больше не является частью модуля bokeh.plotting или bokeh.charts и был разбит на проект bkcharts.Нет, он был перемещен в holoviews или это holoplot или hvplot ... Давайте углубимся в это, хорошо, может быть, он был перенесен в PyViz, но использует hvplot с боке backend.Я так запутался со всеми библиотеками и инструментами, в которых вращается моя голова.
Я был бы очень признателен, если бы кто-нибудь показал мне простой (но полный) пример с вышеуказанными требованиями?
Здесьэто OLD значительно упрощенный пример с использованием matplotlib и dataframes (для простоты удален интерактивный материал 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)