2つのパンダデータフレームがdata
ありdata_queue
、同じ構造で同様のデータが含まれています。前者は線としてプロットされ、後者は散布図としてプロットされます。両方のチャートでフィルタリングするには、共有セレクターが必要です。以下の例では、セレクターは、を削除しscatter
た場合にのみ機能します。
Altairでそれを達成する方法は?
注:layer
折れ線グラフにツールチップ、ルール、テキストなどを追加するには、最後が必要です。読みやすくするために、ここではその部分を省略しました。
input_dropdown = alt.binding_select(options=data.koplus_name.unique().tolist())
selection = alt.selection_single(fields=['koplus_name'], bind=input_dropdown, name='Koplus', init={'koplus_name': input_dropdown.options[0]})
line = alt.Chart(data).mark_line().encode(
x=alt.X('yearmonthdatehoursminutes(timestamp)', title='timestamp', scale=alt.Scale(domain=(str(data.timestamp.min()), str(data.timestamp.min() + pd.Timedelta(value=1, unit='D'))))),
y=alt.Y('value', axis=alt.Axis(title=''), scale=alt.Scale(domain=(0, data.value.max()))),
color=alt.Color('variable', legend=alt.Legend(title=None)),
)
scatter = alt.Chart(data_queue).mark_point().encode(
x='green time',
y='value',
)
chart = line + scatter
layer = alt.layer(
chart
).add_selection(
selection
).transform_filter(
selection
).properties(
width=800, height=250
).interactive(bind_y=False)
データが同じ選択に応答するようにする場合は、同じデータソースの一部である必要があります。グラフを作成する前にパンダのデータセットを結合するか、Altair文法内のルックアップ変換を使用してデータセットを結合することができます。
いくつかの小さなデータセットを使用した2番目のアプローチの例を次に示します。
import numpy as np
import pandas as pd
import altair as alt
df1 = pd.DataFrame({
'x': np.arange(100),
'y': np.random.randn(100).cumsum()
})
df2 = pd.DataFrame({
'x': np.arange(100),
'z': np.random.randn(100).cumsum()
})
selection = alt.selection_interval(encodings=['x'])
base = alt.Chart(df1).transform_lookup(
lookup='x',
from_=alt.LookupData(data=df2, key='x', fields=['z'])
).mark_point(color='steelblue').encode(
x='x:Q',
color=alt.condition(selection, alt.value('steelblue'), alt.value('lightgray'))
)
alt.layer(
base.encode(y='y:Q'),
base.encode(y='z:Q')
).add_selection(
selection
)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加