基本型号: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)。目前它们都是白黑色的鳞片。
答案 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")