Como posso definir a origem / interceptação dos eixos y e x no ggplot2?
A linha do eixo x deve estar exatamente em y=Z
.
Com Z=0
ou outro valor fornecido.
Como posso definir a origem / interceptação dos eixos y e x no ggplot2?
A linha do eixo x deve estar exatamente em y=Z
.
Com Z=0
ou outro valor fornecido.
Respostas:
xlim
e ylim
não corte aqui. Você precisa usar expand_limits
, scale_x_continuous
e scale_y_continuous
. Experimentar:
df <- data.frame(x = 1:5, y = 1:5)
p <- ggplot(df, aes(x, y)) + geom_point()
p <- p + expand_limits(x = 0, y = 0)
p # not what you are looking for
p + scale_x_continuous(expand = c(0, 0)) + scale_y_continuous(expand = c(0, 0))
Pode ser necessário ajustar um pouco as coisas para garantir que os pontos não sejam cortados (consulte, por exemplo, o ponto em x = 5
e y = 5
.
expand=expand_scale(mult=c(0,0.1))
assim você ainda obter o preenchimento nas extremidades superiores: stackoverflow.com/a/59056123/8400969
Simplesmente adicione-os ao seu ggplot:
+ scale_x_continuous(expand = c(0, 0), limits = c(0, NA)) +
scale_y_continuous(expand = c(0, 0), limits = c(0, NA))
df <- data.frame(x = 1:5, y = 1:5)
p <- ggplot(df, aes(x, y)) + geom_point()
p <- p + expand_limits(x = 0, y = 0)
p # not what you are looking for
p + scale_x_continuous(expand = c(0, 0), limits = c(0,NA)) +
scale_y_continuous(expand = c(0, 0), limits = c(0, NA))
Por fim, tome muito cuidado para não excluir acidentalmente dados do seu gráfico. Por exemplo, um position = 'dodge'
bar / histograma pode ficar totalmente fora do gráfico se seu valor for zero e você iniciar o eixo em zero; portanto, talvez você não o veja e saiba que ele está lá. Eu recomendo plotar dados na íntegra primeiro, inspecionar e depois usar a dica acima para melhorar a estética da plotagem.
scale_x_continuous(expand = c(0, 0), limits = c(0,5))
, de alguma forma, sem ele não funcionou