在生成的图中使x轴可读

时间:2018-02-04 05:50:56

标签: r ggplot2

我正在尝试绘制,人们在x axis上听取的音乐类型以及y axis上的数量。产生的情节根本不清楚。

我写了以下调用来绘制图表:

ggplot(csv, aes(x=music_genre)) + geom_histogram(fill="lightgreen", stat = "count")

并且制作的情节看起来像:

enter image description here

正如您所看到的,无法确定x轴上的内容。我怎么能让它可读?

有没有更好的方法来解决这个问题?

3 个答案:

答案 0 :(得分:5)

一种选择是将x轴标签旋转为垂直并使用较小的字体大小。

require(tidyverse)

csv <- read_csv("./ac1_survey.csv")
ggplot(csv, aes(x=`What genre of music do you like to listen to?`)) +
  geom_histogram(fill="lightgreen", stat="count") + 
  theme(axis.text.x=element_text(angle=90, hjust=1, vjust=0.5),
        text=element_text(size=5))

答案 1 :(得分:2)

使用coord_flip翻转您的轴。

这是有问题的情节:

genres <- paste0('music_genre_', c(letters, LETTERS))

csv <- data.frame(music_genre = sample(genres, 500, replace = T))

ggplot(csv, aes(x=music_genre)) +
  geom_histogram(fill="lightgreen", stat = "count")

enter image description here 翻转轴时:

ggplot(csv, aes(x=music_genre)) +
  geom_histogram(fill="lightgreen", stat = "count") +
  coord_flip()

enter image description here

编辑: 如果您不想翻转轴,请使用forcats::fct_lump组合较小的级别。

csv$music_genre <- forcats::fct_lump(csv$music_genre, n = 6)

ggplot(csv, aes(x=music_genre)) +
  geom_histogram(fill="lightgreen", stat = "count")

enter image description here

答案 2 :(得分:2)

在这种情况下,我通常只使用theme旋转刻度标签:

ggplot(csv, aes(x=music_genre)) + geom_histogram(fill="lightgreen", stat = "count") +
theme(axis.text.x = element_text(angle = 45, hjust = 1)

在ggplot2中,axis.text中的theme指的是刻度标签。默认角度为0,如果提供另一个数字,则文本将逆时针旋转。 hjust更改了该行(现在已旋转)上文本的对齐方式。对于长文本标签hjust = 1似乎效果最佳。