数学建模社区-数学中国
标题: R语言绘制二维密度图 [打印本页]
作者: 1047521767 时间: 2021-10-29 10:55
标题: R语言绘制二维密度图
R语言绘制二维密度图二维密度图显示了两个数值变量之间的关系,一个在x轴上表示,另一个在Y轴上表示,与散点图类似,然后计算二维空间中特定区域内的观测数,并用颜色梯度表示。二维密度图有几种类型,以下主要展示二维直方图和Hexbin图的绘图代码。& c0 d @" j5 G+ t0 x' T( d
9 k7 A: w1 U8 M% s& {9 E& Q
R语言|绘制二维直方图5 I3 x: S4 L7 t7 D# L6 V9 r+ r
对于2d直方图,plot区域被划分为多个正方形,调用geombin2d()函数,它提供了一个bins参数,用于控制要显示的bins数量。) h; p2 w+ O9 |, r" t
4 s4 f1 J! x3 `% ~* K; M1.先绘制基础的散点图;; N9 O3 A% o3 v7 @. U$ B
##二维直方图$ B8 t7 U9 w- `7 q- }
# Library) D4 z( P8 X# J+ _
library(tidyverse)
* e4 \) Y+ [ g4 @) Glibrary(ggplot2)
; \% c% l& x1 N' ? ]
! c- A8 U+ I: S" P/ T/ e" C" L# 读取数据! K8 K5 x' c$ D
a <- data.frame( x=rnorm(20000, 10, 1.9), y=rnorm(20000, 10, 1.2) )
8 _- G) u. T0 nb <- data.frame( x=rnorm(20000, 14.5, 1.9), y=rnorm(20000, 14.5, 1.9) )
+ ~' ^7 m* A4 B" v8 I9 d3 u2 {c <- data.frame( x=rnorm(20000, 9.5, 1.9), y=rnorm(20000, 15.5, 1.9) ): Q- z/ r! @- \& A. c4 E5 W, I/ u
data <- rbind(a,b,c)
+ e' I2 u/ h7 Z6 D( E
. U" x0 ]- r9 v# ^7 L s1 f#绘制基础的散点图" E+ l! l. ^3 ~/ H
ggplot(data, aes(x=x, y=y) ) +5 x( o V% ?; ]4 ?/ _
geom_point()& c6 U1 g ^$ i; R: K& P
1 d" [2 ~2 U; i- K8 n
. y5 A1 }- B2 @
. a" j+ n6 b$ C: I" X9 x5 E
2.绘制二维直方图。1 [* h6 n/ f2 A0 `5 O! ]
####二维直方图可使用geom_bin2d()函数绘制
6 ]) h! G0 y% q# |$ b7 Z#二维直方图默认选项" S5 ]: ?7 G3 g8 E) V
ggplot(data, aes(x=x, y=y) ) +
, F {; Z# f6 J. @ geom_bin2d() +5 `9 J1 b% C! Q; x/ A
theme_bw()9 x$ y7 R4 c' h7 J+ k, H
' x6 i* d; ]5 _+ ^" d { ~# Bin大小控制与调色板
# t7 o9 Y4 l& b3 G( l. cggplot(data, aes(x=x, y=y) ) +7 f }$ i% T1 P$ _4 T; K+ c$ Q; K
geom_bin2d(bins = 70) +8 [$ m+ C# p" j0 L/ s# G
scale_fill_continuous(type = "viridis") +
; x) J# _' g/ s3 N' H theme_bw()
! w+ i! b( b& `8 P9 ]. C
# w/ b* B" ?+ R- a0 B3 ]# j
7 U' r8 p& l/ V4 yR语言|绘制Hexbin图
当显示大型数据集时,散点图很难解释,因为点不可避免地会被覆盖,并且可能不被单独识别出来。hexbin图中将地块划分为多个六边形,图中阴影部分代替了条形图的高度。图形是通过R的hexbin包绘制的。
' F6 k6 F2 e& I9 n0 O# I6 m# E3 f9 z# Packages
8 W5 u( K b3 P* ^library(hexbin). O9 s1 }! t) V& H9 V$ i4 U
library(RColorBrewer) / e) j6 `$ e' o/ C7 Y, C/ ~
+ C3 r9 V6 O( H# E1 V6 `# Create data
7 s$ x9 G5 d5 L* s' I. D0 mx <- rnorm(mean=1.5, 5000): A) U0 v' O; n6 o& s; B, R+ G
y <- rnorm(mean=1.6, 5000)
3 T+ q v5 D( E6 g% \1 P' I; V% F" I% g" ^
# Make the plot9 \, C; ]8 Y! ` p+ ^: t! _1 e
bin<-hexbin(x, y, xbins=40)
& b/ i: k5 C# ^% r# Y8 G6 t, {% Lmy_colors=colorRampPalette(rev(brewer.pal(11,'Spectral')))
( |9 O, p$ k* p6 _2 A- N. Cplot(bin, main="" , colramp=my_colors , legend=F ) w! Z! x1 R0 B" g: A1 x
7 C1 F7 n! c( }% u
8 ?7 J1 n* T1 \0 X. O9 \. J% z
4 X! y) P, ]0 C. F) U {' i6 w
| 欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) |
Powered by Discuz! X2.5 |