簡體   English   中英

ggplot2中的不同行有兩個不同的scale_colour_gradient2()

[英]two different scale_colour_gradient2() for different lines in ggplot2

基本模型: https : //www.dropbox.com/s/jhp2g4n89grhwi6/pr_base.RData?dl=0

選擇模型: https//www.dropbox.com/s/0mdupo1ryi4a7o3/pr.RData? dl = 0

我將它們另存為(基本模型= pr_base)和(最佳模型= pr)-pr是精度調用。

我使用以下代碼將它們繪制為ggplot

pr <-  readRDS("pr.rds")
pr_base <- readRDS("pr_base.rds")



ggplot() +
  geom_line(data = data.frame(pr$curve), aes(x = X1, y = X2, color = X3)) +
  geom_line(data = data.frame(pr_base$curve), aes(x = X1, y = X2, color = X3)) +
  labs(x = "r",y = "p", title = "prc", colour = "legend") +
  scale_colour_gradient2(low = "white", mid = "grey", high = "black")

我想做的是顛倒這兩個模型的比例尺/顏色,以使第一個geom_line為白色到黑色的比例,第二個geom_line為黑色到白色的比例,以區分它們。 (忽略圖片中的AUPRC)。 目前它們都是白色-黑色鱗片。

在此處輸入圖片說明

這有點hack。 而且我什至不確定以這種方式顯示您的數據是一個好主意-它有點違反可視化原理應盡可能清晰地表示數據的原則。 可能值得考慮另一種表示數據的方式。 無論如何...

對於第二行映射,您可以使用color = 1-X3反轉顏色映射。 然后,您可以使用填充效果添加第二個顏色條圖例。 我們將填充美學應用於具有零高度條的虛擬geom_bar,因為除非您使用美學,否則它將不會顯示在圖例中

d1 = data.frame(X1 = 0:5, X2=0:5, X3=(0:5)/5)
d2 = data.frame(X1 = 0:5, X2=1:6, X3=(0:5)/5, Xfake = 0)

ggplot(mapping =  aes(X1, X2)) +
  geom_line(data = d1, aes(color = X3)) +
  geom_line(data = d2, aes(color = 1-X3)) +
  geom_bar(data = d2, mapping = aes(y=Xfake, fill = X3), stat = 'identity') +
  scale_colour_gradient(name = 'trace1', low = "white", high = "black") +
  scale_fill_gradient(name = 'trace2', low = "black", high = "white")

在此處輸入圖片說明

暫無
暫無

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

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