数学建模社区-数学中国

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

作者: 1047521767    时间: 2021-10-29 10:55
标题: R语言绘制二维密度图
R语言绘制二维密度图二维密度图显示了两个数值变量之间的关系,一个在x轴上表示,另一个在Y轴上表示,与散点图类似,然后计算二维空间中特定区域内的观测数,并用颜色梯度表示。二维密度图有几种类型,以下主要展示二维直方图和Hexbin图的绘图代码。
/ h* _% v: I' G" A9 ^2 _/ C7 o3 ]8 G1 x5 F4 F2 P
R语言|绘制二维直方图' W9 \( _% f9 L. H* S/ k+ H
对于2d直方图,plot区域被划分为多个正方形,调用geombin2d()函数,它提供了一个bins参数,用于控制要显示的bins数量。- p" _' W' N) k" o
, U$ M9 b: B) |, D& N# _
1.先绘制基础的散点图;
  F- Z- c* O# r/ Q##二维直方图3 U2 p2 k4 Q* T. _
# Library
4 S0 p" b: m, R( zlibrary(tidyverse)
- M6 }4 P+ b: t; y' R3 r. S1 b" }library(ggplot2)3 t( ~" D8 P& S( s0 Q
) r. K% n* [3 Q
# 读取数据1 F- g) i; u; S
a <- data.frame( x=rnorm(20000, 10, 1.9), y=rnorm(20000, 10, 1.2) )
% p' f/ z. s& b" eb <- data.frame( x=rnorm(20000, 14.5, 1.9), y=rnorm(20000, 14.5, 1.9) )
9 c( ]* r$ I- U1 m! o' }c <- data.frame( x=rnorm(20000, 9.5, 1.9), y=rnorm(20000, 15.5, 1.9) )8 b; [$ f; B0 r
data <- rbind(a,b,c)
+ V' q# r& N; L+ K* c/ q# F
' |3 a6 k0 q% R, h- \#绘制基础的散点图
, F5 i5 S0 A# N( cggplot(data, aes(x=x, y=y) ) +
" g  X  {) f& e) R, R  geom_point()* L5 Y) x* S3 f" o" t

/ I1 O: K: [, T1 ]1 e4 _3 I: M2 d7 D+ r2 I5 e% f$ D$ c! z0 W) L
5 j2 V- m( e2 b1 `- |
2.绘制二维直方图。
# O4 C) S+ z0 k6 g####二维直方图可使用geom_bin2d()函数绘制
- [6 H5 q9 U) {$ E" Y3 W#二维直方图默认选项
* {* |) w: N5 f( c9 O. Cggplot(data, aes(x=x, y=y) ) +
$ y, g. m6 E( N5 u/ P  geom_bin2d() +
  C6 ]2 u5 ]8 P9 s2 ^  theme_bw()$ D# A0 J  s. F( I/ `

0 ^% b* Y2 s5 I: z9 _# Bin大小控制与调色板
5 x5 k8 u4 C$ I: f0 rggplot(data, aes(x=x, y=y) ) +
4 G. b: F6 I$ U' p% a  geom_bin2d(bins = 70) +
# v* d* `3 D0 j; u' u( O  scale_fill_continuous(type = "viridis") +  N+ X; N' U0 ~* p' x
  theme_bw(); ]/ N2 e0 O0 _; I4 Z
$ h" h+ p/ {- D; l5 t! U

& H1 L  A) U% Q8 e+ b7 W& X+ B

R语言|绘制Hexbin图

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

$ p& i' W# J& \
# Packages. R' |  b+ @: z+ z7 H: L& w
library(hexbin)
+ |2 W6 b  ]+ j% j: ^3 Klibrary(RColorBrewer) ' L- p1 K/ w7 @4 k9 O3 T2 a

& L  L1 k) L3 n3 g( K# Create data
5 V* Z( b' Q2 gx <- rnorm(mean=1.5, 5000)7 M5 ]5 U7 t5 {3 K% ]3 B0 E- u
y <- rnorm(mean=1.6, 5000) 3 d8 _( o% D: w. U. M5 E
8 s  O4 N# x  T6 D' |) z& C% U, K
# Make the plot2 k* ~# \- p3 g8 i% S
bin<-hexbin(x, y, xbins=40)" r3 E# c) Q. Y6 [/ z
my_colors=colorRampPalette(rev(brewer.pal(11,'Spectral')))
; ]) i  d+ h( Z% b" M: }2 Lplot(bin, main="" , colramp=my_colors , legend=F ) & T! Y: b0 ^4 N- ]( J0 C  l. ^6 w, s  U7 |
6 R0 h( n5 ^+ s; y% r/ I

7 d0 e, r. E& u/ E, D
  X& v1 f. i+ l! D




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