簡體   English   中英

如何在 Altair 條形圖中突出顯示具有不同 colors 的 2 個條形圖?

[英]How to highlight 2 bars with different colors in an Altair bar graph?

我想在 Altair 條形圖中突出顯示兩個不同的條形。 但是,根據不同的條件,每個人都必須具有不同的顏色。

基礎知識:

import altair as alt
import pandas as pd

df = pd.DataFrame({"fruits": ["banana", "plum", "apple", "lime"], "values": [10, 6, 8, 5]})

plot = (
    alt.Chart(df)
    .mark_bar()
    .encode(
        x=alt.X("fruits", sort="y"),
        y="values"))

apple_plot = plot.encode(color=alt.condition(alt.datum.fruits == "apple", alt.value("red"), alt.value("navy")))

banana_plot = plot.encode(color=alt.condition(alt.datum.fruits == "banana", alt.value("yellow"), alt.value("navy")))

apple_plot | banana_plot

到目前為止的結果

條形圖

我試過的

apple_banana_plot = plot.encode(
    color=alt.condition(
        alt.datum.fruits == "apple",
        alt.value("red"),
        alt.condition(
            alt.datum.fruits == "banana",
            alt.value("yellow"),
            alt.value("navy"))))

apple_banana_plot

我得到的錯誤:

TypeError:類型 object 獲得了關鍵字參數“條件”的多個值

...這意味着我不能在另一個條件中使用條件。

我期待的結果

預期的

你可以這樣做:基本上,你用兩個參數定義color

  • domain - 分類列中的值列表
  • 范圍 - 具體值 colors
df = pd.DataFrame({"fruits": ["banana", "plum", "apple", "lime"], "values": [10, 6, 8, 5]})

plot = (
    alt.Chart(df)
    .mark_bar()
    .encode(
        x=alt.X("fruits", sort="y"),
        y="values",
    color=alt.Color('fruits',
                     scale=alt.Scale(
                         domain=df.sort_values(['values'])['fruits'].tolist(),
                         range=['navy', 'navy', 'red', 'yellow']))))
plot

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM