相关疑难解决方法(0)

在线的末端绘制标签

我有以下数据(temp.dat请参阅完整数据的结束注释)

   Year State     Capex
1  2003   VIC  5.356415
2  2004   VIC  5.765232
3  2005   VIC  5.247276
4  2006   VIC  5.579882
5  2007   VIC  5.142464
...
Run Code Online (Sandbox Code Playgroud)

我可以生成以下图表:

ggplot(temp.dat) + 
  geom_line(aes(x = Year, y = Capex, group = State, colour = State))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

而不是传说,我喜欢标签

  1. 颜色与系列相同
  2. 每个系列的最后一个数据点的右侧

我在以下链接的答案中注意到了baptiste的评论,但是当我尝试调整他的代码(geom_text(aes(label = State, colour = State, x = Inf, y = Capex), hjust = -1))时,文本没有出现.

ggplot2 - 在剧情之外注释

temp.dat <- structure(list(Year = c("2003", "2004", "2005", "2006", "2007", 
"2008", "2009", "2010", "2011", "2012", "2013", …
Run Code Online (Sandbox Code Playgroud)

r legend ggplot2

50
推荐指数
7
解决办法
5万
查看次数

使用 dplyr::group_by() 对每个组进行 loess 回归

好吧,我挥舞着我的白旗。

我正在尝试对我的数据集计算 loess 回归。

我希望 loess 计算一组不同的点,这些点绘制为每个组的平滑线。

问题是 loess 计算是在逃避dplyr::group_by函数,所以 loess 回归是在整个数据集上计算的。

互联网搜索让我相信这是因为dplyr::group_by不应该以这种方式工作。

我只是不知道如何在每个组的基础上进行这项工作。

以下是我尝试失败的一些示例。

test2 <- test %>% 
  group_by(CpG) %>% 
  dplyr::arrange(AVGMOrder) %>% 
  do(broom::tidy(predict(loess(Meth ~ AVGMOrder, span = .85, data=.))))

> test2
# A tibble: 136 x 2
# Groups:   CpG [4]
   CpG            x
   <chr>      <dbl>
 1 cg01003813 0.781
 2 cg01003813 0.793
 3 cg01003813 0.805
 4 cg01003813 0.816
 5 cg01003813 0.829
 6 cg01003813 0.841
 7 cg01003813 0.854
 8 cg01003813 0.866
 9 cg01003813 0.878
10 cg01003813 0.893 …
Run Code Online (Sandbox Code Playgroud)

r loess dplyr broom purrr

6
推荐指数
2
解决办法
3245
查看次数

将直接标签添加到 geom_smooth 而不是 geom_line

我认识到这个问题的亲密重复这一个,但解决方案也不再有效(使用method="last.qp"),所以我再次要求它。

基本问题是我想使用directlabels(或等效的)来标记每个组的平滑均值(来自stat_smooth()),而不是实际数据。下面的示例显示了我所得到的最接近的结果,但标签无法识别分组,甚至无法识别平滑线。相反,我在最后一点得到了标签。我想要的是每条平滑线末尾的颜色协调文本,而不是图右侧的图例。

下面是一个例子:

library(ggplot2)
library(directlabels)

## Data
set.seed(10)
d <- data.frame(x=seq(1,100,1), y=rnorm(100, 3, 0.5))
d$z <- ifelse(d$y>3,1,0)

## Plot
p <- ggplot(d, aes(x=x, y=y, colour=as.factor(z))) +
  stat_smooth(inherit.aes=T, se=F, span=0.8, show.legend = T) +
  geom_line(colour="grey50") +
  scale_x_continuous(limits=c(0,110)) +
  geom_dl(label="text", method="maxvar.points", inherit.aes=T)
p
Run Code Online (Sandbox Code Playgroud)

这使得这个情节: 在此处输入图片说明

r labels ggplot2 direct-labels ggrepel

5
推荐指数
2
解决办法
3003
查看次数

标签 统计

r ×3

ggplot2 ×2

broom ×1

direct-labels ×1

dplyr ×1

ggrepel ×1

labels ×1

legend ×1

loess ×1

purrr ×1