如何绘制R中通过测量分组/着色的列的分布

时间:2015-12-10 20:39:55

标签: r ggplot2

我有一个这样的示例数据框:

Measurement <- c("Length","Breadth","Length","Breadth","Height",
                 "Height","Breadth","Length","Height","Breadth",
                 "Length","Height","Height","Breadth","Length")
Value <- c(45,43,45,100,62,62,43,74,74,74,12,17,17,44,12)
data <- data.frame(Measurement, Value)

我正在尝试将这些数据可视化以查看每次测量的值是如何分配的,以及我们是否将测量值组合在一起。我使用直方图的基本图来做到这一点,但这不具有视觉吸引力

hist(data$Value)

enter image description here

有些人可以帮我使用ggplot2或其他高级可视化来更好地查看这些数据,我想按测量分组。我想看看密度图是否在这里意味着什么。任何帮助,将不胜感激。

3 个答案:

答案 0 :(得分:3)

以下是一些有趣的选择:

library(ggplot2)
ggplot(data, aes(factor(Measurement), Value)) + geom_violin(aes(fill = factor(Measurement)))
ggplot(data, aes(Value, colour = Measurement, group = Measurement)) + geom_density(fill=NA)

他们产生以下内容:

Violin Plot

Density Plot

希望这有帮助!

答案 1 :(得分:1)

这是使用geom_histogram的另一种可能性。要获得最佳,最具信息性的直方图,必须为每个新数据集手动设置binwidth

library(ggplot2)

p = ggplot(data=data, aes(x=Value, fill=Measurement)) + 
    geom_histogram(binwidth=1, colour="grey40", drop=TRUE) + 
    facet_grid(Measurement ~ ., margins=TRUE) +
    theme_bw()

ggsave("hist.png", plot=p, width=8, height=4, dpi=150)

enter image description here

答案 2 :(得分:0)

不确定我是否理解这些问题。你想分开价值观吗? 为此,你可以这样做:

ValueLength <- data.frame(Value = Value[which(Measurement == "Length")], Measurement = "Lenghth")
ValueBreadth <- data.frame(Value = Value[which(Measurement == "Breadth")], Measurement = "Breadth")
ValueHeight <- data.frame(Value = Value[which(Measurement == "Height")], Measurement = "Height")

然后,您可以再次将它们组合在一个数据框中:

Values <- rbind(ValueLength, ValueBreadth, ValueHeight)

用ggplot绘图:

ggplot(Values, aes(Value, fill = Measurement)) + geom_density(alpha = 0.2)

ggplot