数学建模社区-数学中国

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

作者: 1047521767    时间: 2021-10-29 10:55
标题: R语言绘制二维密度图
R语言绘制二维密度图二维密度图显示了两个数值变量之间的关系,一个在x轴上表示,另一个在Y轴上表示,与散点图类似,然后计算二维空间中特定区域内的观测数,并用颜色梯度表示。二维密度图有几种类型,以下主要展示二维直方图和Hexbin图的绘图代码。9 H; R( s" [9 t/ S
  e) Q) a* r" b% F' n
R语言|绘制二维直方图
; d+ }6 q* g0 r- J, z. J$ ~. h8 z对于2d直方图,plot区域被划分为多个正方形,调用geombin2d()函数,它提供了一个bins参数,用于控制要显示的bins数量。  G6 K5 ~; W) l6 Q6 z
5 t5 J. u5 \! K$ T5 N: h8 ]6 R
1.先绘制基础的散点图;
/ g6 E7 d) }% r- v% M; z##二维直方图
) T& x% U+ f: C+ l( q: z9 e# Library
  K1 B% [: \! g: @6 Vlibrary(tidyverse)
" T8 f5 Q* K; tlibrary(ggplot2)- `) l% L5 a9 w9 F

; @. [4 [; d" q  q4 C# 读取数据
: Q3 x6 Y2 R' O8 X' Y# ]a <- data.frame( x=rnorm(20000, 10, 1.9), y=rnorm(20000, 10, 1.2) )
2 P" ?. K) F/ ]9 R+ ~- g3 Jb <- data.frame( x=rnorm(20000, 14.5, 1.9), y=rnorm(20000, 14.5, 1.9) )
. l4 m; H" G, x% yc <- data.frame( x=rnorm(20000, 9.5, 1.9), y=rnorm(20000, 15.5, 1.9) )
6 k$ d/ h4 s+ f: G% r4 N1 N# f1 ndata <- rbind(a,b,c); L& \' t5 }0 W3 l/ |6 `$ I* n1 {

" ^$ y$ ]1 w3 q$ O#绘制基础的散点图
# D% i* V: T# o+ C9 yggplot(data, aes(x=x, y=y) ) +
) @+ `$ h/ T3 k- b0 y* S  geom_point()5 W4 ^; z* P! r0 c; d, c0 D

* O9 {3 U. a7 I* u# D3 v7 M0 _" X% W* |. k9 g9 l4 ^

! x6 G7 k- b2 Q+ j7 u# @2.绘制二维直方图。
, |3 N: p6 T) a####二维直方图可使用geom_bin2d()函数绘制3 F( w! |; Q0 J0 n
#二维直方图默认选项4 z  w$ M  G# S1 G
ggplot(data, aes(x=x, y=y) ) +
* z3 y* D7 V; d$ g& X" n6 {; [0 c  geom_bin2d() +! E9 d2 x6 W& o
  theme_bw()/ E- q" }0 x7 i# O" q

1 T* |, B$ {0 h' o( C- J# Bin大小控制与调色板, r2 Q+ w- w0 \+ S
ggplot(data, aes(x=x, y=y) ) +. b. N  S; y: K9 M; V+ I. i) P/ V
  geom_bin2d(bins = 70) +  x4 u" z& T1 i6 v4 ?* p! A+ G2 Z
  scale_fill_continuous(type = "viridis") ++ w' y1 k1 @$ a& B+ N0 L- l
  theme_bw()) Q3 }5 j2 l5 n# D

) a5 z4 h3 Z/ @& H
. Y0 [8 r0 I2 ]6 x. p: i

R语言|绘制Hexbin图

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

& o: D3 t) t' H6 _! q
# Packages) M7 J/ {3 y8 I8 y
library(hexbin)
, b# W% Q% I5 e# G! s+ |  p1 Klibrary(RColorBrewer) * M1 |+ U9 _) o9 o% [/ K
, `. F" M7 K; I' z' H* M
# Create data: w! c2 n3 N: T' q' ~/ `1 ?  z
x <- rnorm(mean=1.5, 5000)
: }5 u9 a* m- l$ r4 J. M1 Q$ b  ~2 iy <- rnorm(mean=1.6, 5000)
" B; t/ z) _! \) K8 Q2 \2 w$ e/ Q7 V( A* W# p+ B1 a  e+ L+ l/ K3 v
# Make the plot
& t% J* e* t) s7 Z  A% Qbin<-hexbin(x, y, xbins=40)
* r2 l/ D0 y4 i6 h0 ~7 D2 |0 fmy_colors=colorRampPalette(rev(brewer.pal(11,'Spectral')))
. V( r6 S$ H$ o: i4 @' ?plot(bin, main="" , colramp=my_colors , legend=F ) 4 E& y6 h& W2 `: k- B; w
5 }$ O/ ^4 s. B  B3 V1 }( `
5 k5 x* J! |' d1 N

1 {6 b# F3 z/ m1 S6 D" e+ y




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