0
我有一個問題,擴展在this之一。基本上我想添加bty = "n"
ggplot2圖正確的方式。在這裏強調適當的,因爲在另一個問題的解決方案几乎是我想要的,除了這個細節:我希望如果軸線將繼續,直到滴答的結束,直到它的中間。首先,對於圖的代碼:ggplot with bty =「n」,或如何將網格座標添加到繪圖座標
library(ggplot2)
library(grid)
graph = ggplot(faithful, aes(x=eruptions, y=waiting)) +
geom_point(shape=21) +
theme(
# tick width, a bit exaggerated as example
axis.ticks = element_line(size = 5, color = "gray")
)
graph # graph with no axis lines
# get axis limits
gb = ggplot_build(graph)
xLim = range(gb$layout$panel_ranges[[1]]$x.major_source)
yLim = range(gb$layout$panel_ranges[[1]]$y.major_source)
# add lines
graph +
geom_segment(y = -Inf, yend = -Inf, x = xLim[1], xend = xLim[2]) +
geom_segment(x = -Inf, xend = -Inf, y = yLim[1], yend = yLim[2])
所以,問題是:我在x軸繪製從50至90。但是,所述刻度線是在50和90爲中心,因此它們通過size = 5
一半上延伸每一面。 ?element_line
告訴我,行/邊框尺寸默認爲毫米。因此,我想要繪製從50行 - 5毫米/ 2直到90 +5毫米/ 2.我嘗試(的許多變型)下面:
xLim = range(gb$layout$panel_ranges[[1]]$x.major_source)
yLim = range(gb$layout$panel_ranges[[1]]$y.major_source)
uType = "npc"
uType2 = "mm"
# attempt conversion of units
xLim[1] = xLim[1] - convertWidth(unit(2.5, units = uType2),
unitTo = uType, valueOnly = TRUE)
xLim[2] = xLim[2] + convertWidth(unit(2.5, units = uType2),
unitTo = uType, valueOnly = TRUE)
yLim[1] = yLim[1] - convertHeight(unit(2.5, units = uType2),
unitTo = uType, valueOnly = TRUE)
yLim[2] = yLim[2] - convertHeight(unit(2.5, units = uType2),
unitTo = uType, valueOnly = TRUE)
# redraw graph
cairo_pdf("Rplot.pdf")
graph +
geom_segment(y = -Inf, yend = -Inf, x = xLim[1], xend = xLim[2]) +
geom_segment(x = -Inf, xend = -Inf, y = yLim[1], yend = yLim[2])
dev.off()
但是,沒有任何運氣。有任何想法嗎?