我正在使用 streamlit,需要 altair 進行繪圖(因為有可用的插值選項)。
給出這個簡單的程式碼:
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)
這會導致該圖:
在圖旁邊加入圖例的正確方法是什麼?
在文件中,我將圖例選項視為「顏色」的一部分,但這似乎始終與視覺化另一個維度有關。就我而言,我只想繪製不同的線條並用它們各自的顏色繪製圖例。
將您的資料轉換為長資料幀格式。這種格式更適合在 altair 中建立圖例,因為每行都與一個類別相關聯。 然後使用這個類別進行顏色編碼:
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)
輸出:
以上是Streamlit 中的 Altair 繪圖:如何新增圖例?的詳細內容。更多資訊請關注PHP中文網其他相關文章!