第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

plotnine 不添加圖例

plotnine 不添加圖例

猛跑小豬 2022-10-06 19:26:37
我正在使用 plotnine 在同一個(gè)圖中繪制兩個(gè)圖表。一張圖表使用您將在下面看到的數(shù)據(jù)框中的“b”值,另一張使用“c”中的值。我所需要的只是顯示一個(gè)簡(jiǎn)單的圖例圖例,在其中我看到帶有相應(yīng)顏色的“c”和“b”。def plot_log_detected():    df = DataFrame({'x': [1, 2, 3, 4, 5],                    'b': >>>SOME VALUES DOESNT MATTER<<<,                    'c': >>>SOME VALUES DOESNT MATTER<<<                   })    return ggplot(aes(x='x', y='b'), data=df) + geom_point(size=1) +\           geom_line(aes(y='b'), color='black') + \           geom_line(aes(y='c'), color='blue') +  \           ggtitle("TITLE") + \           labs(y="Y AXIS", x="X AXIS")
查看完整描述

4 回答

?
一只名叫tom的貓

TA貢獻(xiàn)1906條經(jīng)驗(yàn) 獲得超3個(gè)贊

ggplot2如果您在其中任何一個(gè)中使用,這將不會(huì)顯示圖例R:顏色的圖例將僅在您color=在美學(xué)中指定時(shí)表示 a geom。兩者pythonggplotfor中的“修復(fù)”是相同的r。您需要組織數(shù)據(jù),以便遵循整潔的數(shù)據(jù)原則。在這種情況下,df$b每個(gè)df$c列都包含兩條信息:(1) “y”的和(2) “y”的類型。您應(yīng)該相應(yīng)地重新組織數(shù)據(jù),以便您的列名變?yōu)椋?code>x、type_of_yvalue_of_y。

我將通過(guò)填寫(xiě)您提供的數(shù)據(jù)集進(jìn)行解釋,然后說(shuō)明我們?nèi)绾螌⑵涓臑檎麧嵉母袷剑缓竽绾危ㄕ_)應(yīng)用代碼來(lái)表示我相信您想要的情節(jié)。

基礎(chǔ)知識(shí)

這是一個(gè)數(shù)據(jù)集和一個(gè)像你的情節(jié)一樣的情節(jié)(同樣,它在r......所以我希望你能翻譯成python):

df <- data.frame(

    x=c(1:5), b=c(10, 12, 14, 9, 8), c=c(9, 11, 11, 12, 14))


ggplot(df, aes(x=x)) +

    geom_line(aes(y=b), color='red') +

    geom_line(aes(y=c), color='blue')

http://img1.sycdn.imooc.com//633ebb960001d02206600429.jpg

沒(méi)有傳說(shuō),但顏色就在那里,我們繪制您所期望的。這里的問(wèn)題是當(dāng)您在調(diào)用ggplot中指定顏色時(shí)會(huì)繪制一個(gè)圖例。 為了清楚地看到這一點(diǎn),讓我們做同樣的情節(jié),但移動(dòng)內(nèi)部:aes()color=...aes()


ggplot(df, aes(x=x)) +

    geom_line(aes(y=b, color='red')) +

    geom_line(aes(y=c, color='blue'))

http://img1.sycdn.imooc.com//633ebbb5000149e006560427.jpg

好的,那……等等。什么?它現(xiàn)在有一個(gè)圖例(因?yàn)槲覀儼阉旁赾olor 里面 aes()),但是顏色實(shí)際上是按順序顛倒的,而且......你會(huì)注意到顏色不是紅色和藍(lán)色,而是默認(rèn)的“紅色”和“藍(lán)綠色”顏色ggplot2。實(shí)際上,發(fā)生的事情是我們只指定在第一次geom_line調(diào)用中,我們繪制了正確的數(shù)據(jù)集,但我們只是將數(shù)據(jù)“命名”為“紅色”。同樣,我們將另一個(gè)數(shù)據(jù)集“命名”為“藍(lán)色”。 ggplot根據(jù)默認(rèn)調(diào)色板決定使用什么顏色。


