我是ggplot2的新手,所以有些事情我还是不明白,为此事先对不起。
我正在用ggplot2进行绘图,但是我的y
轴的顺序不正确(即文件的第一列是要绘制的最后一列)。这是我的代码和图形:
tab[[5]] %>%
gather(col_name, value, -An) %>%
ggplot(aes(factor(An), sort(col_name), fill = value == 1)) +
geom_tile(colour = 'black') +
scale_x_discrete(breaks=tab[[5]]$An, labels=substr(tab[[5]]$An, 3,4)) +
scale_y_discrete(labels=liste_BV$Nom_riviere) +
scale_fill_manual(values = c('white', "thistle"),
name="Disponiblité",
breaks=c("TRUE", "FALSE"),
labels=c("Oui", "Non")) +
xlab("Années") + ylab("Bassins versants") +
labs(fill = "Disponibilité") +
ggtitle(paste0("Données de ", var[[5]], " manquantes")) + theme(plot.title = element_text(hjust= 0.5))
我发现其他文章解释了如何将x
轴转换为因子,这已经在这里完成了,我认为y
轴不必如此。
如其他帖子所述,我尝试了order
,但是情节根本不起作用。
col_name前面的sort
允许我用正确的名称y
绘制正确的数据,否则它将被混合并且数据和名称不匹配(也不知道为什么)。
相反,因为列位于对象选项卡中。
非常感谢您的帮助!
答案 0 :(得分:0)
正如其他人提到的那样,请提供一个可重复的问题,以便有人可以给您最好的答案。 Here您可以找到更多有关此的信息。
据我所知,您需要更改您的Y轴值,以适当的水平进行分解以查看所需的效果。这是一个小样的演示。
library(ggplot2)
library(dplyr)
test_data <- data_frame(col_a = c("a1","a2","a3"), col_b = c(1,3,5))
# this is what you seem to have for now
# x values are continuous and have a "sense" of "order"
# y values are charactors without order
# you have already converted one of the variables into factor need to do the same here as well
# let us say we need 'a1' top and not in the bottom
# we need to convert 'col_a' to a factor with levels = a3 < a2 < a1
test_data %>%
ggplot(data =., aes(col_a,col_b)) +
geom_bar(stat = "identity") +
coord_flip()
# there are multiple ways to convert to a factor type, but this is what came to my mind
test_data$col_a <- factor(c("a1","a2","a3"),levels = rev(c("a1","a2","a3")), ordered = T)
test_data$col_a
[1] a1 a2 a3
Levels: a3 < a2 < a1
# now the plot starts with 'a1' instead of 'a3'
test_data %>%
ggplot(data =., aes(col_a,col_b)) +
geom_bar(stat = "identity") +
coord_flip()