这是x呼噜噜的第二个帖子,之前怪我写的太敷衍了。我觉得也还好呢。那就改成为了让呼噜噜少睡觉多学东西,所以开了这么一个帖子吧。
对于一个数据分布来说,我们除了使用条形图来看结果之外,同时也可以使用密度分布图来查看数据的结果。密度分布图其实就是把箱子变成了密度曲线。反应的东西都是一样的,都是来反映数据分布的。
ggplot2当中我们可以通过geom_density以及geom_freqpoly来实现密度图。前者的Y轴代表的比例。后者代表的则是例数。
library(ggplot2)
library(hrbrthemes)
## NOTE: Either Arial Narrow or Roboto Condensed fonts are required to use these themes.
## Please use hrbrthemes::import_roboto_condensed() to install Roboto Condensed and
## if Arial Narrow is not on your system, please see http://bit.ly/arialnarrow
p1 <- ggplot(mpg, aes(cty)) + geom_density(fill="#69b3a2", color="#e9ecef", alpha=0.8) + theme_ipsum()
p2 <- ggplot(mpg, aes(cty)) + geom_freqpoly(fill="#69b3a2", color="#e9ecef") + theme_ipsum()
## Warning: Ignoring unknown parameters: fill
cowplot::plot_grid(p1, p2)
## Warning in grid.Call(C_stringMetric, as.graphicsAnnot(x$label)): font
## family 'Arial Narrow' not found in PostScript font database
## Warning in grid.Call(C_stringMetric, as.graphicsAnnot(x$label)): font
## family 'Arial Narrow' not found in PostScript font database
## Warning in grid.Call(C_stringMetric, as.graphicsAnnot(x$label)): font
## family 'Arial Narrow' not found in PostScript font database
## Warning in grid.Call(C_stringMetric, as.graphicsAnnot(x$label)): font
## family 'Arial Narrow' not found in PostScript font database
## Warning in grid.Call(C_stringMetric, as.graphicsAnnot(x$label)): font
## family 'Arial Narrow' not found in PostScript font database
## Warning in grid.Call(C_stringMetric, as.graphicsAnnot(x$label)): font
## family 'Arial Narrow' not found in PostScript font database
## Warning in grid.Call(C_stringMetric, as.graphicsAnnot(x$label)): font
## family 'Arial Narrow' not found in PostScript font database
## Warning in grid.Call(C_stringMetric, as.graphicsAnnot(x$label)): font
## family 'Arial Narrow' not found in PostScript font database
## Warning in grid.Call(C_stringMetric, as.graphicsAnnot(x$label)): font
## family 'Arial Narrow' not found in PostScript font database
## Warning in grid.Call(C_stringMetric, as.graphicsAnnot(x$label)): font
## family 'Arial Narrow' not found in PostScript font database
## Warning in grid.Call(C_stringMetric, as.graphicsAnnot(x$label)): font
## family 'Arial Narrow' not found in PostScript font database
## Warning in grid.Call(C_stringMetric, as.graphicsAnnot(x$label)): font
## family 'Arial Narrow' not found in PostScript font database
## Warning in grid.Call(C_stringMetric, as.graphicsAnnot(x$label)): font
## family 'Arial Narrow' not found in PostScript font database
## Warning in grid.Call(C_stringMetric, as.graphicsAnnot(x$label)): font
## family 'Arial Narrow' not found in PostScript font database
## Warning in grid.Call(C_stringMetric, as.graphicsAnnot(x$label)): font
## family 'Arial Narrow' not found in PostScript font database
## Warning in grid.Call(C_stringMetric, as.graphicsAnnot(x$label)): font
## family 'Arial Narrow' not found in PostScript font database
## Warning in grid.Call(C_stringMetric, as.graphicsAnnot(x$label)): font
## family 'Arial Narrow' not found in PostScript font database
## Warning in grid.Call(C_stringMetric, as.graphicsAnnot(x$label)): font
## family 'Arial Narrow' not found in PostScript font database
## Warning in grid.Call(C_stringMetric, as.graphicsAnnot(x$label)): font
## family 'Arial Narrow' not found in PostScript font database
## Warning in grid.Call(C_stringMetric, as.graphicsAnnot(x$label)): font
## family 'Arial Narrow' not found in PostScript font database
## Warning in grid.Call(C_stringMetric, as.graphicsAnnot(x$label)): font
## family 'Arial Narrow' not found in PostScript font database
## Warning in grid.Call(C_stringMetric, as.graphicsAnnot(x$label)): font
## family 'Arial Narrow' not found in PostScript font database
## Warning in grid.Call(C_stringMetric, as.graphicsAnnot(x$label)): font
## family 'Arial Narrow' not found in PostScript font database
## Warning in grid.Call(C_stringMetric, as.graphicsAnnot(x$label)): font
## family 'Arial Narrow' not found in PostScript font database
## Warning in grid.Call(C_stringMetric, as.graphicsAnnot(x$label)): font
## family 'Arial Narrow' not found in PostScript font database
## Warning in grid.Call(C_stringMetric, as.graphicsAnnot(x$label)): font
## family 'Arial Narrow' not found in PostScript font database
## Warning in grid.Call(C_stringMetric, as.graphicsAnnot(x$label)): font
## family 'Arial Narrow' not found in PostScript font database
## Warning in grid.Call(C_stringMetric, as.graphicsAnnot(x$label)): font
## family 'Arial Narrow' not found in PostScript font database
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
# Dummy data
data <- data.frame(
var1 = rnorm(1000),
var2 = rnorm(1000, mean=2)
)
# Chart
p <- ggplot(data, aes(x=x) ) +
# Top
geom_density( aes(x = var1, y = ..density..), fill="#69b3a2" ) +
geom_label( aes(x=4.5, y=0.25, label="variable1"), color="#69b3a2") +
# Bottom
geom_density( aes(x = var2, y = -..density..), fill= "#404080") +
geom_label( aes(x=4.5, y=-0.25, label="variable2"), color="#404080") +
theme_ipsum() +
xlab("value of x")
p
对于散点图配密度图这样的可视化,我们可以通过ggExtra::ggMarginal实现。这个里面,我们可以通过type参数选择可视化的方式
library(ggExtra)
p <- ggplot(mtcars, aes(x=wt, y=mpg, color=cyl, size=cyl)) +
geom_point() +
theme(legend.position="none")
# with marginal histogram
p1 <- ggMarginal(p, type="histogram")
# marginal density
p2 <- ggMarginal(p, type="density")
# marginal boxplot
p3 <- ggMarginal(p, type="boxplot")
cowplot::plot_grid(p,p1,p2,p3, ncol = 2)