Bokeh 3.1 lançado
Temos o prazer de anunciar o lançamento do Bokeh 3.1! Esta versão inclui várias atualizações importantes, incluindo eventos de documento aprimorados, sobreposições de seleção persistentes, novos seletores de data, data e hora e visuais mais avançados para Textglifos.
Esta postagem descreve as atualizações que achamos que serão especialmente úteis para a maioria dos usuários (consulte o changelog e as notas de versão para todos os detalhes).
Documentar eventos
Um recurso solicitado há muito tempo é a capacidade de definir retornos de chamada JavaScript para eventos de documento, como “pronto” ou “conexão perdida” . Anteriormente, apenas o evento “ready” existia e suportava apenas retornos de chamada do Python. Agora, todos os eventos de documento - incluindo um novo evento de "conexão perdida" - suportam callbacks Python e Javascript:
DocumentReady— emitido quando o BokehJS terminou a inicialização de um determinado documentoConnectionLost— emitido quando a conexão do websocket com um servidor Bokeh foi perdida
curdoc().js_on_event("connection_lost", CustomJS(code="""
alert("Connection lost!")
""")
Os estilos CSS agora podem ser aplicados programaticamente, com um novo Stylesobjeto:
style = Styles(
display="grid",
grid_template_columns="auto auto",
column_gap="10px",
)
grid = Div(style=style)
from bokeh.models import InlineStyleSheet
stylesheet = InlineStyleSheet(
css=".bk-slider-title { background-color: lightgray; }"
)
slider = Slider(
value=10, start=0, end=100, step=0.5, stylesheets=[stylesheet]
)
Sobreposições de seleção persistente
Bokeh agora oferece suporte a sobreposições persistentes de caixa, poli e seleção de laço. Eles podem ser ativados definindo a persistentpropriedade nas respectivas ferramentas selecionadas. Esse recurso permite que os usuários interajam com as sobreposições selecionadas após a conclusão da seleção inicial, movendo-as ou alterando sua forma e tamanho. Os usuários podem refinar as seleções conforme necessário, sem precisar começar do zero. As sobreposições de seleção persistem entre as mudanças de ferramenta, para que os usuários possam fazer uma seleção, deslocar ou ampliar e, em seguida, continuar a refinar a mesma seleção.
Melhorias visuais no glifo de texto
O Textglifo existente era limitado a texto simples, então os usuários tiveram que mudar para anotações como LabelSetou compor vários glifos para ter visuais de texto mais ricos. Agora, os usuários podem configurar visuais de plano de fundo e borda, raio de borda, preenchimento e ancoragem para Textglifo.
No futuro, o Textglifo se tornará a principal ferramenta usada para rótulos e anotações de texto.
Cantos arredondados
Todos os glifos retangulares ( Rect, Block, e ), assim como Quadganharam suporte para uma nova propriedade. Essa propriedade oferece cantos arredondados para todos os glifos e funciona para todos os três back-ends:HBarVBarBoxAnnotationborder_radius
Legendas
Anteriormente, as legendas suportavam layouts de linha ou coluna única, dependendo de sua orientação. No Bokeh 3.1, é possível criar legendas em grade usando as propriedades nrowse ncols.
Os títulos das legendas podem ser posicionados em ambos os lados de uma legenda e suportam texto de várias linhas. Por fim, também há novas propriedades para configurar fundos de itens de legenda.
Widgets de data, data e hora
Bokeh já tinha um DatePicker, que permitia selecionar um único valor de data. Esta versão adiciona suporte para escolher várias datas e intervalos de datas. O suporte também foi adicionado para horários e datas:
DatetimePickerDatetimeRangePickerMultipleDatetimePickerDateRangePickerMultipleDatePickerTimePicker
Todos os novos widgets suportam formatação personalizada de data e hora.
Preencher áreas na anotação Slope
A Slopeanotação agora oferece suporte à configuração de áreas de preenchimento acima e abaixo da linha inclinada definida pela anotação:
Pilhas de imagens mapeadas por cores
Esta versão também inclui suporte para pilhas de imagens mapeadas por cores. Cada imagem na pilha tem sua própria cor e a pilha é renderizada usando uma média ponderada dessas cores individuais:
Versões futuras se basearão neste trabalho para adicionar novas interações, por exemplo, níveis de mapeamento de cores de pilhas de imagens individualmente, para que toda a pilha possa ser esfregada interativamente.
Barras de cores
O método de conveniência construct_color_barque foi adicionado recentemente aos renderizadores de contorno era tão bom que decidimos adicioná-lo a todos os renderizadores de glifos. O método procurará um mapeador de cores definido para qualquer propriedade de cor conhecida e retornará uma barra de cores configurada apropriadamente:
# use the field name of the column source
cmap = linear_cmap('counts', palette="Spectral6", low=min(y), high=max(y))
r = p.scatter(x='x', y='y', color=cmap, size=15, source=source)
# automatically create a color bar from the scatter glyph renderer
color_bar = r.construct_color_bar(width=10)
O Bokeh 3.1 estará disponível em todos os canais regulares logo após o lançamento. Na maioria dos casos, você pode executar conda install bokehou pip install bokeh.
Se você deseja obter a versão disponível mais recente imediatamente, também pode instalar diretamente do canal Bokeh em anaconda.org , usando conda install -c bokeh bokeh.
Para obter mais informações sobre como instalar o Bokeh, consulte a seção Detalhes da instalação na documentação do Bokeh .
Próximos passos
Se você tiver dúvidas, nós o encorajamos a visitar o Discurso Bokeh ! Mantenedores de projeto amigáveis e uma comunidade de usuários do Bokeh estão lá para ajudá-lo a resolver quaisquer problemas que surgirem.
Os desenvolvedores interessados em se envolver podem visitar o guia do colaborador para obter orientação sobre práticas recomendadas, considerações técnicas e como começar.
Como sempre, agradecemos o feedback atencioso dos usuários e, especialmente, o trabalho de nossa comunidade de colaboradores para melhorar o Bokeh!





































![O que é uma lista vinculada, afinal? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)