QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 3353|回复: 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图的绘图代码。6 s9 c0 b+ W9 _9 H' y! X
    : z; M+ V8 J; Q9 C3 X" @; R
    R语言|绘制二维直方图" g) k0 a2 j8 a: O+ N  V9 ?
    对于2d直方图,plot区域被划分为多个正方形,调用geombin2d()函数,它提供了一个bins参数,用于控制要显示的bins数量。
    ) z3 q5 E; e: g  Y; v$ D/ `# ?' @, E# c  T6 G% P% a. f0 x/ I7 i
    1.先绘制基础的散点图;
    : n6 B1 h; c+ i( {' W##二维直方图3 u$ p& g; c7 N0 H7 f
    # Library
    ! q" j4 [7 J- V7 b& k% L0 Ilibrary(tidyverse)1 o2 x# ^4 B' X- C- J  p$ L
    library(ggplot2)
    3 h% f( \, I, S8 q/ h- L- o2 d/ {- }6 c4 ]& w+ B  C) ^! Y
    # 读取数据
    - R4 |  p2 m7 a9 B3 h6 f+ ta <- data.frame( x=rnorm(20000, 10, 1.9), y=rnorm(20000, 10, 1.2) )
      @: q( l+ F9 I' e* T1 |( _/ kb <- data.frame( x=rnorm(20000, 14.5, 1.9), y=rnorm(20000, 14.5, 1.9) ): z- l/ J; J& h
    c <- data.frame( x=rnorm(20000, 9.5, 1.9), y=rnorm(20000, 15.5, 1.9) )
    - u8 ~# N) a" u4 Tdata <- rbind(a,b,c)5 b- s8 ^0 d% C) P
    $ g6 C, f/ w& ]" q
    #绘制基础的散点图
    " u. h9 L( D. c  m" S) Yggplot(data, aes(x=x, y=y) ) +7 A: o9 `9 c) w& G
      geom_point()2 Y( t5 h! Q- M$ X1 m

    0 t0 c' y, Y. o; `- A; R& j0 G  X- [& ~) Q: J
    7 o; g# E5 ]! r) Z% V8 l2 ^1 Q6 c
    2.绘制二维直方图。
    6 \! v+ F- x1 P) f3 o####二维直方图可使用geom_bin2d()函数绘制" P% @3 n6 V) Q* ?0 _" d
    #二维直方图默认选项
    ! V$ E: v, V. ?& Iggplot(data, aes(x=x, y=y) ) +3 R' U5 ~7 p6 e) p9 J' G2 y  N7 I
      geom_bin2d() +
    ( P( H& n/ X! b) Q3 O! N& d  theme_bw()" p/ P3 w" j7 P
    & c3 f) t0 W2 c) F( m5 h8 l
    # Bin大小控制与调色板
    " l) E+ S4 q8 c& Oggplot(data, aes(x=x, y=y) ) +
    8 ?9 f* E0 |+ k  geom_bin2d(bins = 70) +! A( I/ H# j& F- K" j* T! k
      scale_fill_continuous(type = "viridis") +
    . H; N7 V3 G- U- }9 x  theme_bw()
    , v+ T5 Z: Y8 H+ `4 L
    ; x' h: ]; T7 J2 n% F
    * o! e! U) |: |8 |

    R语言|绘制Hexbin图

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


    - I/ L; R) w. Y0 Z, E' J* `, G# Packages
    1 x" m- n. v/ N" V% ^! h* T' `! flibrary(hexbin)% i9 X. s5 U  K$ U7 |0 I
    library(RColorBrewer)
    " @( I$ x* C7 R, k
    ! G* N# U' y0 ~# D% Z2 ]$ [! K# Create data
    9 ~+ Z7 K: J0 R  r+ K! C' v) x0 ]1 X. Kx <- rnorm(mean=1.5, 5000)$ f, ^; K2 d0 A" d& i8 S
    y <- rnorm(mean=1.6, 5000)
    7 w! ~4 l2 V& c2 U. {9 `  P& w0 C. e! x1 I7 u" h; ~
    # Make the plot
    0 u$ k( \3 }* i2 T; i2 y( ]bin<-hexbin(x, y, xbins=40)( ?& P- }1 r0 D$ Z6 d- J: R5 X4 R
    my_colors=colorRampPalette(rev(brewer.pal(11,'Spectral')))
    ' N) \. P6 O- \1 nplot(bin, main="" , colramp=my_colors , legend=F )
    ' i% ^8 L; J: _& \' b6 j' d! S& |: g' k
    ' ?/ V8 A2 d, F: V# ~5 s% _# M
    8 I0 i- T1 A, l$ A( @
    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-23 05:29 , Processed in 0.387459 second(s), 52 queries .

    回顶部