QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 3545|回复: 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图的绘图代码。
    0 A' g9 }6 M8 k' d  u: F2 i! O( \% n! s  M
    R语言|绘制二维直方图
    ( @9 r8 J- C6 z9 k$ d对于2d直方图,plot区域被划分为多个正方形,调用geombin2d()函数,它提供了一个bins参数,用于控制要显示的bins数量。
    . B: S$ u  N1 s" C/ ?# j( R* `, R
    1.先绘制基础的散点图;3 I- U3 Q% h$ ~3 T  l9 V( @$ c
    ##二维直方图
    # Y* C( H. a$ Y" ~' h) ]( Q# Library
    ; x2 l  g) x& U( H6 T- j/ ~: Plibrary(tidyverse)
    ( M& L4 x: [# u$ l" S% I" Plibrary(ggplot2)
    2 c# I$ O: q* t  t8 f8 n5 ?
    - f: s+ Q6 V* r  f: u. E, }7 `# 读取数据$ v/ H7 ^" k5 ^! a3 y; o/ S4 i
    a <- data.frame( x=rnorm(20000, 10, 1.9), y=rnorm(20000, 10, 1.2) ), G/ H( b2 K& z7 b* Q9 g# d. u4 ^
    b <- data.frame( x=rnorm(20000, 14.5, 1.9), y=rnorm(20000, 14.5, 1.9) )
    6 n0 n$ Y9 [+ Sc <- data.frame( x=rnorm(20000, 9.5, 1.9), y=rnorm(20000, 15.5, 1.9) )* s; m& W) g0 P* m, U) J& v$ Q
    data <- rbind(a,b,c); X7 s( _+ x( S) I& n; A

    ! R* x9 H" P: F# R#绘制基础的散点图
    3 c6 S, a! V8 k5 S- S' ^* Kggplot(data, aes(x=x, y=y) ) +
    # l* ~: I8 _9 i; h1 `  geom_point()
    ! D1 z# h0 I: o# s) d6 M+ P; m3 G! X6 |, S- f- q+ Y& ~* q
    ) j$ ~% P2 W$ ?! j1 }5 h  m1 E/ l% J

    4 a1 N! p+ V) Y% q) ^- M; J" T8 @2.绘制二维直方图。7 r: E1 Y/ ?! [% W9 U% f
    ####二维直方图可使用geom_bin2d()函数绘制
    % Z, P6 l  t+ r$ V+ b7 K#二维直方图默认选项2 i1 u7 d: I4 g# S7 t; n- o9 S
    ggplot(data, aes(x=x, y=y) ) +" f" @  N5 L% D* |( Z
      geom_bin2d() +6 h- _+ q  p) N) i# z1 n1 f- d4 ~! `
      theme_bw(); Z% K1 a0 d! F8 h

    * R7 u" f8 C  Y$ o; C5 ?' X$ E# Bin大小控制与调色板
    , P& n- {3 v1 e4 A7 w! L! P& Rggplot(data, aes(x=x, y=y) ) +8 z0 b4 X4 A8 m6 \$ J
      geom_bin2d(bins = 70) +
    / H2 Q3 R# y- s  scale_fill_continuous(type = "viridis") +( ]% H+ |3 N1 b3 b6 @
      theme_bw()1 T7 x1 E) z$ C
    " H1 m; S( r# E2 c7 J; z* I
    % C! S3 h' G0 ~) n1 ?9 p3 ^

    R语言|绘制Hexbin图

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

    , q/ E* s% y7 L' D6 A: L7 c
    # Packages
    % }- C+ ?1 ]' {0 ?8 [) v' alibrary(hexbin)3 t5 M0 o8 j1 L0 Y" M
    library(RColorBrewer)
    + h' `$ Z3 v9 S% o" t) s0 x3 }  e/ a  m# \+ J+ |' B% _6 E9 `
    # Create data" [* O# ?' c. |/ ?
    x <- rnorm(mean=1.5, 5000)6 e3 J" v! V$ A
    y <- rnorm(mean=1.6, 5000) # [- ?; ^9 C  i! i

    4 ?# |- u# ]  z9 B# Make the plot9 `2 g/ G5 q2 L$ `' _7 H8 T
    bin<-hexbin(x, y, xbins=40)2 G5 t  X4 c- g3 q5 R' `# n7 ^
    my_colors=colorRampPalette(rev(brewer.pal(11,'Spectral'))), Q- L4 U( [2 V1 n
    plot(bin, main="" , colramp=my_colors , legend=F ) 5 F; e: t" V* D6 q
    # X6 |* G5 k) Q0 i. z
    , p( v1 O+ Q0 q! x5 {

    . f! c8 G6 W9 @( T9 K! N
    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-10-24 02:17 , Processed in 0.648018 second(s), 52 queries .

    回顶部