我想在带有ggplot2
的条形图上显示有序因子的值(理想情况下,否则使用标准图)。
我有一个像这样的有序因素:
“你对这些练习感到满意:” - 绝对不满意=>价值1 - 不满意=>价值2 - satisf =>价值3 - 非常满意=>价值4
我想绘制一个平均值和值“绝对不满意”的条形图 - >轴上的“非常满意”而不是1 - > 4。
是否可以使用ggplot2
执行此操作?在我看来,主要的困难是绘制因子的平均值而不是值的分布(实际上我的绘图是通过将有序因子转换为整数来实现的)。
以下是我的数据集上的dput结果。
structure(c(3L, 2L, 3L, 2L, 2L, 3L, 2L, NA, 2L, 3L, 4L, 2L, 1L
), .Label = c("pas du tout satisfait", "plutôt pas satisfait",
"plutôt satisfait", "très satisfait"), class = c("ordered",
"factor"))
这是barplot的例子(没有轴上的值......):
代码如下。
Toto <- structure(c(3L, 2L, 3L, 2L, 2L, 3L, 2L, NA, 2L, 3L, 4L, 2L, 1L
), .Label = c("pas du tout satisfait", "plutôt pas satisfait",
"plutôt satisfait", "très satisfait"), class = c("ordered","factor"))
TotoNumeric <- as.data.frame(as.integer(Toto))
DataForGggplot2 <- as.data.frame(round(sapply(X = TotoNumeric, FUN = "mean", na.rm = TRUE), 1))
colnames(DataForGggplot2) <- "Donnees"
DataForGggplot2$Etiquette <- "the exercises"
Graphe <- ggplot(data = DataForGggplot2, aes(x = Etiquette, y = Donnees)) +
geom_bar(stat = "identity", fill = "blue") +
scale_y_continuous(limits = c(0, 4))
coord_flip()
print(Graphe)
如果我的要求不明确,我可以给你更多详细信息。
由于
答案 0 :(得分:1)
您可以在labels
中使用名为scale_y_continuous
的选项。
对于此示例,我假设您要使用的因素是Toto
。由于您设置了0 - 4的限制(即长度= 5),但只有Toto
的4个级别,我为值0添加了NA
。您还可以将限制设置为0 - 3或1 - 4,无需添加NA
级别。
library(ggplot2)
Toto <- structure(c(3L, 2L, 3L, 2L, 2L, 3L, 2L, NA, 2L, 3L, 4L, 2L, 1L
), .Label = c("pas du tout satisfait", "plutôt pas satisfait",
"plutôt satisfait", "très satisfait"), class = c("ordered","factor"))
TotoNumeric <- as.data.frame(as.integer(Toto))
DataForGggplot2 <- as.data.frame(round(sapply(X = TotoNumeric, FUN = "mean", na.rm = TRUE), 1))
colnames(DataForGggplot2) <- "Donnees"
DataForGggplot2$Etiquette <- "the exercises"
Graphe <- ggplot(data = DataForGggplot2, aes(x = Etiquette, y = Donnees)) +
geom_bar(stat = "identity", fill = "blue") +
scale_y_continuous(name="Toto", labels = c("NA", levels(Toto)),limits = c(0, 4))
coord_flip()
print(Graphe)
有关详细信息和示例,this是一个很好的资源。