R | ggplot2

!備忘,方便自己查詢,隨著使用更新,無參考價值。

Function reference
Top 50 ggplot2 Visualizations
The R Graph Gallery
RStudio Cheatsheets
ggplot2: elegant graphics for data analysis 3rd edition

《R語言數(shù)據(jù)可視化之美》配套代碼
知乎 | ggplot2作圖最全教程(上)
知乎 | ggplot2作圖最全教程(中)
知乎 | ggplot2作圖最全教程(下)

R_ggplot2基礎(chǔ)(一)
R_ggplot2基礎(chǔ)(二)
R_ggplot2基礎(chǔ)(三)
R_ggplot2基礎(chǔ)(四)

1. 基礎(chǔ)

  • ggplot()
一些想法:
1. ggplot要有兩個思想,圖層和映射;
   圖層的前后,達到的效果可能不同
2. 有許多冗余的功能,但要注意這些功能的細微區(qū)別;
3. 多看別人的繪圖代碼,提高對ggplot的理解和學(xué)習(xí)如何呈現(xiàn)自己的數(shù)據(jù);
4. 不需要掌握所有參數(shù),不需要直接生成最終版本的圖,哪怕用`AI`再修;
5. ggplot的擴展包很多,不可能都完全學(xué)會,總體把握下,學(xué)習(xí)自己需要的;
6. ......
  • aes()
    x
    y
    alpha: 透明度
    color: 顏色
    fill: 填充
    shape: 形狀
    width: 寬度
    linetype: 線型
注意一些參數(shù):
  • position: 參考:ggplot2位置調(diào)整position
    dodge: 并排放置,避免重疊
    fill: 堆疊圖形元素并將高度標(biāo)準(zhǔn)為 1
    identity: 不做調(diào)整
    jitter: 擾動避免重合
    stack: 圖形元素堆疊
  • stat
  • fill, color
  • group

2. 繪圖 geom_*

映射思想與變量:

一個連續(xù)型變量:密度圖、直方圖、Wikinson點圖
一個離散型變量:
兩個連續(xù)型變量:散點圖、氣泡圖
兩個離散型變量:條形圖/柱狀圖
一個離散一個連續(xù):箱線圖、小提琴圖

2.1 數(shù)據(jù)分布

直方圖、密度圖、Wilkinson點圖

核密度曲線是基于樣本數(shù)據(jù)對總體分布做出的一個估計。曲線的平滑程度取決于核函數(shù)的帶寬:帶寬越大,曲線越平滑。

  • geom_density()
  • geom_line()
    stat = "density"
    adjust
  • geom_dotplot()
  • geom_histogram()

箱線圖、小提琴圖、云雨圖

  • geom_boxplot()
  • geom_violin()
  • geom_dotplot()
boxplot, histogram, density.jpg

2.2 數(shù)值關(guān)系型

散點圖、氣泡圖、曲面擬合圖、瀑布圖、邊際線

  • geom_point()
    shape: 默認點形 19(實心圓)
    size: 默認大小為 2;映射時,范圍為 1 - 6,不反應(yīng)真實數(shù)值大小比例
    color, fill: 面對不同點形,有所區(qū)別
  • geom_jitter()
    R繪圖系統(tǒng)可以調(diào)用的點形
  • geom_rug(): 向散點圖添加邊際地毯
  • geom_smooth()
    method: lm時,調(diào)用lm()函數(shù)對數(shù)據(jù)擬合線性模型,此外:glm | gam | loess
    se: 邏輯型,為擬合線添加置信域
    level: 設(shè)置置信區(qū)間,默認 95%
# 點的大?。悍秶{(diào)整、比例調(diào)整
ggplot() +
  geom_point() +
  scale_size_area() # 使數(shù)據(jù)點的面積與變量值成正比
  # scale_size_continuous(range = )
  geom_smooth()

2.3 類別比較型

柱狀圖、餅圖、旭日圖、坡度圖、雷達圖、玫瑰圖

  • geom_bar(): 柱狀圖/條形圖
    stat = "identity"
    width = .8
    position = position_dodge(width = .5)
  • geom_col(): 條形圖/柱狀圖
  • geom_count()

2.4 添加文本

  • geom_label()
  • geom_text(): 添加文本

2.5 添加線

  • geom_segment()
  • geom_hline(): 添加橫線
  • geom_vline(): 添加豎線
  • geom_abline(): 添加有角度的線

2.6 誤差

  • geom_crossbar()
  • geom_errorbar()
  • geom_linerange()
  • geom_pointrange()

2.7 其他

  • geom_area()
  • geom_quantile()
  • geom_qq()

3. 統(tǒng)計 stat_*

4. 標(biāo)度scale_*

4.1 離散型變量顏色填充scale_fill_*scale_color_*

  • scale_fill_discrete()
    scale_colour_discrete(): 色輪周圍均勻等距色(同hue)
  • scale_fill_hue()
    scale_colour_hue(): 色輪周圍均勻等距色(discrete)
  • scale_fill_grey()
    scale_colour_grey(): 灰度調(diào)色板,
    start, end: 標(biāo)度范圍 0 ~ 1(黑色 ~ 白色),默認 0.2 ~ 0.8
  • scale_fill_brewer()
    scale_colour_brewer(): ColorBrewer調(diào)色板
    palette
library(RColorBrewer)
display.brewer.all(n=NULL, type="all", select=NULL, exact.n=TRUE, colorblindFriendly=FALSE)
RColorBrewer
  • scale_fill_manual()
    scale_colour_manual(): 自定義顏色
    values = c("red", "blue") | values = c("#CC6666", "#7777DD") | values = c(female="red", male="blue")
  • scale_alpha(): 透明度

