Я строю многострочный график, используя один селектор, чтобы выделить линию.
Проблема в том, что когда я выбираю одну строку, а другие перекрашиваются, выбранная строка скрывается под некоторыми другими строками, в то время как я хотел бы, чтобы она была на переднем плане, чтобы быть полностью видимой. Я мог бы использовать alt.value('transparent')
, но это просто заставило бы исчезнуть все остальные строки, вместо этого я хотел бы, чтобы они были все еще видны и на заднем плане.
Есть ли способ сделать эту работу?
В моем примере ниже у меня есть 10 строк, и кажется, что vega-lite строит первую строку A, а затем над ней строку B, до линии L. Поэтому только последний столбец в DataFrame, строка L, полностью видимый, если выбран.
Заранее благодарю за помощь!
Вот код для воспроизведения диаграммы:
import pandas as pd
import numpy as np
import altair as alt
#Dataframe creation
df = pd.DataFrame(np.random.rand(15,10)+10,
index=np.arange(2001,2016),
columns=list('ABCDEFGHIL'))
df = df.reset_index()
df = df.melt(id_vars='index')
#chart creation
selection = alt.selection(type='single', fields=['variable'])
color = alt.condition(selection,
alt.Color('variable:N', legend=None),
alt.value('lightblue'))
line = alt.Chart(df).mark_line().encode(
y = 'value',
x = 'index:O',
color = color,
tooltip = 'variable:N'
).add_selection(
selection
).properties(
width=400
)
legend = alt.Chart(df).mark_point().encode(
x='variable:N',
color=color
).add_selection(
selection
).properties(
width=400
)
line & legend