J'ai une question qui se développe sur this un. Fondamentalement, je veux ajouter bty = "n"
à un graphique ggplot2 dans un bon façon. L'accent sur la propriété ici parce que la solution dans l'autre question presque ce que je veux, sauf pour ce détail: Je voudrais si la ligne d'axe continuerait jusqu'à la fin de la tique, pas jusqu'au milieu de celui-ci. Tout d'abord, le code pour le graphique:ggplot avec bty = "n", ou comment ajouter des coordonnées de grille pour tracer les coordonnées
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])
Le problème est: Je dessine sur l'axe x de 50 jusqu'à 90. Mais, les coches sont centrées sur 50 et 90, par conséquent, ils étendent de la moitié de size = 5
sur de chaque côté. ?element_line
me dit que la taille de la ligne/bordure est par défaut en mm. Ainsi, je veux tracer la ligne de 50 - 5 mm/2 jusqu'à 90 + 5 mm/2. J'ai essayé (de nombreuses variantes de) ce qui suit:
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()
Mais pas de chance que ce soit. Des idées?