4.2 連續(xù)型變量顏色填充scale_fill_*scale_color_*

  • scale_fill_gradient()
    scale_colour_gradient(): 兩色漸變
    low = "black"
    high = "white"
  • scale_fill_gradient2()
    scale_colour_gradient2(): 三色漸變
  • scale_fill_gradientn()
    scale_colour_gradientn(): 等間隔的 n 種顏色的漸變色
    colours = c("", "", "", "")
  • scale_alpha()

4.3 形狀大小

  • scale_shape()
  • scale_shape_manual()
  • scale_size()
  • scale_size_area()
  • scale_linetype()
  • scale_radius()

4.4 坐標(biāo)相關(guān)

注意與 coord_* 相區(qū)別。

  • scale_x_discrete()
    scale_y_discrete()
    limits
    breaks: 設(shè)置刻度線的位置
    labels: 修改刻度標(biāo)簽文本
  • scale_x_reverse()
    scale_y_reverse()
  • scale_x_continuous()
    scale_y_continuous()
  • xlim(): 設(shè)置連續(xù)型x坐標(biāo)軸值域,scale_x_continuous()的簡便寫法
  • ylim(): 設(shè)置連續(xù)型y坐標(biāo)軸值域,scale_y_continuous()的簡便寫法

5. 坐標(biāo) coord_*

  • coord_fixed(): 設(shè)置 x 軸和 y 軸的縮放比例
    ratio = 1/2
  • coord_flip(): 翻轉(zhuǎn)坐標(biāo)軸

直接對掉xy的映射不行嗎?不行,比如直方圖、密度圖這種只能映射x。反轉(zhuǎn)時是 y = x 鏡面對稱。

  • coord_cartesian():
    xlim
    ylim
    expand
  • coord_trans():
  • coord_polar(): 極坐標(biāo)
    theta: 繞x | y
    direction: -1 | 1, 順時針 | 逆時針
    start: 起始點

6. 圖例

guides() 我時常不能理解,也是功能冗余?scale_*中也可以設(shè)置guide參數(shù)啊。

7. 分面 facet_*

  • facet_wrap()
    scale: "fixed"(default) | "free_x" | "free_y" | "free"
  • facet_grid()

8. 主題 theme_*

  • theme_gray(): 默認主題
  • theme_bw(), theme_classic(), theme_void()
  • theme_dark(), theme_light(), theme_linedraw(), theme_minimal()
  • theme_set(): 設(shè)置當(dāng)前R會話下的默認主題,如:theme_set(theme_bw())

9. 細節(jié)

9.1 細節(jié)設(shè)置

  • annotate()
    geom: "text" | "rect" | "segment" | "pointrange"...

其他參數(shù)與geom_*對應(yīng)。

  • labs()
    title: 主標(biāo)題
    subtitle: 副標(biāo)題
    caption: 設(shè)置圖例標(biāo)題
    colour/fill
  • ggtitle()
  • xlab()
  • ylab()

有非常多的功能冗余?比如 labs(title, x, y) 等價于 ggtitle() + xlab() + ylab()。

9.2 主題元素

  • theme()
  1. 文本元素,如,所有文本元素text = element_text()
    family: Helvetica(無襯線)、Times(襯線)、Courier(等寬)
    face: plain(普通)、bold(粗體)、italic(斜體)、bold.italic(粗斜體)
    colour: 文字顏色
    size: 字體大小
    hjust: 橫向?qū)R,0(左對齊)、0.5(居中)、1(右對齊)
    vjust: 縱向?qū)R,0(底部對齊)、0.5(居中)、1(頂部對齊)
    angle: 旋轉(zhuǎn)角度
    lineheight: 行間距倍數(shù)
    注意:文本幾何對象的文本屬性與主題元素的基本一致。除了字體fontface。
其他文本元素:
plot.title`: 標(biāo)題文本外觀
legend.text` 圖例項文本的外觀;legend.title(): 圖例標(biāo)題
axis.title: 雙軸標(biāo)簽的外觀;axis.title.x: x軸;axis.title.y: y軸
axis.text: 雙軸刻度標(biāo)簽的外觀;axis.text.x: x軸;axis.text.y: y軸
strip.text: 雙向分面標(biāo)簽的外觀;strip.text.x: 橫向;strip.text.y: 縱向

在書上看到axis.ticksaxis.text一樣,也用于雙軸刻度標(biāo)簽外觀的設(shè)置,可能書上錯了吧。

  1. 矩形元素,如所有矩形元素rect = element_rect()
    colour
    fill
    size
其他矩形元素:
plot.background: 整個圖形的背景
panel.background: 繪圖區(qū)域背景;panel.border: 繪圖區(qū)域邊框
legend.background: 圖例的背景;legend.key: 圖例邊框
strip.background: 分面標(biāo)簽的背景
  1. 線條元素,如所有線條元素line = element_line()
其他線條元素:
axis.line`: 坐標(biāo)軸線
panel.grid.major`: 主網(wǎng)格線;panel.grid.major.x: 縱向;panel.grid.major.y: 橫向
panel.grid.minor`: 次網(wǎng)格線;panel.grid.minor.x: 縱向;panel.grid.minor.y: 橫向
  1. legend.position = "right": 圖例的位置,還可設(shè)置為"top"、"bottom"、"left"c(1, 0)這樣的位置坐標(biāo)
    設(shè)置為"none"移除所有圖例
  2. legend.justification = c(1, 0)
    原圖地址:https://henrywang.nl/ggplot2-theme-elements-demonstration/

10. 其他重要的相關(guān)的包

很多,其他文章中慢慢補充。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容