这是代码:
barplot(colMeans(sample_data, na.rm = TRUE),
las = 1,
main = "Main Title",
xlab = "Variable",
ylab = "How Characteristic",
col = rainbow(20),
cex.names = 0.9,
horiz = FALSE)
此处提供了示例数据集:
https://github.com/akaEmma/public_data/blob/master/sample_data.csv 或者您可以自己输入一些内容。这些是变量名称:
Love of Chocolate,Asian Knowledge,Stable Cleanliness,Love of People,Attention,Ethics,Aggression,Swimming,Style Points,Felinity
以下是一些与名称相关的数据:
8.67 9 6.25 7.33 6.33 5 6.67 5 5.25
8 3 6 6.67 8 7 7.67 4.5 5.25
7.33 7.5 5.75 8.67 8.67 8 5.33 2.5 3
8 6.5 6 6.33 8.33 5.33 5.67 6 6.5
6 5.5 5.25 5.33 5 4.67 4 4 3.5
7.67 7 6 4.67 7.33 5.67 7.67 5 3.75
8.67 8 7.5 5.67 7.33 5 8.33 7 7.75
如果我使用上面的代码,我会得到以下结果(忽略句点;它们并不重要):
如果我创建一个更大的图(比如用它填充我的屏幕),我会得到:
(忽略丢失的标签;我不小心把它遗漏了,它应该是“Felinity”,不管是什么)
这种条形图适用于大屏幕上的 PowerPoint,因此我可以使用非常小的标签。
这就是我想要的:我想要干净漂亮的标签,每个栏一个,并且由于这是一个愿望 list ,我希望标签调整自己的大小,以便它们足够小以适合每个栏一个,并且我希望它们位于正确的垂直点,这样它们就不会与条形重叠。有任何想法吗?
发疯吧。我想要漂亮的条形图,而且我必须制作很多条形图,所以对每个图表都进行调整根本不是一种选择。无论变量名称的长度如何,每次都必须适用于这种类型的数据文件。
谢谢!
最佳答案
请注意,theme_set
和 theme_tufte
是 ggplot2
特定的函数。
使用ggplot2
你可以做这样的事情
df <- read.csv("https://raw.githubusercontent.com/akaEmma/public_data/master/sample_data.csv")
library(tidyverse)
library(ggthemes)
df %>%
gather(key, value) %>%
group_by(key) %>%
summarise(mean.value = mean(value, na.rm = T)) %>%
mutate(key = factor(key, levels = key[rev(order(mean.value))])) %>%
ggplot(aes(key, mean.value, fill = as.numeric(key))) +
geom_col() +
theme_tufte() +
scale_fill_gradientn(colours = rainbow(5), guide = F) +
theme(axis.text.x = element_text(size = 6)) +
labs(x = "", y = "How characteristic")
关于r - 如何防止 x 标签与条形图中的条形重叠?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52030661/