相关疑难解决方法(0)

ggplot2 - 在剧情之外注释

我想将样本大小值与绘图上的点相关联.我可以geom_text用来定位点附近的数字,但这很麻烦.将它们沿着图的外边缘排列会更加清晰.

例如,我有:

df=data.frame(y=c("cat1","cat2","cat3"),x=c(12,10,14),n=c(5,15,20))

ggplot(df,aes(x=x,y=y,label=n))+geom_point()+geom_text(size=8,hjust=-0.5)
Run Code Online (Sandbox Code Playgroud)

这产生了这个情节: 在此输入图像描述

我更喜欢这样的东西: 在此输入图像描述

我知道我可以创建第二个图并使用grid.arrange(这篇文章),但确定textGrobs与y轴对齐的间距会很繁琐.有更简单的方法吗?谢谢!

annotations r ggplot2

62
推荐指数
3
解决办法
6万
查看次数

如何在绘图区域的精确区域放置带有annotation_custom()的grobs?

我试图用ggplot2重现以下[base R]图

在此输入图像描述

我已经完成了大部分工作,但目前让我感到困惑的是将线段放置在图表右侧与相应标签相连的边缘地毯图上.标签已被绘制(在下面的第二个图中)anotation_custom()并且我已经使用@ baptiste的关闭剪裁的技巧以允许绘制绘图边距.

尽管进行了许多尝试,但我无法将其放置segmentGrobs()在设备中的所需位置,以便它们加入正确的地毯标签和标签.

一个可重复的例子是

y <- data.frame(matrix(runif(30*10), ncol = 10))
names(y) <- paste0("spp", 1:10)
treat <- gl(3, 10)
time <- factor(rep(1:10, 3))

require(vegan); require(grid); require(reshape2); require(ggplot2)
mod <- prc(y, treat, time)
Run Code Online (Sandbox Code Playgroud)

如果您没有安装素食主义者,我会dput在问题的最后添加一个强化对象,并且fortify()您希望运行该示例并fortify()使用方便的绘图ggplot().我还包括一个有点冗长的函数,myPlt()它说明了我到目前为止所做的工作,如果你已经加载了包并且可以创建,它可以用在示例数据集上mod.

我已经尝试了很多选项但是我现在似乎正在黑暗中挣扎以正确放置线段.

我不是在寻找绘制示例数据集的标签/段的具体问题的解决方案,而是我可以用来以编程方式放置段和标签的通用解决方案,因为这将构成autoplot()对象的方法的基础class(mod).我有标签制定好了,不是线段.那么问题:

  1. 如何是xmin,xmax,ymin,ymax使用时,我希望把包含从数据坐标运行线路段GROB参数x0,y0x1,y1
  2. 也许问了不同的方式,你怎么用annotation_custom()绘制段 …

r ggplot2 grob

20
推荐指数
2
解决办法
1万
查看次数

标签 统计

ggplot2 ×2

r ×2

annotations ×1

grob ×1