数学建模社区-数学中国
标题: R语言绘制二维密度图 [打印本页]
作者: 1047521767 时间: 2021-10-29 10:55
标题: R语言绘制二维密度图
R语言绘制二维密度图二维密度图显示了两个数值变量之间的关系,一个在x轴上表示,另一个在Y轴上表示,与散点图类似,然后计算二维空间中特定区域内的观测数,并用颜色梯度表示。二维密度图有几种类型,以下主要展示二维直方图和Hexbin图的绘图代码。
9 Z% j; `* \: |3 y6 B
7 f0 k: ?4 I* g# F7 h8 N5 }R语言|绘制二维直方图
7 A* t" C0 L& ?" p1 H对于2d直方图,plot区域被划分为多个正方形,调用geombin2d()函数,它提供了一个bins参数,用于控制要显示的bins数量。
4 J6 r, _1 ~ X' o* `2 E
2 n# \: @" E7 q7 p$ Y a0 @& b1.先绘制基础的散点图;5 a2 z# M) `5 F f5 t+ d0 Q
##二维直方图
; k* R. Y: J: d8 s$ G# Library0 i9 f$ i9 x* I4 y0 W7 i8 g _
library(tidyverse)1 ]8 v$ d z1 Z0 k$ F. l. E3 z9 n
library(ggplot2)
0 R A- E l& G! x
1 q6 I) ~/ ^5 d5 M3 e# 读取数据7 d- |1 d* I+ n5 R. L5 W
a <- data.frame( x=rnorm(20000, 10, 1.9), y=rnorm(20000, 10, 1.2) )7 I6 N, [5 C$ p- M" x
b <- data.frame( x=rnorm(20000, 14.5, 1.9), y=rnorm(20000, 14.5, 1.9) )
: _) j/ P r1 |7 h( \0 g- |) G, wc <- data.frame( x=rnorm(20000, 9.5, 1.9), y=rnorm(20000, 15.5, 1.9) )
) s* l' W9 w; T. D) ~% o hdata <- rbind(a,b,c)
2 p8 X$ j& T# J( f% p6 d. R7 {; s* R) f8 J+ V
#绘制基础的散点图7 q3 e9 _% e( t( C/ b0 Q
ggplot(data, aes(x=x, y=y) ) +' }$ h8 Y+ P7 R2 `: n$ F* }- N' u
geom_point()) _9 g7 V4 q+ e/ \9 C: l4 L
, D& k0 f$ n0 [/ f V! }' r
- S! p* ~) b5 i6 d
S$ Z. f* y7 e4 v d. N2.绘制二维直方图。
7 k% d5 b8 ~- T####二维直方图可使用geom_bin2d()函数绘制
) g+ H. K |* j#二维直方图默认选项1 T6 Z `0 P3 N$ [! `
ggplot(data, aes(x=x, y=y) ) +
( K0 v4 r8 H- P! ^$ w8 {& {! | K geom_bin2d() +
. [- g+ t* z \1 X! @ theme_bw()
" U1 V {, m2 ?6 ^% i+ ^' R7 Y- c+ V e2 X, E# l, E& m
# Bin大小控制与调色板 v6 z, B/ a9 a" \. ?3 K+ l( m, j* i
ggplot(data, aes(x=x, y=y) ) +
8 W# p& H* H1 O }8 i6 Q8 k- C geom_bin2d(bins = 70) +& I2 W2 Z B, v1 [8 p
scale_fill_continuous(type = "viridis") +
# H' Z+ S e3 K# o theme_bw()
: v! @# ?$ X$ Y- x
! {% }3 E% I: E) m
, {1 n0 _3 ~5 j" O6 C1 s) t6 B
R语言|绘制Hexbin图
当显示大型数据集时,散点图很难解释,因为点不可避免地会被覆盖,并且可能不被单独识别出来。hexbin图中将地块划分为多个六边形,图中阴影部分代替了条形图的高度。图形是通过R的hexbin包绘制的。
$ @+ p: C/ ~6 {7 K, P5 T$ k
# Packages) S. F3 S7 k1 z$ D) R$ E4 i% ~
library(hexbin)
8 O5 ?7 \, X% w1 j3 Y, mlibrary(RColorBrewer) 2 }4 ]" w, N7 T+ C
0 _7 P ^2 u3 B) P( C
# Create data8 s9 X' D5 S" B/ J& H
x <- rnorm(mean=1.5, 5000)
4 W5 p& P8 k6 R! \# zy <- rnorm(mean=1.6, 5000) 3 g4 O# |9 d% w/ G
: v% s8 F# a4 j
# Make the plot" u6 k- @* t4 L* n- Y& q+ q
bin<-hexbin(x, y, xbins=40)
+ I S# ^ i2 X5 _% y( O+ Fmy_colors=colorRampPalette(rev(brewer.pal(11,'Spectral')))
: X4 d! D8 ^0 d8 J: Qplot(bin, main="" , colramp=my_colors , legend=F )
5 i) ^# l8 f% H' s7 T
/ Y8 }8 `# Z; N7 b2 m. ^3 G# b. {; K
z% ?5 F, l& K6 l! N3 I8 w2 [0 m1 J# [- b# f/ C# X& c
| 欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) |
Powered by Discuz! X2.5 |