Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 在绘图末尾添加值标签_R_Ggplot2 - Fatal编程技术网

R 在绘图末尾添加值标签

R 在绘图末尾添加值标签,r,ggplot2,R,Ggplot2,我正试图在绘图中绘制标签。我做了,但他们不太好。下面是一个更好地理解它的示例,我有以下情节: 我想在最后添加值,我这样做了,但它们看起来很奇怪: 有没有办法解决这个问题?我在代码末尾进行绘图,在代码末尾添加注释#绘图。 以下是可复制代码: library(glmnet) library(dplyr) library(tidyr) set.seed(100) n=100 p=50 X=matrix(rnorm(n*p), nrow=n) y=matrix(rnorm(n), nrow=n) l

我正试图在绘图中绘制标签。我做了,但他们不太好。下面是一个更好地理解它的示例,我有以下情节:

我想在最后添加值,我这样做了,但它们看起来很奇怪:

有没有办法解决这个问题?我在代码末尾进行绘图,在代码末尾添加注释
#绘图
。
以下是可复制代码:

library(glmnet)
library(dplyr)
library(tidyr)
set.seed(100)
n=100
p=50
X=matrix(rnorm(n*p), nrow=n)
y=matrix(rnorm(n), nrow=n)
lam = seq(0.1,7,length.out=100)
lm=glmnet(X,y,alpha=1,lambda=lam, intercept=FALSE, standardize=FALSE)
value1=as.matrix(coef(lm))

#creating a dataframe
L1 <- function(x)
  sum(abs(x))
bind_cols(
  as.data.frame(value1) %>%
    summarise_all(funs(L1(.))) %>%
    t() %>%
    as.data.frame() %>%
    rename(x = V1),
  t(value1) %>%
    as.data.frame() %>%
    rename_all(funs(gsub("V", "", .)))
) %>%
  gather(row, y, 2:(nrow(value1) + 1)) -> dataf

#plotting 
ggplot(dataf, aes(x, y, colour = row)) + geom_line() +
  geom_text_repel(
    data = subset(dataf, x == max(x)),
    aes(label = row),
    size = 2,
    nudge_x = 1 
  ) +
  theme(legend.position = "none")
库(glmnet)
图书馆(dplyr)
图书馆(tidyr)
种子集(100)
n=100
p=50
X=矩阵(rnorm(n*p),nrow=n)
y=矩阵(rnorm(n),nrow=n)
lam=序号(0.1,7,长度向外=100)
lm=glmnet(X,y,alpha=1,lambda=lam,intercept=FALSE,standarized=FALSE)
值1=作为矩阵(coef(lm))
#创建数据帧
L1%
总结所有(funs(L1)()%%>%
t()%>%
as.data.frame()%>%
重命名(x=V1),
t(值1)%>%
as.data.frame()%>%
重命名_all(funs(gsub(“V”)、“”、))
) %>%
聚集(行,y,2:(nrow(value1)+1))->dataf
#策划
ggplot(数据场,aes(x,y,颜色=行))+geom_线()+
geom_文本_排斥(
数据=子集(数据f,x==max(x)),
aes(标签=行),
尺寸=2,
轻推_x=1
) +
主题(legend.position=“无”)

这里发生的主要事情是,在一个点上有一堆文本标签,因此通过排斥它们并让它们有段将标签附着到它们的值上,你最终会在绘图结束时看到这一星暴

要了解我的意思,请过滤数据中的最大x值,即放置标签的位置,以及y==0的行:其中有35行!因此,你有35位的文字都在争夺同一个位置,并且彼此排斥

dataf%>%
过滤器(x==max(x),y==0)%>%
nrow()
#> [1] 35
第二种方法是设置将文本连接到其值的段的颜色。如果将其设置为灰色,则可以将这些线段与实际的
geom_线
s区分开来,因为现在它们的颜色不同了

ggplot(数据帧,aes(x,y,颜色=行))+
geom_线()+
geom_文本_排斥(
数据=.%>%过滤器(x==最大值(x)),
aes(标签=行),
尺寸=2,
微移_x=0.01,
segment.color=“gray60”
) +
比例x连续(扩展=扩展比例(mult=c(0.05,0.1)))+
主题(legend.position=“无”)

这里有几种方法可以避免这种混乱:我减少了
轻推x
,这样文本会更接近行(
轻推x
与x值相关,所以当值仅为0到0.6ish时轻推1会使标签非常远离)。我将线段颜色更改为中性,并在绘制线段之前调整了最小距离。我添加了一个
expand_scale
,以便在右侧留出更多空间(这仅在ggplot的开发版本中)。最重要的是,我取出了0值的标签

你可能应该根据自己的喜好调整这些东西,但希望这是清理它的一个开始

ggplot(数据帧,aes(x,y,颜色=行))+
geom_线()+
geom_文本_排斥(
数据=.%>%过滤器(x==max(x),y!=0),
aes(标签=行),
尺寸=2,
微移_x=0.01,
最小分段长度=5,
segment.color=“gray60”
) +
比例x连续(扩展=扩展比例(mult=c(0.05,0.1)))+
主题(legend.position=“无”)


由(v0.2.0)于2018年6月11日创建。

非常感谢,只是一个小问题,我以前从未见过此功能
扩展\u scale
此功能是软件包的一部分
ggdag
?因为我不能真正安装它不,它在ggplot2的开发版本中,您可以从github获得。我相信它将出现在下个月的ggplot2的下一个CRAN版本中,但开发版本相当稳定。我安装了这些,
install.packages(“devtools”)library(devtools)dev_mode(on=T)install\u github(“hadley/ggplot2”)
,但我仍然收到一个错误
找不到函数“expand\u scale”
请写下您为开发版本安装的内容,然后从中重新启动R。但扩展规模也不是必需的,它只是有助于创建更多空间以容纳标签