Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.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 ggplot2:使用数值在y轴上标记水平线_R_Ggplot2 - Fatal编程技术网

R ggplot2:使用数值在y轴上标记水平线

R ggplot2:使用数值在y轴上标记水平线,r,ggplot2,R,Ggplot2,在ggplot中有一条水平线,我想在y轴上标记它的值(7.1) library(ggplot2) df <- data.frame(y=c(1:10),x=c(1:10)) h <- 7.1 plot1 <- ggplot(df, aes(x=x,y=y)) + geom_point() plot2 <- plot1+ geom_hline(aes(yintercept=h)) 库(ggplot2) 像这样的怎么样 plot1 + geom_hline(aes(yin

在ggplot中有一条水平线,我想在y轴上标记它的值(7.1)

library(ggplot2)
df <- data.frame(y=c(1:10),x=c(1:10))
h <- 7.1
plot1 <- ggplot(df, aes(x=x,y=y)) + geom_point() 
plot2 <- plot1+ geom_hline(aes(yintercept=h))
库(ggplot2)

像这样的怎么样

plot1 + geom_hline(aes(yintercept=h), colour="#BB0000", linetype="dashed") + 
 geom_text(aes( 0, h, label = h, vjust = -1), size = 3)

现在还不清楚您是想让7.1成为y轴的一部分,还是只想用一种方法来标记线。假设是前者,您可以使用
scale\u y\u continuous()
定义自己的中断。像这样的东西可能会做你想做的(很可能需要一些摆弄):

假设是后者,这可能更符合您的要求:

plot1 + geom_hline(aes(yintercept=h)) +
  geom_text(aes(0,h,label = h, vjust = -1))

与Chase类似,更改了现有标签的使用


ggplot\u build(plot1)$layout$panel\u ranges[[1]]$y.major\u source
可用于提取现有标签并添加新标签
h

plot1 + geom_hline(aes(yintercept=h)) + 
  scale_y_continuous(breaks = sort(c(ggplot_build(plot1)$layout$panel_ranges[[1]]$y.major_source, h)))

这是一项后续行动

我认为Prradep的答案适用于ggplot2的旧版本。我使用的是ggplot2版本3.1.0,为了提取该版本中
plot1
的现有标签,您必须使用:

ggplot_build(plot1)$layout$panel_params[[1]]$y.major
这只适用于线性轴!如果您有一个非线性y轴(例如对数轴),则ggplot2存储轴在
$y.major
中为线性时记号的位置。实际的记号标记标签作为字符向量存储在
$y.labels
中。因此,对于非线性y轴,您需要使用:

as.numeric(ggplot_build(cl.plot.log)$layout$panel_params[[1]]$y.labels)

除非你已经下定决心把它标在轴上。你可以增加刻度线的间距,使其在7.1处有一个刻度线,但这会使你的绘图过于繁忙。非常感谢你提供的“缩放y连续”解决方案。如果你的线是条形图上的叠加,你该怎么办,使用因子x值。是否可以让标签显示在y轴上而不是绘图的右侧?如何更改特定轴标签的字体颜色,在本例中为“7.1”?
as.numeric(ggplot_build(cl.plot.log)$layout$panel_params[[1]]$y.labels)