我的眼镜片有问题了。我试着用闪亮的图片显示出全国最高/最低的自杀率。
但是,国家名称正在相互重叠,如下所示:

我该怎么调整呢?
发布于 2020-07-29 18:36:00
有相当多的可能性调整和调整事物,使您的长轴标签“适合”在一个列图(或任何其他的ggplot )。我会在这里考虑一些选择。
首先..。一个样本数据集,因为我们没有从你的问题中得到一个合适的再解释。
df <- data.frame(
x=c('Text1', 'Text2', 'Long Text Here', 'Really Really Long Text Label Here', 'Text5', 'Text6', 'Text7'),
y=c(sample(1:20, 7, replace=TRUE)))
df$x <- factor(df$x, levels=df$x) # making sure ggplot doesn't alphabetically sort!
library(ggplot2)
p <- ggplot(df, aes(x,y)) +
geom_col(aes(fill=x), show.legend = FALSE)
p

这是你的重叠标签。下面是一些选择:
选项1:调整绘图的大小
一个非常简单的“解决”问题的方法是认识到R处理图形.挺有趣的。特定图形的外观取决于图形设备的分辨率和高宽比。不仅如此,文本也不像其他情节元素那样缩放。这意味着您可以通过强制使用不同的高宽比来解决问题。
# this was used to create the above plot
ggsave('original.png', width=8, height=5)
# changing the aspect ratio produces the plot below on my graphics device
ggsave('resized.png', width=12, height=5)

选项2:更改文本大小
另一种选择是使轴标签的文本大小变小。其结果实际上类似于调整地块的大小。
p + theme(axis.text.x=element_text(size=6))

选项3:从文本角度看
一个非常好的选择是再次使用theme()元素来调整文本的角度。请注意,当您这样做时,您希望更改标签的默认对齐方式。设置hjust=1,使文本“对齐”。如果您的角度设置为90°,您还需要设置您的vjust=0.5使文本与勾标垂直对齐。这里,我将向您展示一个45°角度的文本选项:
p + theme(axis.text.x=element_text(angle=45, hjust=1))

选项4:包装文本标签
我在这里最喜欢的选项之一是包装文本标签。有几种方法可以做到这一点,但我更喜欢使用来自scales包和scale_*函数的scale_*。注意,给wrap_format(X)的数字表示包装应该发生在标签中X个字符的后面。
library(scales)
p + scale_x_discrete(labels=wrap_format(22))

选项5:将以上所有内容结合起来
解决你的问题的最好方法是将上面所有的技术结合起来,使图表看起来像你认为最令人满意的样子。这将取决于您在闪亮的图中有多少列,以及如何生成该图(用户输入或始终相同,等等)。所以这取决于你。
p + scale_x_discrete(name=NULL, labels=wrap_format(22)) +
scale_y_continuous(expand=expansion(mult=c(0,0.15))) +
theme_classic() + #important to put this before overwriting individual theme elements!
theme(
axis.text.x=element_text(angle=40, hjust=1, size=15),
axis.text.y=element_text(size=15),
panel.grid.major.y=element_line(color='gray75', linetype=2))

发布于 2020-08-19 15:42:39
你可以水平翻转你的图表,这样对读者会更好。您可以将此添加到您的图形中以翻转它:
https://stackoverflow.com/questions/63158535
复制相似问题