我在画一个图形,x轴上有一个分类变量,y轴上有一个数值变量。
对于x轴,假设有许多数据点,默认的文本格式会导致每个标记的标签与其他标签重叠。我如何(a)改变我的轴文本的字体大小(b)改变文本的方向,使文本垂直于轴?
我在画一个图形,x轴上有一个分类变量,y轴上有一个数值变量。
对于x轴,假设有许多数据点,默认的文本格式会导致每个标记的标签与其他标签重叠。我如何(a)改变我的轴文本的字体大小(b)改变文本的方向,使文本垂直于轴?
当前回答
除了前面的解决方案之外,还可以使用rel()函数指定主题中包含的相对于base_size的字体大小,例如theme_bw()(其中base_size为11)。
例如:
ggplot(mtcars, aes(disp, mpg)) +
geom_point() +
theme_bw() +
theme(axis.text.x=element_text(size=rel(0.5), angle=90))
其他回答
使用主题():
d <- data.frame(x=gl(10, 1, 10, labels=paste("long text label ", letters[1:10])), y=rnorm(10))
ggplot(d, aes(x=x, y=y)) + geom_point() +
theme(text = element_text(size=20),
axis.text.x = element_text(angle=90, hjust=1))
#vjust adjust the vertical justification of the labels, which is often useful
这里有很多关于如何格式化ggplot的好信息。您可以使用?theme查看可以修改(基本上是所有)的参数的完整列表。
@Drew Steen对theme()的使用也是一样。下面是轴文本和标题的常见主题属性。
ggplot(mtcars, aes(x = factor(cyl), y = mpg))+
geom_point()+
theme(axis.text.x = element_text(color = "grey20", size = 20, angle = 90, hjust = .5, vjust = .5, face = "plain"),
axis.text.y = element_text(color = "grey20", size = 12, angle = 0, hjust = 1, vjust = 0, face = "plain"),
axis.title.x = element_text(color = "grey20", size = 12, angle = 0, hjust = .5, vjust = 0, face = "plain"),
axis.title.y = element_text(color = "grey20", size = 12, angle = 90, hjust = .5, vjust = .5, face = "plain"))
处理重叠标签的另一种方法是使用guide = guide_axis(n。Dodge = 2)。
library(dplyr)
library(tibble)
library(ggplot2)
dt <- mtcars %>% rownames_to_column("name") %>%
dplyr::filter(cyl == 4)
# Overlapping labels
ggplot(dt, aes(x = name, y = mpg)) + geom_point()
ggplot(dt, aes(x = name, y = mpg)) + geom_point() +
scale_x_discrete(guide = guide_axis(n.dodge = 2))
除了前面的解决方案之外,还可以使用rel()函数指定主题中包含的相对于base_size的字体大小,例如theme_bw()(其中base_size为11)。
例如:
ggplot(mtcars, aes(disp, mpg)) +
geom_point() +
theme_bw() +
theme(axis.text.x=element_text(size=rel(0.5), angle=90))
使用主题():
d <- data.frame(x=gl(10, 1, 10, labels=paste("long text label ", letters[1:10])), y=rnorm(10))
ggplot(d, aes(x=x, y=y)) + geom_point() +
theme(text = element_text(size=20))