在 ggplot2 中手动向 x 轴和 y 轴添加中断
manually add breaks to both x and y axis in ggplot2
我通常使用 scale_y_continuous
(或 scale_x_continuous
)更改 ggplot2 中连续变量的刻度分隔符。我通常还使用 coord_cartesian(xlim=)
(或 ylim=
用于 y 轴)设置轴限制。一切正常,如下所示:
#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 轴也不等效。我不明白为什么。非常感谢任何帮助。
set.seed(100)
df <- data.frame(b = sample(1:10, 10), a = sample(1:10, 10))
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)) +
scale_x_continuous(breaks = c(1,3,5,7,9,11,13)) +
coord_fixed(ylim=c(0, 13),xlim=c(0, 13))
scale_*_continuous
函数有一个 limits
参数,您可以使用它来代替 coord_cartesian
:
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), limits = c(0, 13)) +
scale_x_continuous(breaks = c(1,3,5,7,9,11,13), limits = c(0, 13))
...或者如果您坚持使用 coord_cartesian
来完成,请一次调用完成。否则它会裁剪您的图形然后再次裁剪它,这就是导致问题的原因。
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))+
scale_x_continuous(breaks = c(1,3,5,7,9,11,13))+
coord_cartesian(xlim=c(0, 13), ylim = c(0, 13))
# returns the same thing
我通常使用 scale_y_continuous
(或 scale_x_continuous
)更改 ggplot2 中连续变量的刻度分隔符。我通常还使用 coord_cartesian(xlim=)
(或 ylim=
用于 y 轴)设置轴限制。一切正常,如下所示:
#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 轴也不等效。我不明白为什么。非常感谢任何帮助。
set.seed(100)
df <- data.frame(b = sample(1:10, 10), a = sample(1:10, 10))
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)) +
scale_x_continuous(breaks = c(1,3,5,7,9,11,13)) +
coord_fixed(ylim=c(0, 13),xlim=c(0, 13))
scale_*_continuous
函数有一个 limits
参数,您可以使用它来代替 coord_cartesian
:
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), limits = c(0, 13)) +
scale_x_continuous(breaks = c(1,3,5,7,9,11,13), limits = c(0, 13))
...或者如果您坚持使用 coord_cartesian
来完成,请一次调用完成。否则它会裁剪您的图形然后再次裁剪它,这就是导致问题的原因。
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))+
scale_x_continuous(breaks = c(1,3,5,7,9,11,13))+
coord_cartesian(xlim=c(0, 13), ylim = c(0, 13))
# returns the same thing