無(wú)需整理數(shù)據(jù)即可獲得傳奇


如果您不想弄亂您的數(shù)據(jù),實(shí)際上有一種方法可以做到這一點(diǎn),并且可能會(huì)獲得您可能會(huì)滿意的輸出。我們只需要在名稱中注明color=您要調(diào)用該系列即可。


ggplot(df, aes(x=x)) +

    geom_line(aes(y=b, color='b')) +

    geom_line(aes(y=c, color='c'))

http://img1.sycdn.imooc.com//633ebbc40001696c06580428.jpg

添加另一個(gè)以在外部和內(nèi)部color='blue'獲得“藍(lán)色”顏色怎么樣?嗯……這行不通。例如,如果您這樣做,結(jié)果與顯示的原始圖相同(沒(méi)有圖例,但顏色值正確),因?yàn)樵诿看握{(diào)用中都會(huì)有效地覆蓋:aes()aes()geom_line


# this doesn't work to keep legend and desired color, the second

# color outside aes() overwrites the one inside aes()

ggplot(df, aes(x=x)) +

    geom_line(aes(y=b, color='b'), color='red') +

    geom_line(aes(y=c, color='c'), color='blue')

整潔的數(shù)據(jù)方式(“正確”方式)


雖然上述方法有效,但它違反了整潔數(shù)據(jù)的一般原則以及如何組織數(shù)據(jù)以便易于分析......以任何你想要的方式。相信我:這絕對(duì)是使用任何數(shù)據(jù)集進(jìn)行多功能分析的最佳實(shí)踐,并且?guī)缀蹩偸侵档酶冻雠σ赃@種方式組織數(shù)據(jù)。


ggplot 希望您將aes()參數(shù)指定為數(shù)據(jù)集中的列。這意味著我們應(yīng)該使每一列在您的數(shù)據(jù)集中具有特定的用途,如下所示:

  • x:x在原始數(shù)據(jù)集中是相同的。它僅表示 x 軸值

  • type_of_y:此列包含值“b”或“c”,指示值應(yīng)來(lái)自哪個(gè)數(shù)據(jù)系列。

  • value_of_y:此列包含您將在 y 上繪制的值。

使用dplyr,我們可以非常簡(jiǎn)單地以這種方式重組數(shù)據(jù):

df <- df %>% gather('type_of_y', 'value_of_y', -x)

給你:

   x type_of_y value_of_y

1  1         b         10

2  2         b         12

3  3         b         14

4  4         b          9

5  5         b          8

6  1         c          9

7  2         c         11

8  3         c         11

9  4         c         12

10 5         c         14

然后你相應(yīng)地繪制,只使用一個(gè)geom_line調(diào)用并將color美學(xué)應(yīng)用于type_of_y. 像這樣的東西:


ggplot(df, aes(x=x, y=value_of_y)) +

    geom_line(aes(color=type_of_y))

http://img1.sycdn.imooc.com//633ebbdd0001e0e406550423.jpg

這樣,您只需指定一個(gè)geom_line調(diào)用。在這里可能看起來(lái)并沒(méi)有太大的不同,但是如果您的原始數(shù)據(jù)集中有多個(gè)列怎么辦?例如,有“x”,然后是“a”、“b”、“c”...“z”的 y 值!您必須在單獨(dú)的調(diào)用中指定所有這些行geom_line!在上述情況下,無(wú)論您有多少個(gè)不同的 y 值列……您只有相同的兩行代碼,并且只有一次調(diào)用geom_line. 說(shuō)得通?有關(guān)更多信息,我會(huì)建議上面的鏈接。此外,這篇文章非常適合閱讀。

然后,您可以通過(guò)添加scale_color_manual和指定顏色來(lái)指定特定顏色(還有其他一些方法) - 但如果您需要幫助,我會(huì)在單獨(dú)的問(wèn)題中提問(wèn)。另外...不確定代碼與pythonlabs(color="your new legend title")同樣,您可以通過(guò)... 在其他主題更改中更改圖例的標(biāo)題。

我知道它與 中的代碼并不完全相同python,但這應(yīng)該足以讓您了解我們?nèi)绾卧谄渲羞M(jìn)行類似的操作。


