在图例ggplot中显示填充箭头

2023-11-29

我正在尝试绘制一条末端带有箭头的线段,并使其出现在图例中。我可以使用以下代码来做到这一点:

library(ggplot2)

# sample data
dat <- data.frame(
  x = as.factor(1:10),
  y = c(20,30,13,37,12,50,31,2,40,30),
  z = rep('a', 10)
)

# basic plot
ggplot(dat) +
  geom_segment(
    aes(x = x, xend = x, y = 0, yend = y+15, linetype = z), 
    arrow = arrow(length = unit(0.25, 'cm'), type = 'closed'),
    size = 0.7
  ) 

output:

enter image description here

issue:

我的问题是图例中的箭头没有像情节那样牢固地填充。我尝试过使用guide_legend(override.aes = aes(fill='black')) and guide_legend(override.aes = aes(type='closed'))但两者都没有对传奇产生任何影响。

有谁知道如何使三角形填充并纯黑?

edit:

我有类似的问题geom_label不包括图例中标签周围的黑线。我设法通过添加一个来解决这个问题geom_rect在我想要的确切位置,但希望这不是最好的解决方案:P

任何解决方案都会非常有帮助!

enter image description here


从ggplot2 3.2.0开始,可以提供自定义图例绘制功能。因此,如果图例看起来不太正确,您始终可以从 ggplot2 代码库复制相应的图例绘图函数,然后根据需要进行修改。

library(ggplot2)
library(grid)
library(rlang)

# legend drawing function, copied from ggplot2
draw_key_segment_custom <- function(data, params, size) {
  if (is.null(data$linetype)) {
    data$linetype <- 0
  } else {
    data$linetype[is.na(data$linetype)] <- 0
  }

  segmentsGrob(0.1, 0.5, 0.9, 0.5,
    gp = gpar(
      col = alpha(data$colour %||% data$fill %||% "black", data$alpha),
      # the following line was added relative to the ggplot2 code
      fill = alpha(data$colour %||% data$fill %||% "black", data$alpha),
      lwd = (data$size %||% 0.5) * .pt,
      lty = data$linetype %||% 1,
      lineend = "butt"
    ),
    arrow = params$arrow
  )
}


# sample data
dat <- data.frame(
  x = as.factor(1:10),
  y = c(20,30,13,37,12,50,31,2,40,30),
  z = rep('a', 10)
)

# basic plot
ggplot(dat) +
  geom_segment(
    aes(x = x, xend = x, y = 0, yend = y+15, linetype = z), 
    arrow = arrow(length = unit(0.25, 'cm'), type = 'closed'),
    size = 0.7,
    key_glyph = "segment_custom"
  ) 

