通常,我使用scale_y_continuous
(或 scale_x_continuous
)来更改 ggplot2 中连续变量的刻度线。我还通常使用coord_cartesian(xlim=)
(或 y 轴的 ylim=
)设置坐标轴限制。像以下这样一切都可以正常工作:
#Some example data
set.seed(100)
b<-sample(1:10, 10)
a<-sample(1:10, 10)
df<-data.frame(a,b)
#Graph without scales set (just default)
library(ggplot2)
ggplot(data=df, aes(a,b))+
theme_bw() + theme(panel.border = element_rect(colour = "black", fill=NA, size=1),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
axis.line = element_line(colour = "black"))+
geom_text(aes(label=rownames(df)), color="black")
这将生成具有默认比例尺的以下图表:
如果我想要调整x轴到1-13,即从1开始到13结束的13个刻度标记,我会执行以下操作:
ggplot(data=df, aes(a,b))+
theme_bw() + theme(panel.border = element_rect(colour = "black", fill=NA, size=1),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
axis.line = element_line(colour = "black"))+
geom_text(aes(label=rownames(df)), color="black")+
scale_x_continuous(breaks = c(1,3,5,7,9,11,13))+
coord_cartesian(xlim=c(0, 13))
...并且对于y轴...
ggplot(data=df, aes(a,b))+
theme_bw() + theme(panel.border = element_rect(colour = "black", fill=NA, size=1),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
axis.line = element_line(colour = "black"))+
geom_text(aes(label=rownames(df)), color="black")+
scale_y_continuous(breaks = c(1,3,5,7,9,11,13))+
coord_cartesian(ylim=c(0, 13))
但是,当我尝试同时为两个轴完成相同的比例调整时,输出结果并不会产生我期望的结果(即在x轴和y轴上都是1-13)。
ggplot(data=df, aes(a,b))+
theme_bw() + theme(panel.border = element_rect(colour = "black", fill=NA, size=1),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
axis.line = element_line(colour = "black"))+
geom_text(aes(label=rownames(df)), color="black")+
scale_y_continuous(breaks = c(1,3,5,7,9,11,13))+
coord_cartesian(ylim=c(0, 13))+
scale_x_continuous(breaks = c(1,3,5,7,9,11,13))+
coord_cartesian(xlim=c(0, 13))
如图所示,尽管同样的代码被传递给了x和y轴,但它们并不相等。我不明白为什么会这样,请帮忙解答。谢谢!