查看完整回答
反對(duì) 回復(fù) 2022-10-06
?
蕭十郎

TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超13個(gè)贊

def plot_log_detected():

    df = DataFrame({'x': [1, 2, 3, 4, 5],

                    'b': >>>SOME VALUES DOESNT MATTER<<<,

                    'c': >>>SOME VALUES DOESNT MATTER<<<

                   })

    plot = (

        ggplot(aes(x='x', y='b'), data=df) 

        + geom_point(size=1)

        + geom_line(aes(y='b', color='"black"')) # Put color in double quotes

        + geom_line(aes(y='c', color='"blue"'))  # Put color in double quotes

        + ggtitle("TITLE")

        + labs(y="Y AXIS", x="X AXIS")

        

        # Add color scale identity

        + scale_color_identity(

            guide='legend', 

            breaks=['black', 'blue'], 

            labels=['Label for black', 'Label for blue']))

    return plot


查看完整回答
反對(duì) 回復(fù) 2022-10-06
?
牧羊人nacy

TA貢獻(xiàn)1862條經(jīng)驗(yàn) 獲得超7個(gè)贊

我有另一個(gè)解決方案,我使用了 melt 將寬數(shù)據(jù)格式轉(zhuǎn)換為長(zhǎng)數(shù)據(jù)格式。為了生成圖例,我們需要為美學(xué)映射提供一個(gè)分組列,因此使用 melt 我們可以創(chuàng)建一個(gè)列標(biāo)簽類別并將其傳遞給 plotnine 顏色參數(shù)。


def plot_log_detected():

    df = DataFrame({'x': [1, 2, 3, 4, 5],

                    'b': [22,33,21,66,55],

                    'c': [44,11,22,77,55]

                   })


    long_data = pd.melt(df, id_vars=["x"], value_vars=["b", "c"])

    long_data = long_data.rename(columns = {'variable':'category'})


    return ggplot(aes(x='x', y='value', color = "category"), data=long_data) +\

           geom_point(size=1) +\

           geom_line() + \

           ggtitle("TITLE") + \

           labs(y="Y AXIS", x="X AXIS")


plot_log_detected()

http://img1.sycdn.imooc.com//633ebbf80001bc6f06560439.jpg

查看完整回答
反對(duì) 回復(fù) 2022-10-06
?
胡說(shuō)叔叔

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超8個(gè)贊

您可以融合您的數(shù)據(jù)框以將列“b”和“c”合并為一列,并為著色和圖例創(chuàng)建一個(gè)美學(xué)列“顏色”。這是代碼和輸出。請(qǐng)注意,我將原始數(shù)據(jù)框用于點(diǎn)圖(因?yàn)槟辉谄渲欣L制“b”列)并將融化的數(shù)據(jù)框用于線圖:


def plot_log_detected():

    df = DataFrame({'x': [1, 2, 3, 4, 5],

                    'b': [1, 2, 3, 4, 5],

                    'c': [1, 3, 2, 5, 4]

                   })


    df_melt = df.melt(id_vars=['x'], value_vars=['b','c'], var_name='color', value_name='b_and_c')


    return ggplot(aes(x='x', y='b'), data=df) + geom_point(size=1) +\

           geom_line(aes(y='b_and_c', color='color'), data=df_melt) + \

           ggtitle("TITLE") + \

           labs(y="Y AXIS", x="X AXIS")

您的原始示例數(shù)據(jù)框如下所示:


   x  b  c

0  1  1  1

1  2  2  3

2  3  3  2

3  4  4  5

4  5  5  4

你融化的數(shù)據(jù)框是:


   x color  b_and_c

0  1     b        1

1  2     b        2

2  3     b        3

3  4     b        4

4  5     b        5

5  1     c        1

6  2     c        3

7  3     c        2

8  4     c        5

9  5     c        4

最后這是輸出圖像:

http://img1.sycdn.imooc.com//633ebc060001899e06300454.jpg

查看完整回答
反對(duì) 回復(fù) 2022-10-06
  • 4 回答
  • 0 關(guān)注
  • 340 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)