我想做一个线条图与自定义 colored颜色 和额外的VLINE自定义 colored颜色 也.

它运行得很好,只是我找不到从图例中删除VLINE组的方法.在判断了很多问题后,我只能得到show.legend=FALSE个,但这并不是完全正确的.

这是我的MWE:

datn <- read.table(header=TRUE, text='
supp dose length
  OJ  0.5  13.23
  OJ  1.0  22.70
  OJ  2.0  26.06
  VC  0.5   7.98
  VC  1.0  16.77
  VC  2.0  26.14
')
datn$supp <- factor(datn$supp, levels=unique(datn$supp))
plot_palette <- c("indianred1","darkgoldenrod1")
vlines <- data.frame(xint = c(1,1.25,1.75), grp = LETTERS[1:3], clr = c("lightskyblue1","cadetblue2","cyan4"))
plot_palette <- c(plot_palette, vlines$clr)
#
P <- ggplot2::ggplot(datn, ggplot2::aes(x=dose, y=length, color=supp)) +
  ggplot2::geom_line(linetype = 1, linewidth = 1.75) +
  ggplot2::geom_vline(data=vlines, ggplot2::aes(xintercept=xint, color=grp), linetype=4, linewidth=2.25, show.legend = FALSE) +
  ggplot2::scale_color_manual(values=plot_palette) +
  ggplot2::theme_light()
P
grDevices::dev.off()

这将产生:

test

为清楚起见,我只想从图例中删除组ABC.

我甚至不明白为什么他们显示在那里摆在首位,因为他们不是supp级,我明确指定show.legend=FALSEgeom_vline.有人能解释吗?

推荐答案

您可以使用breaks=参数来设置应该显示在图例中的值.但是,要使所有线条仍然上色,您必须设置limits=或使用传递给values=的调色板的命名向量,如下所示:

library(ggplot2)

names(plot_palette) <- c(
  levels(datn$supp), vlines$grp
)

ggplot(datn, aes(x = dose, y = length, color = supp)) +
  geom_line(linetype = 1, linewidth = 1.75) +
  geom_vline(
    data = vlines, aes(xintercept = xint, color = grp),
    linetype = 4, linewidth = 2.25, show.legend = FALSE
  ) +
  scale_color_manual(
    values = plot_palette,
    breaks = levels(datn$supp)
  ) +
  theme_light()

R相关问答推荐

如何将y轴上的线定位得彼此更近

如何使用stat_extract_all正确提取我的目标值?

在R中替换函数中的特定符号

迭代通过1个长度的字符串长字符R

如何在格子中添加双曲曲线

如何在ggplot图中找到第二轴的比例

在df中保留原始变量和新变量

如何同时从多个列表中获取名字?

将. xlsx内容显示为HTML表

`夹心::vcovCL`不等于`AER::tobit`标准错误

如何在ggplot2中创建多个y轴(每个变量一个)

如何计算增加10米(0.01公里)的行?

按组内中位数分类

如何判断代码是否在R Markdown(RMD)上下文中交互运行?

如何移动点以使它们的打印不重叠

如何更改包中函数中的参数?

使用&Fill&Quot;在gglot中创建 colored颜色 渐变

R/shiny APP:如何充分利用窗口?

R,将组ID分配给另一个观测ID变量中的值的组合

汇总数据:在跨越()all_of()Dynamic_list_of_vars=>;所选内容不能有缺失值的汇总()中出错