docs/R-ggplot2.md

(PART) R 语言 {-}

ggplot2 包{#ggplot2}

直方图{#histogram}

以数据diamonds为例进行作图。

library(ggplot2)

head(diamonds)
## # A tibble: 6 x 10
##   carat cut       color clarity depth table price     x     y     z
##   <dbl> <ord>     <ord> <ord>   <dbl> <dbl> <int> <dbl> <dbl> <dbl>
## 1 0.23  Ideal     E     SI2      61.5    55   326  3.95  3.98  2.43
## 2 0.21  Premium   E     SI1      59.8    61   326  3.89  3.84  2.31
## 3 0.23  Good      E     VS1      56.9    65   327  4.05  4.07  2.31
## 4 0.290 Premium   I     VS2      62.4    58   334  4.2   4.23  2.63
## 5 0.31  Good      J     SI2      63.3    58   335  4.34  4.35  2.75
## 6 0.24  Very Good J     VVS2     62.8    57   336  3.94  3.96  2.48

普通直方图{#ordinary}

ggplot(diamonds, aes(price, fill=factor(cut))) + 
  geom_histogram(binwidth=5000, colour="white")

对上面的图像利用几个参数进行调节(平时不常用但是有用的参数):

ggplot(diamonds, aes(price, fill=factor(cut))) + 
  geom_histogram(binwidth=5000, colour="white", boundary=5000, show.legend=FALSE)

添加计数{#count}

ggplot(diamonds, aes(price, fill=factor(cut))) +
    geom_histogram(colour="white", binwidth=5000, boundary=5000, closed="right") +
    stat_bin(geom="text", binwidth=5000, boundary=5000, aes(y=..count.., label=..count..), vjust=1) +  
    scale_fill_discrete("cut")

添加百分比{#percentage}

library(scales)

ggplot(diamonds, aes(price, fill=factor(cut))) +
    geom_histogram(aes(y=..count../sum(..count..)), colour="white", binwidth=5000, boundary=5000) +
    scale_y_continuous(labels=percent) + 
    stat_bin(geom="text", binwidth=5000, boundary=5000, aes(y=..count../sum(..count..), label=percent(..count../sum(..count..))), vjust=1) +
    scale_fill_discrete("cut")

注意fill=factor(cut)放置的位置,放在ggplot()里面,就说明后面每一个图层都会用到,如果只是放在其中一个geom_ 中,则只有当前图层使用。

ggplot(diamonds, aes(price)) +
    geom_histogram(aes(fill=factor(cut)), colour="white", binwidth=5000, boundary=5000, closed="right") +
    stat_bin(geom="text", binwidth=5000, boundary=5000, aes(y=..count.., label=..count..), vjust=-0.5) +  
    scale_fill_discrete("cut")

library(scales)

ggplot(diamonds, aes(price)) +
    geom_histogram(aes(fill=factor(cut), y=..count../sum(..count..)), colour="white", binwidth=5000, boundary=5000) +
    scale_y_continuous(labels=percent) + 
    stat_bin(geom="text", binwidth=5000, boundary=5000, aes(y=..count../sum(..count..), label=percent(..count../sum(..count..))), vjust=-0.5) +
    scale_fill_discrete("cut")



shaocf/notes documentation built on Nov. 5, 2019, 8:51 a.m.