首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >facet_wrap文本标记问题与stat_fit_glance

facet_wrap文本标记问题与stat_fit_glance
EN

Stack Overflow用户
提问于 2019-11-21 16:24:33
回答 1查看 880关注 0票数 1

我想知道为什么这篇文章在情节上更高.它不会停留在facet_wrap或facet_grid上。在更复杂的数据集图中,由于重叠,文本难以辨认。

下面是再现情节和问题的数据和代码。将geom="text“添加到stat_fit_glance中,将导致Error: Discrete value supplied to continuous scale

代码语言:javascript
复制
library(ggpmisc)
library(ggplot2)

DF <- data.frame(Site = rep(LETTERS[20:24], each = 4),
                 Region = rep(LETTERS[14:18], each = 4),
                 time = rep(LETTERS[1:10], each = 10),
                 group = rep(LETTERS[1:4], each = 10),
                 value1 = runif(n = 1000, min = 10, max = 15),
                 value2 = runif(n = 1000, min = 100, max = 150))
DF$time <- as.numeric(DF$time)
formula1 <- y~x
plot1 <- ggplot(data=DF, 
                aes(x=time, y= value2,group=Site)) +
  geom_point(col="gray", alpha=0.5) +
  geom_line(aes(group=Site),col="gray", alpha=0.5) +
  geom_smooth(se=F, col="darkorange", alpha=0.8, fill="orange",
              method="lm",formula=formula1) +
  theme_bw() + 
  theme(strip.text.x = element_text(size=10),
        strip.text.y = element_text(size=10, face="bold", angle=0),
        strip.background = element_rect(colour="black", fill="gray90"),
        axis.text.x = element_text(size=10),  # remove x-axis text
        axis.text.y = element_text(size=10), # remove y-axis text
        axis.ticks = element_blank(),  # remove axis ticks
        axis.title.x = element_text(size=18), # remove x-axis labels
        axis.title.y = element_text(size=25), # remove y-axis labels
        panel.background = element_blank(), 
        panel.grid.major = element_blank(),  #remove major-grid labels
        panel.grid.minor = element_blank(),  #remove minor-grid labels
        plot.background = element_blank()) + 
  labs(y="", x="Year", title = "")+ facet_wrap(~group)

plot1 + stat_fit_glance(method = "lm", label.x="right", label.y="bottom",
                        method.args = list(formula = formula1),
                        aes(label = sprintf('R^2~"="~%.3f~~italic(p)~"="~%.2f',
                                            stat(..r.squared..),stat(..p.value..))),
                        parse = TRUE)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-21 19:14:41

当标签的位置自动设置时,分组变量中的每个级别的npcy位置都会增加。您可以将Site映射到group美学,因为Site有5个层次在不同的方面不均匀地出现,“ggpmisc”中相当粗糙的算法将标签放置在不均匀的位置:五行对应于五个站点中的每一行。我已经改变了地图使用颜色,使这变得更加明显。我还删除了所有与这个问题无关的代码。

代码语言:javascript
复制
plot1 <- ggplot(data=DF, 
                aes(x=time, y= value2, color=Site)) +
  geom_smooth(se=F, alpha=0.8,
              method="lm",formula=formula1) +
  facet_wrap(~group)

plot1 + 
  stat_fit_glance(method = "lm", label.x="right", label.y="bottom",
                        method.args = list(formula = formula1),
                        aes(label = sprintf('R^2~"="~%.3f~~italic(p)~"="~%.2f',
                                            stat(..r.squared..),stat(..p.value..))),
                        parse = TRUE) +
  expand_limits(y = 110)

要使用固定位置,如果使用默认的"geom_text_npcy()“或传递数据坐标并使用"geom_text()”,则可以传递npcy坐标。一个位置对应于分组因子Site的每个级别。如果向量较短,它就会被回收。当然,为了适应更多的标签,您可以缩小文本的大小,并通过扩展绘图区域来添加空间。在任何情况下,在实践中,您都需要以一种或另一种方式指示估计值与哪一行相对应。

代码语言:javascript
复制
plot1 + 
  stat_fit_glance(method = "lm", label.x="right", label.y= c(0.01, 0.06, 0.11, 0.01, 0.06),
                  method.args = list(formula = formula1),
                  aes(label = sprintf('R^2~"="~%.3f~~italic(p)~"="~%.2f',
                                      stat(..r.squared..),stat(..p.value..))),
                  parse = TRUE, size = 2.5) +
  expand_limits(y = 110)

注意:当试图使用Error: Discrete value supplied to continuous scale时,geom_text()是我几天前修复的'ggpmisc‘中的一个bug,但还没有达到CRAN (未来版本0.3.3)。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58979441

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档