Plot Altair dalam Streamlit: Bagaimana untuk menambah legenda?

WBOY
Lepaskan: 2024-02-09 13:30:04
ke hadapan
1288 orang telah melayarinya

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)
Salin selepas log masuk

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)
Salin selepas log masuk

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!

sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!