Multiple Time Series -Diagramm in Altair mit wählbaren ZeitreihenPython

Python-Programme
Anonymous
 Multiple Time Series -Diagramm in Altair mit wählbaren Zeitreihen

Post by Anonymous »

Ich möchte mit den folgenden Eigenschaften ein Diagramm in Altair erstellen: < /p>

Es zeigt mehrere Zeitreihen < /li>
Ich kann auswählen, welche Zeitreihen angezeigt werden, indem Sie auf die Legende klicken. In der Legende nicht ausgewählt, können Sie es in der Legende immer noch sehen.

Code: Select all

import pandas as pd
import altair as alt

dates = pd.date_range(start="2023-01-01", periods=10)
data = {
"Date": dates.tolist() * 3,
"Value": [10, 20, 15, 30, 25, 35, 40, 45, 50, 55] +
[5, 15, 10, 20, 15, 25, 30, 35, 40, 45] +
[2, 12, 8, 18, 14, 22, 28, 32, 38, 42],
"Device": ["Device A"] * 10 + ["Device B"] * 10 + ["Device C"] * 10
}
df = pd.DataFrame(data)

# Create a selection object for the legend
aselection = alt.selection_multi(fields=["Device"], bind="legend")

# Create the Altair chart
achart = alt.Chart(df).mark_line().encode(
x="Date:T",
y="Value:Q",
color="Device:N"  # Keep the color consistent
).transform_filter(
aselection  # Filter data based on the selection
).add_selection(
aselection
).properties(
title="Interactive Time Series Plot"
)

achart
Es scheint, dass die Transformation_Filter eine nicht ausgewählte Serie aus dem Diagramm verschwinden lässt, aber dies zwingt es auch, aus der Legende zu verschwinden. Ich möchte, dass es aus dem Diagramm verschwindet, aber in der Legende bleibt.

Code: Select all

chart = alt.Chart(df).mark_line().encode(
x="Date:T",
y="Value:Q",
color="Device:N",  # Keep the color consistent
opacity=alt.condition(aselection, alt.value(1), alt.value(0.2))  # Hide unselected lines
).add_selection(
aselection
).properties(
title="Interactive Time Series Plot"
)
< /code>
Jetzt funktioniert die Legende so, wie ich es gewünscht habe (Sie können mehrere Serien durch Verschiebungsklicken auswählen), aber eine nicht ausgewählte Zeitreihe wird weiterhin in der Tabelle angezeigt, nur in blasserer Farbe. Wenn ich das Diagramm interaktiv mache, klickt der Endbenutzer häufig versehentlich auf eine nicht ausgewählte Serie. Dies ist also definitiv auch nicht das, was ich möchte. Gibt es eine Möglichkeit, das Diagramm interaktiv zu gestalten, aber das Klicken zu deaktivieren?achart = alt.Chart(df).mark_line().encode(
x="Date:T",
y="Value:Q",
color="Device:N",  # Keep the color consistent
).transform_filter(
aselection
).add_selection(aselection)

chart2 = alt.Chart(df).encode(
x="Date:T",
y="Value:Q",
color="Device:N",  # Keep the color consistent  # Hide unselected lines
).mark_line(opacity=0).properties(
title="Interactive Time Series Plot"
)

chart2 + achart.interactive()
Gibt es eine Möglichkeit, das zu tun, was ich will?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post