En mi libro de Python tengo ejemplos de gráfico en Bokeh. Los ejemplos los pueden ver en este repo público: https://github.com/Serulab/Py4Bio
El problema es que un módulo de Bokeh fue deprecado y ya no anda mi código.
Por ejemplo este programa:
from bokeh.charts import Scatter, output_file, show
from pandas import DataFrame
df = DataFrame.from_csv('../../samples/fishdata.csv')
scatter = Scatter(df, x='PC1', y='PC2', color='feeds',
marker='species', title=
'Metabolic variations based on 1H NMR profiling of fishes',
xlabel='Principal Component 1: 35.8%',
ylabel='Principal Component 2: 15.1%')
scatter.legend.background_fill_alpha = 0.3
output_file('scatter.html')
show(scatter)
Produce este grafico
https://github.com/Serulab/Py4Bio/blob/master/samples/scatter.png
No funciona porque no está mas bokeh.charts en las versiones nuevas de Bokeh.
Asi que estoy convirtiendo esto con el modulo plotting, y llegué a esto:
draft
from bokeh.plotting import figure, output_file, show
from pandas import read_csv
df = read_csv('../samples/fishdata.csv')
p = figure(plot_height=600, plot_width=700,
title = 'Metabolic variations based on 1H NMR profiling of fishes')
p.xaxis.axis_label = 'Principal Component 1: 35.8%'
p.yaxis.axis_label = 'Principal Component 2: 15.1%'
p.scatter('PC1', 'PC2', source=df, size=12, fill_alpha=0.3)
This file has been truncated. show original
que produce este gráfico:
https://github.com/Serulab/Py4Bio/blob/master/samples/bokeh_plot.png
Como pueden ver están los datos pero falta que se distingan según 2 parámetros, uno para forma y otro para color, algo que antes podía hacer sin problema.
¿Alguien sabe de Bokeh como para producir ese mismo gráfico?
Una solución es decir que usen un Bokeh viejo, pero me parece mejor adaptar mi código para que funcione en la última versión.
Ya casi lo tengo, falta la legenda, pero lo importante que es seleccionar colores y markadores en función de los datos ya está logrado:
gistfile1.txt
from bokeh.plotting import figure, show
from pandas import read_csv
from bokeh.models.markers import marker_types
from bokeh.transform import factor_cmap, factor_mark
df = read_csv('samples/fishdata.csv')
all_markers = [mt for mt in marker_types]
SPECIES = list(set(df['species']))
nbr_sp = len(SPECIES)
This file has been truncated. show original
Mas tarde actualizo el código en el libro y en las Jupyter notebooks.