我正在尝试绘制,人们在x axis
上听取的音乐类型以及y axis
上的数量。产生的情节根本不清楚。
我写了以下调用来绘制图表:
ggplot(csv, aes(x=music_genre)) + geom_histogram(fill="lightgreen", stat = "count")
并且制作的情节看起来像:
正如您所看到的,无法确定x轴上的内容。我怎么能让它可读?
有没有更好的方法来解决这个问题?
答案 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")
ggplot(csv, aes(x=music_genre)) +
geom_histogram(fill="lightgreen", stat = "count") +
coord_flip()
编辑:
如果您不想翻转轴,请使用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")
答案 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
似乎效果最佳。