R 使用比例[…]标识时有意义的图例
我有一个明确包含R 使用比例[…]标识时有意义的图例,r,ggplot2,data-visualization,R,Ggplot2,Data Visualization,我有一个明确包含美学信息的数据框: df <- structure(list( tpr = c(0.57, 0.1, 0.02, 0, 0, 1, 0.11, 0.03, 0.01, 0, 1, 0.1, 0.04, 0.01, 0, 1, 0.12, 0.03, 0, 0), ppv = c(0.07, 0.3, 0.54, 0.38, NaN, 0.03, 0.24, 0.28, 0.5, NaN, 0.03, 0.14, 0.28, 0.25, NaN, 0.03, 0.22
美学信息的数据框:
df <- structure(list(
tpr = c(0.57, 0.1, 0.02, 0, 0, 1, 0.11, 0.03, 0.01, 0, 1, 0.1, 0.04, 0.01, 0, 1, 0.12, 0.03, 0, 0),
ppv = c(0.07, 0.3, 0.54, 0.38, NaN, 0.03, 0.24, 0.28, 0.5, NaN, 0.03, 0.14, 0.28, 0.25, NaN, 0.03, 0.22, 0.36, 0.3, NaN),
model = structure(c(1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L), .Label = c("model1", "model2", "model3", "model4"), class = "factor"),
alpha = c(1, 1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 1, 1, 1, 1, 1),
col = c("steelblue", "steelblue", "steelblue", "steelblue", "steelblue", "red", "red", "red", "red", "red", "red", "red", "red", "red", "red", "red", "red", "red", "red", "red"),
size = c(1, 1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 1, 1, 1, 1, 1)),
.Names = c("tpr", "ppv", "model", "alpha", "col", "size"),
class = c("data.frame"), row.names = c(NA, -20L))
但是,我不知道如何添加一个图例,用相应的组标签显示所有美学效果。我期待着像这样的事情
但每组都有正确的美学效果(即在这种情况下,颜色
,尺寸
,α
)
我知道,但我不想指定手动比例,而是使用数据本身中提供的比例
这在ggplot2
中是否可能?怎么做?也许是这样的
ggplot(df, aes(x = tpr, y = ppv, colour = model, linetype = model))+
geom_line()
也许是这样的
ggplot(df, aes(x = tpr, y = ppv, colour = model, linetype = model))+
geom_line()
如果您使用scale\u color\u identity(guide=“legend”)
您将获得一个图例,但标高将标记为“红色”和“钢蓝色”。那么,有没有办法指定“model1”、“model2”等的标签。?我不知道,但如果可能的话,它肯定会像使用scale\u*\ u手册
和命名的值向量一样复杂。顺便说一下,如果与alpha和尺寸刻度一起使用,则guide=“legend”
会触发错误,但不清楚为什么会出现问题。您是否尝试过使用基本绘图功能?使用base手动创建图例很容易,但使用ggplot2很难(或不可能)。@bdemarest关于“触发错误”的问题,我发布了。感谢您的输入。我还玩过指南
和标签
之类的东西(遇到了同样的错误:),但也没能让它按我想要的那样工作。我现在使用的是scale\u*\ u手册
方式(包括确保物品以正确的顺序出现等)。我想在数据中明确地提供美感并不是一种非常好的做法,但是我认为为(多个)scale\uuuu*\u identity
s创建图例应该是可能的@Henrik,感谢您打开本期。如果您使用scale\u color\u identity(guide=“legend”)
您将获得一个图例,但级别将标记为“红色”和“钢蓝色”。那么,有没有办法指定“model1”、“model2”等的标签。?我不知道,但如果可能的话,它肯定会像使用scale\u*\ u手册
和命名的值向量一样复杂。顺便说一下,如果与alpha和尺寸刻度一起使用,则guide=“legend”
会触发错误,但不清楚为什么会出现问题。您是否尝试过使用基本绘图功能?使用base手动创建图例很容易,但使用ggplot2很难(或不可能)。@bdemarest关于“触发错误”的问题,我发布了。感谢您的输入。我还玩过指南
和标签
之类的东西(遇到了同样的错误:),但也没能让它按我想要的那样工作。我现在使用的是scale\u*\ u手册
方式(包括确保物品以正确的顺序出现等)。我想在数据中明确地提供美感并不是一种非常好的做法,但是我认为为(多个)scale\uuuu*\u identity
s创建图例应该是可能的@亨里克,谢谢你开篇。