ggplot2

时间:2018-06-06 22:13:03

标签: r ggplot2

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

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

我将它们保存为(基本模型= pr_base)和(optimial model = 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)。目前它们都是白黑色的鳞片。

enter image description here

1 个答案:

答案 0 :(得分:1)

这有点像黑客。而且我甚至不确定以这样的方式呈现您的数据是一个好主意 - 它有点违背了可视化应该尽可能清楚地表示数据的原则。它可能值得考虑另一种表示数据的方式。总之...

对于第二行映射,您可以使用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")

enter image description here