Created on 2019-07-25 by the reprex package (v0.3.0)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在图例ggplot中显示填充箭头 的相关文章

  • 如何在R中安装pivot_long()和pivot_wide()

    如果您想尝试这些新功能 pivot wide and pivot long 需要安装开发版tidyr devtools install github tidyverse tidyr 但我还没有实现它 我安装了一系列库 除了一个之外 vctr
  • 如何在有条件的情况下获得R中多列的中位数(根据另一列)

    我是 R 初学者 我想知道如何完成以下任务 我想用数据集所有列的中位数替换数据集的缺失值 但是 对于每一列 我想要某个类别的中位数 取决于另一列 我的数据集如下 structure list Country structure 1 5 La
  • dplyr::group_by_ 带有多个变量名的字符串输入

    我正在编写一个函数 要求用户在函数调用中定义一个或多个分组变量 然后使用 dplyr 对数据进行分组 如果只有一个分组变量 它会按预期工作 但我还没有弄清楚如何使用多个分组变量来做到这一点 Example x lt c cyl y lt c
  • xtable 中的 Cox 回归输出 - 选择行/列并添加置信区间

    我不想将 cox 回归的输出导出到一个表中 然后将其放入我的文章中 我想最好的方法是使用 xtable library survival data pbc fit pbc lt coxph Surv time status 2 age ed
  • 如何自动替换多个文件的文本内容中的字符?

    我有一个文件夹 myfolder包含许多乳胶表 我需要替换其中每个字符 即替换任何minus sign by an en dash 只是为了确定 我们正在替换连字符INSIDE该文件夹中的所有 tex 文件 我不关心 tex 文件名 手动执
  • 错误:美学必须是长度一,或者在省略 NA 时与 dataProblems:personCategoryz 的长度相同

    我正在尝试使用泰坦尼克号数据集创建一个图表 该数据集查看女性 儿童和男性及其生存率 我创建了新的类别来读取数据 但当我尝试超越该点时 不断出现错误消息 当我运行一个图表来显示这一点时 它显示得很好 只是它有一个单独的 NA 数据类别 所以我
  • R 中 optim() 的优化(L-BFGS-B 需要“fn”的有限值)

    我在 R 中使用 optim 来求解涉及积分的可能性时遇到一些问题 我收到一条错误消息 optim par c 0 1 0 1 LLL method L BFGS B lower c 0 L BFGS B 需要 fn 的有限值 中的错误 下
  • 使用 ggplot 为各个图例值选择所选颜色(HSV 或 HCL 或 RGB)

    我有一个类似这样的数据集 data lt read table text Me EE PE DE TE DEE CE 1 1 1 4 5 2000 0 50 0 2547 0 69 2 1 2 2 4 3000 NA 0 5896 2 56
  • R ggplot:加权 CDF

    我想使用绘制加权 CDFggplot 一些旧的非 SO 讨论 例如this https stat ethz ch pipermail r help 2012 October 337288 html从 2012 年起 建议这是不可能的 但我想
  • 消除垂直线ggplot

    这个问题以前曾被问过 但答案并不总是明确或很复杂 我希望 ggplot2 的新版本能够带来更简单的解决方案 如何仅消除 ggplot 的垂直线而不消除轴刻度线或标签 这对于条形图来说确实很好 因为它可以消除图形中一些不必要的干扰 这里有一些
  • 从 SpatialPolygons 和其他 sp 类中提取要素坐标

    Package sp为不同的空间概念 点 线 多边形 提供了许多类 对于某些类 访问要素坐标很简单 例如SpatialLines 所有示例均取自相应课程的帮助页面 l1 cbind c 1 2 3 c 3 2 2 l1a cbind l1
  • 从拟合的 lm 或 glm [R] 获取每个因子水平(以及交互作用)的数据数量

    我在 R 中有一个逻辑回归模型 其中所有预测变量都是分类变量而不是连续变量 除了响应变量 它显然也是分类 二元变量 打电话时summary model name 有没有办法在每个因子水平中包含一个表示观测值数量的列 我在 R 中有一个逻辑回
  • 设置设备默认图形参数

    我经常喜欢在 IDE 中使用浅色文本和深色背景颜色主题 当我在 R 中绘制某些内容时 绘图的默认颜色方案是白色背景上的黑色文本 边框 点 我试图默认更改此设置 最好是默认从 R 调用的特定设备 X11cairo RStudioGD 同时保留
  • 通过 boot.ci 函数获取多个统计数据的 Bootstrap 置信区间

    我想通过以下方式获得多个统计数据的引导置信区间boot ci功能 这是我的 MWE 我有两个统计数据out并想要找到这两个统计数据的引导置信区间 然而 boot ci函数仅为第一个统计量 t1 提供引导置信区间 但不为第二个统计量 t2 提
  • 在 dplyr 中,setdiff 和 anti_join 之间的本质区别是什么?

    我仍在学习 DataCamp for R 的课程 所以如果这个问题看起来很幼稚 请原谅我 考虑以下 非常做作的 示例 library dplyr library tibble type lt c Dog Cat Cat Cat name l
  • 如何在 R 中的多图形环境中画一条线?

    举一个非常简单的例子 mfrow c 1 3 每个图都是不同的直方图 我将如何画一条水平线 类似于abline h 10 所经过的all3位数 也就是说 甚至是它们之间的边距 显然 我可以为每个图形添加一条 abline 但这不是我想要的
  • R 单个变量中的多重图

    嗨 我有下一个代码 par mfrow c 1 3 plot BCxyz 1 BCxyz 2 main Bray Curtis 1 2 pch 20 cex 3 col c blue green red yellow Metadata Sa
  • 如何计算由离散数据定义的表面下的体积?

    我需要确定由离散数据点表示的一系列表面下方的体积 在我的数据中 每个样本都作为数据帧列表中的单独数据帧存储 这是一些 小 示例数据 df1 lt data frame x c 2 2 2 3 3 3 4 4 4 5 5 5 6 6 6 y
  • R grep:有 AND 运算符吗?

    假设我有以下数据框 User Id Tags 34234 imageUploaded people jpg more comma separated stuff 34234 imageUploaded 12345 people jpg 我如
  • R 中的约束优化

    我正在尝试使用http rss acs unt edu Rdoc library stats html constrOptim html http rss acs unt edu Rdoc library stats html constr

随机推荐