我正在尝试对我的情节进行一些更改,但我很难这样做。
(1)我想分别以红色,黄色和蓝色填充温暖,平稳和冷色。
(2)我试图让y轴读取" Count"并将其水平书写。
(3)在图例中,我希望标题是温度,而不是变量
任何帮助进行这些更改都会受到赞赏以及其他建议,以使情节看起来更好。
df <- read.table(textConnection(
'Statistic Warm Avg Cold
Homers(Away) 1.151 1.028 .841
Homers(Home) 1.202 1.058 .949'), header = TRUE)
library(ggplot2)
library(reshape2)
df <- melt(df, id = 'Statistic')
ggplot(
data = df,
aes(
y = value,
x = Statistic,
group = variable,
shape = variable,
fill = variable
)
) +
geom_bar(stat = "identity")
答案 0 :(得分:1)
通过尝试将数据重新整形为长格式,您处于正确的位置。我的偏好是使用gather
包中的tidyr
。您还可以在收集步骤中创建变量名称Temperatures和Count。
下一步是将3类温度转化为一个因子,从冷,平均到温暖排序。
现在你可以画了。您希望position = "dodge"
并排获得条形图,因为将值堆叠在一个条形图中是没有意义的。使用scale_fill_manual
填充您指定的颜色。
您可以通过操纵axis.title.y
来旋转y轴标题。
所以将所有这些放在一起(加上黑/白主题):
library(dplyr)
library(tidyr)
library(ggplot2)
df %>%
gather(Temperatures, Count, -Statistic) %>%
mutate(Temperatures = factor(Temperatures, c("Cold", "Avg", "Warm"))) %>%
ggplot(aes(Statistic, Count)) +
geom_col(aes(fill = Temperatures), position = "dodge") +
scale_fill_manual(values = c("blue", "yellow", "red")) +
theme_bw() +
theme(axis.title.y = element_text(angle = 0, vjust = 0.5))
答案 1 :(得分:1)
你快到了。要将特定颜色映射到特定因子级别,您可以使用 scale_fill_manual 并创建自己的比例:
scale_fill_manual(values=c("Warm"="red", "Avg"="yellow", "Cold"="blue")) +
在ggplot中更改y轴图例也很容易:
ylab("Count") +
要更改图例标题,您可以使用:
labs(fill='TEMPERATURE') +
给我们:
ggplot(df, aes(y = value, x = Statistic, group= variable, fill = variable)) +
geom_bar(stat = "identity") +
scale_fill_manual(values=c("Warm"="red", "Avg"="yellow", "Cold"="blue")) +
labs(fill='TEMPERATURE') +
ylab("Count") +
xlab("") +
theme_bw() +
theme(axis.title.y = element_text(angle = 0, vjust = 0.5))