QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 3348|回复: 0
打印 上一主题 下一主题

R语言绘制二维密度图

[复制链接]
字体大小: 正常 放大

1178

主题

15

听众

1万

积分

  • TA的每日心情
    开心
    2023-7-31 10:17
  • 签到天数: 198 天

    [LV.7]常住居民III

    自我介绍
    数学中国浅夏
    跳转到指定楼层
    1#
    发表于 2021-10-29 10:55 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta
    R语言绘制二维密度图二维密度图显示了两个数值变量之间的关系,一个在x轴上表示,另一个在Y轴上表示,与散点图类似,然后计算二维空间中特定区域内的观测数,并用颜色梯度表示。二维密度图有几种类型,以下主要展示二维直方图和Hexbin图的绘图代码。
    " U* f( y4 h/ [; y
    : t0 ~: m$ N, _' C! b! I0 ^R语言|绘制二维直方图
    / p& C9 e) d9 R* S5 {( _9 k/ a对于2d直方图,plot区域被划分为多个正方形,调用geombin2d()函数,它提供了一个bins参数,用于控制要显示的bins数量。
    / U7 G* D7 l) {$ T' z$ m% l" `9 H* ?9 z2 L9 ~6 o
    1.先绘制基础的散点图;* b$ J2 A6 |" t7 Q+ }$ G
    ##二维直方图( l1 `# D1 w( e' e. N0 [" L7 f& L/ v
    # Library
    5 @; t6 u  U6 T" m" ]library(tidyverse)$ ~" {& p& p# D% s& J) G
    library(ggplot2)7 T+ r$ r& e3 R% d

    * `4 o% Q; V/ O1 H4 r3 a% f7 G* n# 读取数据+ R+ [0 ~! B3 O7 j
    a <- data.frame( x=rnorm(20000, 10, 1.9), y=rnorm(20000, 10, 1.2) )
    : S& [2 X: A7 l) t2 vb <- data.frame( x=rnorm(20000, 14.5, 1.9), y=rnorm(20000, 14.5, 1.9) ), @& l4 ^: e; l: r- ^
    c <- data.frame( x=rnorm(20000, 9.5, 1.9), y=rnorm(20000, 15.5, 1.9) )3 F4 Q5 c9 [, S6 m
    data <- rbind(a,b,c)' Y0 _1 d) ~* g$ ?4 Y9 K

    # `* a9 @2 B# J$ q2 W7 d9 }3 ~#绘制基础的散点图
    + H8 L" T: {1 E, a5 \0 dggplot(data, aes(x=x, y=y) ) +
    0 U% `. s0 |5 K" P/ p  geom_point()
      u9 G8 i: n( W
    ( u" _0 m1 @  S5 T( i7 [# Y3 _" f; B8 X! f, E8 C8 D4 O
    : |% V: p1 r6 n+ |" \
    2.绘制二维直方图。+ D  ?" o# h- r  G' u
    ####二维直方图可使用geom_bin2d()函数绘制
    3 H3 h$ O: R& q, v#二维直方图默认选项
    ! y* F; J! |7 Zggplot(data, aes(x=x, y=y) ) +1 C- q" d  ~, l! C
      geom_bin2d() +( ~8 [) u( t. s) A
      theme_bw()
    6 H2 P2 K6 F8 R. _3 J4 |$ u+ j1 M/ @, ^3 w- n1 i4 W4 m
    # Bin大小控制与调色板
    + I0 ]- W1 u9 j4 Kggplot(data, aes(x=x, y=y) ) +
    2 }5 w5 |7 {* l. n. @) }. `  geom_bin2d(bins = 70) +' d5 e' H; ?' ]
      scale_fill_continuous(type = "viridis") +* E; ?$ b3 }  X' q" l' i
      theme_bw()
    ! ]2 U+ Z: K# B4 ?5 R5 {2 H& w9 t
    . J4 Q. i# B- D4 L2 W
    * @* S/ g8 t7 }3 H5 f

    R语言|绘制Hexbin图

    当显示大型数据集时,散点图很难解释,因为点不可避免地会被覆盖,并且可能不被单独识别出来。hexbin图中将地块划分为多个六边形,图中阴影部分代替了条形图的高度。图形是通过R的hexbin包绘制的。

    3 F, x# q+ W, X' ]# I9 Y+ Q% `
    # Packages
    - g$ ~8 O9 q% ]# q! k; {library(hexbin)3 J. G0 ~5 i* v: `/ H
    library(RColorBrewer) & N3 w; F* A" R0 t( R/ D( G: @
    8 j' g- c8 M: H, _* M* ~
    # Create data
    , G: \. ]5 H. I5 Ux <- rnorm(mean=1.5, 5000)8 d" _; m4 Z7 t9 ~2 C) t
    y <- rnorm(mean=1.6, 5000) # z: p. [1 S9 }; n% s& h

    1 j! U# t( n( c6 Q# Make the plot
    ! S8 e3 Y! Y8 y# Z# M1 Xbin<-hexbin(x, y, xbins=40)
    - o' o5 K( ]5 b' S1 r& Bmy_colors=colorRampPalette(rev(brewer.pal(11,'Spectral')))8 }. d8 W+ I: o; N+ a! L" i! J
    plot(bin, main="" , colramp=my_colors , legend=F ) 3 u7 W! K9 B' D

    8 `9 ^2 t  O- {6 z. ~; `
    0 W% X, i) W; h4 i9 I$ b
    ! H# l7 q" R! X3 t+ L% H0 d* l
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2026-7-22 07:07 , Processed in 0.527136 second(s), 50 queries .

    回顶部