通过阿基米德螺线对长轴数据进行可视化,可以解决由于数据量过大造成的可视化难题!
导语
GUIDE ╲
阿基米德螺线(亦称等速螺线),得名于公元前三世纪希腊数学家阿基米德。阿基米德螺线是一个点匀速离开一个固定点的同时又以固定的角速度绕该固定点转动而产生的轨迹。阿基米德在其著作《螺旋线》中对此作了描述。
install.packages("spiralize")library(spiralize)##最新版本library(devtools)install_github("jokergoo/spiralize")[object Object]
# 左spiral_initialize(start = 90, end = 360)spiral_track()##初始化#右spiral_initialize(start = 180, end = 360*4 + 180)spiral_track()
# 左
spiral_initialize(scale_by = "angle") # default
spiral_track(height = 0.6)
spiral_axis()
# 右
spiral_initialize(scale_by = "curve_length")
spiral_track(height = 0.6)
spiral_axis()
#左spiral_initialize()spiral_track(height = 1, background_gp = gpar(col = "black"))##黑色边框#右spiral_initialize()spiral_track(height = 0.5)
spiral_initialize()spiral_track(height = 0.4, background_gp = gpar(fill = 2))spiral_track(height = 0.2, background_gp = gpar(fill = 3))spiral_track(height = 0.1, background_gp = gpar(fill = 4))
#散点图spiral_initialize() # by default xlim = c(0, 1)spiral_track() # by default ylim = c(0, 1)spiral_points(x = runif(1000), y = runif(1000))#折线图x = sort(runif(1000))y = runif(1000)spiral_initialize()spiral_track()spiral_lines(x, y)
# the left plot
spiral_initialize()
spiral_track()
spiral_lines(x, y, type = "h")
# the right plot
spiral_initialize()
spiral_track()
spiral_lines(x, y, type = "h", baseline = 0.5, gp = gpar(col = ifelse(y > 0.5, "red", "blue")))
n = 1000
require(circlize)
spiral_initialize(xlim = c(0, n))
spiral_track(height = 0.9)
x1 = runif(n)
col1 = circlize::colorRamp2(c(0, 0.5, 1), c("blue", "white", "red"))
spiral_rect(1:n - 1, 0, 1:n, 0.5, gp = gpar(fill = col1(x1), col = NA))
x2 = runif(n)
col2 = circlize::colorRamp2(c(0, 0.5, 1), c("green", "white", "red"))
spiral_rect(1:n - 1, 0.5, 1:n, 1, gp = gpar(fill = col2(x2), col = NA))
x = seq(1, 1000, by = 1) - 0.5 # middle points of bars
y = runif(1000)
# the left plot
spiral_initialize(xlim = c(0, 1000))
spiral_track(height = 0.8)
spiral_bars(x, y)
# the right plot
spiral_initialize(xlim = c(0, 1000))
spiral_track(height = 0.8)
spiral_bars(x, y, baseline = 0.5, gp = gpar(fill = ifelse(y > 0.5, 2, 3), col = NA))
y = matrix(runif(3*1000), ncol = 3)y = y/rowSums(y)spiral_initialize(xlim = c(0, 1000))spiral_track(height = 0.8)spiral_bars(x, y, gp = gpar(fill = 2:4, col = NA))
df = readRDS(system.file("extdata", "ggplot2_downloads.rds", package = "spiralize"))
df = df[df$date < as.Date("2021-01-01"), ]
day_diff = as.double(df$date[nrow(df)] - df$date[1], "days")
year_mean = tapply(df$count, lubridate::year(df$date), function(x) mean(x[x > 0]))
df$diff = log2(df$count/year_mean[as.character(lubridate::year(df$date))])
df$diff[is.infinite(df$diff)] = 0
q = quantile(abs(df$diff), 0.99) # adjust outliers
df$diff[df$diff > q] = q
df$diff[df$diff < -q] = -q
library(ape)
data(hivtree.newick)
tree.hiv = read.tree(textConnection(hivtree.newick))
n = length(tree.hiv$tip.label) # number of leaves
spiral_initialize(xlim =c(0, n), start = 360, end = 360*2 + 180, scale_by = "curve_length")
spiral_track()
spiral_phylo(tree.hiv)
split = dendextend::cutree(phylo_to_dendrogram(tree.hiv), k = 8)
tb = table(split)
for(i in seq_along(tb)) {
spiral_highlight(sum(tb[seq_len(i-1)]), sum(tb[seq_len(i)]), gp = gpar(fill = i))
}
spiral_initialize(xlim =c(0, n), start = 360, end = 360*2 + 180, scale_by = "curve_length")spiral_track()spiral_phylo(tree.hiv, group = split)
不感兴趣
看过了
取消
人点赞
人收藏
打赏
不感兴趣
看过了
取消
您已认证成功,可享专属会员优惠,买1年送3个月!
开通会员,资料、课程、直播、报告等海量内容免费看!
打赏金额
认可我就打赏我~
1元 5元 10元 20元 50元 其它打赏作者
认可我就打赏我~
扫描二维码
立即打赏给Ta吧!
温馨提示:仅支持微信支付!
已收到您的咨询诉求 我们会尽快联系您