数学建模社区-数学中国

标题: R语言绘制二维密度图 [打印本页]

作者: 1047521767    时间: 2021-10-29 10:55
标题: R语言绘制二维密度图
R语言绘制二维密度图二维密度图显示了两个数值变量之间的关系,一个在x轴上表示,另一个在Y轴上表示,与散点图类似,然后计算二维空间中特定区域内的观测数,并用颜色梯度表示。二维密度图有几种类型,以下主要展示二维直方图和Hexbin图的绘图代码。/ g9 g2 t5 c+ w' B- m
) b0 X8 i2 G4 y3 m( G% R* a/ S% E
R语言|绘制二维直方图. J( f2 [+ Y4 D* p" D
对于2d直方图,plot区域被划分为多个正方形,调用geombin2d()函数,它提供了一个bins参数,用于控制要显示的bins数量。/ X- y# {9 f5 F5 @0 v7 @
& O2 O( ]6 b2 }! V" i- J4 z
1.先绘制基础的散点图;% a6 j+ Z3 K) y5 ~1 h: l5 }
##二维直方图
& Z$ U% N' R5 I# Library- Q- ?. g- z2 i$ t! t0 \
library(tidyverse)
/ ?9 O* N) Q" [8 z8 T3 L9 R& glibrary(ggplot2)$ ?- h* M- e; i' i

2 A4 Z* j! Y0 D+ x# 读取数据
1 d' w0 e7 k$ V& Ta <- data.frame( x=rnorm(20000, 10, 1.9), y=rnorm(20000, 10, 1.2) )3 J0 N' u4 a+ @- ~) J
b <- data.frame( x=rnorm(20000, 14.5, 1.9), y=rnorm(20000, 14.5, 1.9) )
' J5 [9 N) ?( Q5 O$ ^c <- data.frame( x=rnorm(20000, 9.5, 1.9), y=rnorm(20000, 15.5, 1.9) )" m6 h5 S( }- f8 O- K1 d
data <- rbind(a,b,c)0 G* k0 a& T; Z, s5 j( f

/ v+ a0 y; v  Q' ?& U* p' V#绘制基础的散点图* x8 j1 S7 U9 {2 ?/ U% s" x# N
ggplot(data, aes(x=x, y=y) ) +% ]& h8 l1 P. }6 R+ }
  geom_point()2 z4 g7 y$ J* L# ]9 U" |/ q' }% g

" Q0 K* O( ~& b- |
" s$ W' S- I3 p+ c# c, g' j  H2 O! w; x, q
2.绘制二维直方图。( n; x1 S- F) c* f
####二维直方图可使用geom_bin2d()函数绘制
8 ~( @9 T' h) ?#二维直方图默认选项# G' G+ i( ^" G9 x" v
ggplot(data, aes(x=x, y=y) ) +* H" }0 n  F5 T; o- x) A
  geom_bin2d() +. v, H; Q* H( d/ |* h2 v: j0 `) ?! W
  theme_bw()1 O( a8 `9 t: b
8 N. q& c' C; O! G
# Bin大小控制与调色板0 V9 \9 B$ J4 k9 B: U
ggplot(data, aes(x=x, y=y) ) +
8 H) b# j2 ?- G8 O8 R- Z  geom_bin2d(bins = 70) +
- f0 g  a9 c! H1 F7 s8 N  scale_fill_continuous(type = "viridis") +
2 Z3 l1 J6 f1 a7 y  theme_bw()0 }. D! ]7 S4 G  x4 O8 ^
/ ?7 K6 l' B7 e  d7 k+ I

) h# B+ H. N5 s. m. Q" W& @

R语言|绘制Hexbin图

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


0 l, @% N% T0 l: Z& D0 S; ~# Packages2 z' Y; v! w9 E. k: @1 p* P
library(hexbin)* t+ B- e6 G3 r  c- b3 Y, _1 I
library(RColorBrewer) # U) g- _/ o. H0 o3 W( Z  h4 G

- n0 q3 R( ]7 }% d6 B# Create data
8 p9 r9 I& j$ q' g2 Ex <- rnorm(mean=1.5, 5000)& G) i# \8 E! t
y <- rnorm(mean=1.6, 5000) 8 G3 a+ @% L/ t' E8 S
+ n$ n* l0 I' f9 B4 ?7 M
# Make the plot; V8 H/ D- a4 Q+ H) H) ]
bin<-hexbin(x, y, xbins=40)0 }* a2 p0 B: m; o
my_colors=colorRampPalette(rev(brewer.pal(11,'Spectral')))
8 o+ m7 R# e/ v$ A1 rplot(bin, main="" , colramp=my_colors , legend=F ) 4 u4 H9 C) U2 G" W; V5 _% ?3 L
- z7 |; ?% w1 ]% i+ Q0 Q5 w& Z

3 u1 ~8 W7 S  a0 E9 P8 s' ?: G





欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5