网站改版建设征求意见书,一个空间建多个网站的方法,网页设计实训总结报告3000字,长沙网站设计拓谋网络目的#xff1a;假设你有一组颜色了#xff0c;怎么模拟查看它们在单细胞DimPlot中的美学效果呢#xff1f;要足够快#xff0c;还要尽可能有模拟效果。
1. 尝试1: 随机矩阵#xff0c;真的UMAP降维后绘图#xff08;失败#xff09;
造一个随机矩阵#xff0c;使用S…目的假设你有一组颜色了怎么模拟查看它们在单细胞DimPlot中的美学效果呢要足够快还要尽可能有模拟效果。
1. 尝试1: 随机矩阵真的UMAP降维后绘图失败
造一个随机矩阵使用Seurat包使用的 uwot::umap 降维后可视化。 效果差的一塌糊涂慢且效果差。
# 1. 创建随机数据矩阵
set.seed(123)
n_cells - 2000
data_matrix - matrix(rnorm(n_cells * 10), nrow n_cells, ncol 10)
dim(data_matrix)# 2. umap
# input row as cells,
# return: keep row number, but only 2 columns as UMAP1-2
umap_result - uwot::umap(data_matrix[,1:2])
dim(umap_result)# 3. draw
#
color_scheme - c(Group A blue, Group B red)umap_df - data.frame(UMAP1 umap_result[, 1], UMAP2 umap_result[, 2])
umap_df$group - sample(c(Group A, Group B), n_cells, replace TRUE)
library(ggplot2)
umap_plot - ggplot(umap_df, aes(x UMAP1, y UMAP2, color group)) geom_point(size 3) scale_color_manual(values color_scheme) ggtitle(UMAP of Random Data with Color Testing) theme_minimal()
umap_plot这个效果不可预测耗时且不能稳定cluster颜色。
2. try2: 单位圆平分后随机点法
基于简单数学原理才能更快。 进一步地把这个数据输入做umap后再绘图也行但是太耗时且效果也一般。
# 一套颜色在单细胞点图的模拟效果
#
# version:0.2
#
# param colors2 颜色向量
# param pt.size 点的大小
# param dot.per.cluster 每个类产生颜色数量
# param cluster_number 主类大小不设置则表示和颜色总数一致
# param radius 主图半径默认即可
# param zoom.factor 针对主图放大倍数
# param scale.factor 随机点沿着核心点间距的缩放倍数
# param shuffle 是否对颜色随机打乱默认不随机
#
# return 无返回值就一个绘图效果
# export
#
# examples
show_colorsetfunction(colors2,pt.size1,dot.per.cluster100,cluster_number0,radius10,zoom.factor2, #绘制核心点时整体放大倍数方便个后续随机点留下空间scale.factor6,shuffleF,main){message(length(colors2))if(cluster_number0){cluster_number length(colors2)}if(shuffle){colors2sample(colors2)}#1.确定几个核心点arr_x radius * cos(2*pi / cluster_number* (1:cluster_number))arr_y radius * sin(2*pi / cluster_number* (1:cluster_number))#2.计算两点的距离dot_dist sqrt( (arr_x[1]-arr_x[2])**2 (arr_y[1]-arr_y[2])**2); dot_dist#3.噪音点随机分布在核心点周围距离大概是核心点距离/scale.factornoiseX dot_dist*rnorm(ndot.per.cluster)/scale.factornoiseY dot_dist*rnorm(ndot.per.cluster)/scale.factor#3. 绘制空坐标轴mainifelse(main, Color test, main)plot(arr_x*zoom.factor, arr_y*zoom.factor, colwhite, xlabUMAP_1, ylabUMAP_2, mainmain, mgpc(2,1,0))#4. 绘制噪音点for(i in 1:cluster_number){points(arr_x[i] sample(noiseX), arr_y[i]sample(noiseY), colcolors2[i], pch19, cexpt.size)}
}使用效果
if(0){show_colorset( DiscretePalette(26, palettealphabet)[1:10], dot.per.cluster500, zoom.factor 1.2, pt.size 2, mainalphabet)show_colorset( c(red, orange, blue, navy, cyan, grey), dot.per.cluster2000, zoom.factor 2)show_colorset( c(red, orange, blue, navy, cyan, grey), dot.per.cluster2000, zoom.factor 2, shuffle T )
}Fig:
left: Seurat自带的颜色 DiscretePalette(26, palette‘alphabet’) 前10个mid: 自定义颜色right: 自定义颜色随机打乱后。