QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 3281|回复: 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图的绘图代码。+ a/ W7 P  C2 m" w" j
    & f1 e! D5 c9 }( W; P( m: h( p" t' P
    R语言|绘制二维直方图( y$ Y' D7 y# d7 G6 v0 X% k
    对于2d直方图,plot区域被划分为多个正方形,调用geombin2d()函数,它提供了一个bins参数,用于控制要显示的bins数量。
    5 d5 e5 h, d. t. t1 d; T! q/ Y# J5 B; g" W. F7 K& U8 B
    1.先绘制基础的散点图;
      d7 ]& j; e  i##二维直方图
    0 W) }+ u# F5 ]: M0 Q. {& @# Library2 b; O  ?# f5 p6 z& A. o
    library(tidyverse)
    8 x. i$ E4 ^+ [! v+ i& tlibrary(ggplot2)
    ( l4 W3 x! L% x+ W/ J. g3 d8 ?) }, Z1 P, E2 s( }
    # 读取数据
    % A( X9 x4 I; p" q, Oa <- data.frame( x=rnorm(20000, 10, 1.9), y=rnorm(20000, 10, 1.2) )6 b5 Q9 P# b7 D& S$ V0 ]/ v+ `- x
    b <- data.frame( x=rnorm(20000, 14.5, 1.9), y=rnorm(20000, 14.5, 1.9) )1 _$ D( Q/ Q* f; N% ?3 W- `7 D
    c <- data.frame( x=rnorm(20000, 9.5, 1.9), y=rnorm(20000, 15.5, 1.9) )
    7 ^. f4 C' _' Q4 K# I) O3 S# rdata <- rbind(a,b,c)
    , j. O. \' I1 X# ^, C9 h9 w% F! _% n4 [& G3 [
    #绘制基础的散点图
    7 }2 [1 t2 N( G- Jggplot(data, aes(x=x, y=y) ) +9 Z3 [9 |0 o; U) k) U
      geom_point()& P+ @$ j# D* F4 q* s7 W
    + l2 r( p1 d. A0 k$ k

    & R8 s, g) w2 t+ {
    % }6 I8 E, R% u6 F( t; n6 F9 ?0 T2.绘制二维直方图。
    " J9 Q" P( I0 w- X####二维直方图可使用geom_bin2d()函数绘制
    2 d7 O7 v1 v" m' S6 E1 A1 I1 {#二维直方图默认选项
    : {  S, ^/ d; L. A" A# W7 X6 m( M+ ^; Qggplot(data, aes(x=x, y=y) ) +/ q. I( V% A% p8 X' j7 k
      geom_bin2d() +
    ! u0 y/ M- v2 j  theme_bw()! M3 K6 G  r* X! B1 B7 s2 D0 x( B

    3 J# g$ q# U  D# Bin大小控制与调色板
    - I/ Q' H7 M* Q" O1 A- K6 o8 S' hggplot(data, aes(x=x, y=y) ) +
    7 H5 {+ \) L# j) M  geom_bin2d(bins = 70) +
    6 O7 u2 I& _0 J$ b% v  scale_fill_continuous(type = "viridis") +# J8 h3 P& O' }
      theme_bw()6 K3 a- J4 t! S. A$ u

    % J( }8 {( R7 |1 ?  ?- F$ Q* f* r& @! |

    R语言|绘制Hexbin图

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

    # U# u+ _0 V. q  q0 p7 e/ y
    # Packages
    # ^+ L% [$ E4 k* qlibrary(hexbin)
    . {. p+ |) z$ G. ?5 qlibrary(RColorBrewer)
    - x: K7 O+ x9 v, C
    4 ~2 S8 ]! @5 k% z# Create data) Z) n- z0 R( X' ]4 \* K" W) s1 {
    x <- rnorm(mean=1.5, 5000)
    " t! U2 T5 Z1 t( B$ W( }: m' j& iy <- rnorm(mean=1.6, 5000)   V" ]7 y# {8 P2 }1 b5 j6 t6 l, w
    ; R0 N- b9 v: ~2 a- r. c4 a
    # Make the plot
    2 |2 s3 s# ]+ l0 r6 O3 Z) ~5 t3 `bin<-hexbin(x, y, xbins=40)
    ( q6 ]: O7 G; m0 @! f% i! W* Cmy_colors=colorRampPalette(rev(brewer.pal(11,'Spectral')))
    0 ?2 X3 O- ^9 s! c3 \8 _1 o* c2 Iplot(bin, main="" , colramp=my_colors , legend=F ) ) O9 M+ A$ K. [! G" e; ^6 O

    ' V; _4 l; I+ z7 D5 t( G; e8 R1 P0 X

    6 j. p" B2 ?; d7 }* D4 W
    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-5-28 00:30 , Processed in 0.423925 second(s), 51 queries .

    回顶部