Rumah >pembangunan bahagian belakang >Tutorial Python >Plot Altair dalam Streamlit: Bagaimana untuk menambah legenda?

Plot Altair dalam Streamlit: Bagaimana untuk menambah legenda?

WBOY
WBOYke hadapan
2024-02-09 13:30:041346semak imbas

Streamlit 中的 Altair 绘图:如何添加图例?

Kandungan soalan

Saya menggunakan streamlit dan memerlukan altair untuk melukis (kerana pilihan interpolasi tersedia).

Diberi kod mudah ini:

import streamlit as st
import altair as alt
import pandas as pd

data = pd.DataFrame({"x": [0, 1, 2, 3], "y": [0, 10, 15, 20], "z": [10, 8, 10, 1]})

base = alt.Chart(data.reset_index()).encode(x="x")

chart = alt.layer(
    base.mark_line(color="red").encode(y="y", color=alt.value("green")),
    base.mark_line(color="red").encode(y="z", color=alt.value("red")),
).properties(title="My plot",)

st.altair_chart(chart, theme="streamlit", use_container_width=True)

Ini menghasilkan graf ini:

Apakah cara yang betul untuk menambah legenda di sebelah angka?

Dalam dokumentasi saya melihat pilihan lagenda sebagai sebahagian daripada "warna", tetapi ini nampaknya selalu mengenai menggambarkan dimensi lain. Dalam kes saya, saya hanya mahu melukis garisan yang berbeza dan memplot legenda dengan warna masing-masing.


Jawapan Betul


Tukar data anda kepada format bingkai data panjang. Format ini lebih sesuai untuk mencipta legenda di altair kerana setiap baris dikaitkan dengan kategori. Kemudian gunakan kategori ini untuk pengekodan warna:

import streamlit as st
import altair as alt
import pandas as pd
alt.renderers.enable("html")

# Your data
data = pd.DataFrame({
    "x": [0, 1, 2, 3],
    "y": [0, 10, 15, 20],
    "z": [10, 8, 10, 1]
})


# Transform data to long format
data_long = pd.melt(data, id_vars=['x'], value_vars=['y', 'z'], var_name='category', value_name='y,z')

# Create an Altair chart
chart = alt.Chart(data_long).mark_line().encode(
    x='x',
    y='y,z',
    color='category:N'  # Use the category field for color encoding
).properties(
    title="My plot"
)


st.altair_chart(chart, use_container_width=True)

Keluaran:

Atas ialah kandungan terperinci Plot Altair dalam Streamlit: Bagaimana untuk menambah legenda?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam