Я немного догадываюсь о том, что вы хотите, именно потому, что я не уверен, что вы пытались сделать с geom_segment
, было ли это частью ваших данных, или попыткой создать стрелку. Но вы можете использовать geom_segment
, чтобы получить нечто похожее на то, что вы описываете:
#Your test data, with a small typo repaired
dd <- data.frame(x = c("A","B","C","D","E","F","G","H","I"),
y = c(1.782,0.136,0.978,0.645,0.518,1.474,0.855,0.673,0.369))
dd <- transform(dd, ylo = c(0.719,0.046,0.945,0.295,0.188,0.577,0.407,0.310,0.145),
yhi = c(4.420,0.398,1.012,1.411,1.424,3.768,1.798,1.460,0.940))
#Create a separate data frame for the arrow labels
arrowLab <- data.frame(lab = c("Increasing","Decreasing"),
x = c(0.15,0.15),y = c(10^0.25,10^(-0.25)))
ggplot(data = dd, aes(x=ordered(x, levels=rev(x)), y=y)) +
geom_pointrange(aes(ymin=ylo, ymax=yhi)) +
geom_segment(aes(x = 0, xend = 0, y= 1, yend= 2),
arrow=arrow(length=unit(0.2,"cm"))) +
geom_segment(aes(x = 0, xend = 0, y= 1, yend= 10^(-0.25)),
arrow=arrow(length=unit(0.2,"cm"))) +
geom_text(data = arrowLab,aes(x=x,y=y,label = lab),size = 3) +
coord_flip() +
geom_hline(aes(yintercept=1), lty=2) +
scale_y_log10()
![enter image description here](https://i.stack.imgur.com/lLBTL.png)
Обратите внимание, что я жестко запрограммировал большую часть позиционирования, так что вы, вероятно, захотите поработать с этими значениями, чтобы получить то, что вам нужно, или вы можете попытаться выбрать их программно на основе ваших данных.