如何绘制一个框(或圆圈)以强调 R 中图形的特定区域?

Posted

技术标签:

【中文标题】如何绘制一个框(或圆圈)以强调 R 中图形的特定区域?【英文标题】:How to draw a box (or circle) to emphasize specific area of a graph in R? 【发布时间】:2021-09-01 04:40:37 【问题描述】:

如果我有如下条形图,

x<- c("a","b","c","d","e")
y<- c(5,7,12,19,25)
dataA<- data.frame (x,y)

ggplot(data=dataA, aes(x=x, y=y)) + 
  geom_bar(stat="identity",position="dodge", width = 0.7) + 
  geom_hline(yintercept=0, linetype="solid", color = "Black", size=1) +
  scale_y_continuous(breaks = seq(-2,30,3),limits = c(-2,30)) +
  labs(fill= NULL, x="Cultivar", y="Yield") +
  theme(axis.title = element_text (face = "plain", size = 18, color = "black"),
        axis.text.x = element_text(size= 15),
        axis.text.y = element_text(size= 15),
        axis.line = element_line(size = 0.5, colour = "black"),
        legend.position = 'none') +
  windows(width=7.5, height=5)

我想在 d 和 e 的图中画一个框来强调。你能告诉我如何在图表中画一个盒子或圆形(或其他形状)吗?

谢谢,

【问题讨论】:

【参考方案1】:

您应该通过将 x 列的类型设置为 factor 并使用 geom_rect() 将矩形层添加到 ggplot 来实现您在这种特定情况下寻找的内容。 geom_rect 函数内的 Linetype = 8 给出了您提供的图中的虚线。在下面的代码中采用了这种方法。另一个允许添加矩形的函数是 annotate(),它也支持其他类型的注释。关于圈子,这已经存在:Draw a circle with ggplot2。

x <- c("a","b","c","d","e")
y <- c(5,7,12,19,25)
dataA <- data.frame(x,y)
dataA$x <- as.factor(dataA$x)

ggplot(data=dataA, aes(x=x, y=y)) + 
  geom_bar(stat="identity",position="dodge", width = 0.7) + 
  geom_hline(yintercept=0, linetype="solid", color = "Black", size=1) +
  scale_y_continuous(breaks = seq(-2,30,3), limits = c(-2,30)) +
  labs(fill = NULL, x = "Cultivar", y = "Yield") +
  theme(axis.title = element_text (face = "plain", size = 18, color = "black"),
        axis.text.x = element_text(size= 15),
        axis.text.y = element_text(size= 15),
        axis.line = element_line(size = 0.5, colour = "black"),
        legend.position = 'none') +
  windows(width=7.5, height=5) +
  geom_rect(xmin = as.numeric(dataA$x[[4]]) - 0.5,
            xmax = as.numeric(dataA$x[[5]]) + 0.5,
            ymin = -1, ymax = 28,
            fill = NA, color = "red",
            linetype = 8)

【讨论】:

完美运行!!!我还意识到,在某些数据格式中,geom_rect (aes (xmin=) 有效。非常感谢!!!!

以上是关于如何绘制一个框(或圆圈)以强调 R 中图形的特定区域?的主要内容,如果未能解决你的问题,请参考以下文章

在位图图像中绘制一个圆圈并在 R 中裁剪圆圈外的像素

小册子R中的可变标记尺寸特征

如何使用 ggplot 在 R 中自动绘制图形并将它们保存到文件夹中?

如何在MATLAB中在图像上绘制圆圈?

在 R 中,如何随时间(3D 或动画)绘制 x、y 值?

使用 Matplotlib 更改图形颜色以绘制 Pandas 数据框