数学建模社区-数学中国
标题: R语言绘制二维密度图 [打印本页]
作者: 1047521767 时间: 2021-10-29 10:55
标题: R语言绘制二维密度图
R语言绘制二维密度图二维密度图显示了两个数值变量之间的关系,一个在x轴上表示,另一个在Y轴上表示,与散点图类似,然后计算二维空间中特定区域内的观测数,并用颜色梯度表示。二维密度图有几种类型,以下主要展示二维直方图和Hexbin图的绘图代码。
, C, x( U7 o; R% ~1 L1 h% M+ w4 J' i* C9 y. W# F9 Y
R语言|绘制二维直方图( z( F. h# p% X' x J4 \( K
对于2d直方图,plot区域被划分为多个正方形,调用geombin2d()函数,它提供了一个bins参数,用于控制要显示的bins数量。
4 P& Y! x' h. j
% S) s9 m8 v/ h* _2 r5 t$ N- K' `1.先绘制基础的散点图;& ` g' S+ c& a! M* J$ I5 i
##二维直方图/ Q* z' `9 x- q9 I4 Z0 R- o6 _
# Library9 N; O2 R1 X0 q; N l! D
library(tidyverse)
5 \; u- Z1 `" \3 Zlibrary(ggplot2)" Q% f. R& E+ J2 h4 g
" I. ]6 [$ b/ }+ e
# 读取数据
, M6 @. h! j/ F7 s. T) ^a <- data.frame( x=rnorm(20000, 10, 1.9), y=rnorm(20000, 10, 1.2) )
$ c" \3 ^( ~5 l u8 g H9 d8 gb <- data.frame( x=rnorm(20000, 14.5, 1.9), y=rnorm(20000, 14.5, 1.9) )
4 [/ _" x- `) Z: I: H' nc <- data.frame( x=rnorm(20000, 9.5, 1.9), y=rnorm(20000, 15.5, 1.9) )
4 {4 j3 S0 C6 n4 q# ~0 qdata <- rbind(a,b,c)* `9 [3 t! N# @- g' M3 {
5 ~% g9 [7 ]# m# m6 j- ?( G
#绘制基础的散点图4 b/ a1 W8 q1 A8 _' N4 r
ggplot(data, aes(x=x, y=y) ) +
6 }# k$ ?3 X2 h- a. S. b geom_point()2 V) h/ Y9 v( j
- l4 D5 f `/ q, Y% ?! v% ?3 G# J
1 W5 p5 y% O( C, z) j$ r5 N8 s" S/ i2 i! x
2.绘制二维直方图。8 u5 u. w4 T& E. L/ V+ R& o
####二维直方图可使用geom_bin2d()函数绘制" K5 \ {# N3 L4 }+ {
#二维直方图默认选项5 J/ @3 E+ @" H' `1 k) S
ggplot(data, aes(x=x, y=y) ) +2 w; h& a, T$ Z' p% P& I B
geom_bin2d() +4 w3 u6 A" O2 f/ F2 [
theme_bw()
# b* N j( h0 d4 b, A. p
2 X' G, s+ L6 j5 z& Q# Bin大小控制与调色板
7 F- z; u, e: l( f( R6 nggplot(data, aes(x=x, y=y) ) +2 {) i; ~9 Y) l: ?# t
geom_bin2d(bins = 70) +
% x6 v8 F+ u* f! N: K9 C: g. m& k scale_fill_continuous(type = "viridis") +1 D y o% p+ _, {
theme_bw()" Q' P& k4 K+ W6 \/ ~$ w" D( F% q
& Z8 z* ?9 f& ?/ ~0 n
8 K: L- V" w8 G# w
R语言|绘制Hexbin图
当显示大型数据集时,散点图很难解释,因为点不可避免地会被覆盖,并且可能不被单独识别出来。hexbin图中将地块划分为多个六边形,图中阴影部分代替了条形图的高度。图形是通过R的hexbin包绘制的。
2 S3 p o$ D9 i$ A
# Packages
$ b3 m+ z+ Z5 n; M0 glibrary(hexbin)* L+ f [ K7 r/ \+ O
library(RColorBrewer)
" V8 G8 K* e( h5 b7 c7 T. l/ h- d
# Create data1 N1 L3 {1 T4 ]/ ~* c3 r
x <- rnorm(mean=1.5, 5000)8 `7 J1 n! ~; h
y <- rnorm(mean=1.6, 5000) 5 I- H/ z& c& z; L9 b( c2 p
2 z: K" [0 E- a# Make the plot
f, a$ C3 h4 u6 z3 q- `bin<-hexbin(x, y, xbins=40)
2 e' k4 s' T% y4 w3 T! vmy_colors=colorRampPalette(rev(brewer.pal(11,'Spectral'))) z. W. O: Q0 n6 x
plot(bin, main="" , colramp=my_colors , legend=F )
! F+ K% O8 T# w& Q
; ^ y6 f" O+ s
( L& @; v1 ]' A* A/ ~$ H9 F$ L3 T8 ~9 a( \: D5 c( o
| 欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) |
Powered by Discuz! X2.5 |