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.
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!