在 ggplot2 中向线型图例添加附加线
Posted
技术标签:
【中文标题】在 ggplot2 中向线型图例添加附加线【英文标题】:Adding Additional Lines to Linetype Legend in ggplot2 【发布时间】:2018-08-02 16:29:19 【问题描述】:我很难为我使用 ggplot2 在 R 中创建的图例添加额外的线型。下面的代码使用变量Percentage.of.Total.Prescriptions....
和Percentage.Paid.Out.of.Pocket....
的连续数据来尝试创建具有两组线(实线和虚线)以及各自的图例的线图。
Lineplot <- ggplot(Table.6, aes(x = Year,
y = Percentage.of.Total.Prescriptions....,
group = as.factor(Table.6$Insurance.Status),
color = Insurance.Status,
linetype = "Total Insulin \nPrescriptions")) + geom_line()
Lineplot <- Lineplot +
geom_line(aes(y = Percentage.Paid.Out.of.Pocket....,
colour = Insurance.Status,
linetype = "Paid \n Out-of-Pocket"),
linetype = 5)
Lineplot <- Lineplot + labs(title = "Human Insulin Utilization")
Lineplot <- Lineplot + labs(x = "Year")
Lineplot <- Lineplot + labs(y = "Percentage (%)")
Lineplot <- Lineplot + labs(colour = "Insurance Status")
Lineplot <- Lineplot + scale_x_continuous(breaks = c(seq(2002,2015,1)))
Lineplot <- Lineplot + scale_y_continuous(breaks = c(seq(0,1,0.1)))
Lineplot <- Lineplot + expand_limits(y = 0:1)
Lineplot
Plot #1
第二个代码块创建了一条虚线,我试图在图例中标记它,不幸的是没有运气。
我将不胜感激有关如何向图例添加第二个线型的任何指针,表示虚线。
谢谢
【问题讨论】:
我觉得你需要scale_linetype_xxx
ggplot2.tidyverse.org/reference/scale_linetype.html
感谢您的评论,不幸的是,我已经尝试了每个变体,但无法使其正常工作。似乎这些函数不适用于连续数据...
【参考方案1】:
在第二个geom_line
中,您在aes
中定义一次linetype
,然后立即用linetype = 5
覆盖它。删除它,它应该可以工作:
# dummy data
foo = data.frame(a = c(1:10),
b = rnorm(10, 5, 2),
c = rnorm(10,10,2))
# how it is now
ggplot(foo, aes(x = a, y = b, linetype = "b")) +
geom_line() +
geom_line(aes(y = c, linetype = "c"), linetype = 5)
# fixed
ggplot(foo, aes(x = a, y = b, linetype = "b")) +
geom_line() +
geom_line(aes(y = c, linetype = "c"))
此外,您可以通过在主 ggplot
位中仅保留 common aes
参数并将特定于行的参数移动到第一个 geom_line
来使其更简洁:
ggplot(foo, aes(x = a)) +
geom_line(aes(y = b, linetype = "b")) +
geom_line(aes(y = c, linetype = "c"))
之后要指定线型,请使用scale_linetype_manual
ggplot(foo, aes(x = a)) +
geom_line(aes(y = b, linetype = "b")) +
geom_line(aes(y = c, linetype = "c")) +
scale_linetype_manual(values = c(1,5))
【讨论】:
以上是关于在 ggplot2 中向线型图例添加附加线的主要内容,如果未能解决你的问题,请参考以下文章
(R) 如何在 ggplot2 中根据颜色、线型和点形状获取图例?
将水平线添加到 R 中 ggplot2 中的堆叠条形图,并在图例中显示