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创建图例应该是可能的@亨里克,谢谢你开篇。