我正在尝试创建一个类似下图中第三列所示的图形:
备份时
基本上我有200个粒子的x和y位置,我有这200个位置的MSD数据。我希望MSD成为应该为坐标(x,y)
中的粒子确定颜色贴图的值。所以MSD应该像z
中的每个粒子对应的高度或(x,y)
位置。
我对自己的无能感到惊讶,因为我在过去几天一直试图解决这个问题,但谷歌搜索都没有给我任何结果。我发现的最接近的事情是"自组织地图"在Matlab和R中,但我不知道如何使用R和Matlab的SOM工具箱对我的需求非常有用。
我在Matlab中尝试了以下代码并得到附图:
clear all; close all; clc;
x = (dlmread('xdata.dat'))'; % x is 1x200 array
y = (dlmread('ydata.dat'))'; % y is 1x200 array
msd = (dlmread('msd_field.txt'))'; % msd is 1x200 array
[X,Y] = meshgrid(x,y);
Z = meshgrid(msd);
z = [X; Y; Z];
surf(z)
但我认为这个情节根本没用。我想要的是一个描绘粒子位置的(x,y)
的二维散点图,并在该颜色代码的顶部,这个散点图与msd中存储的值一样,就像我在开头展示的情节一样。如何通过Matlab或任何其他可视化工具创建?提前谢谢。
答案 0 :(得分:2)
目前尚不清楚你想拥有什么。这是使用ggplot2
的散点图。
## some reproducible data
set.seed(1)
dat <- data.frame(
x = round(runif(200,-30,30),2),
y = round(runif(200,-2,30),2),
msd = sample(c(0,2,3),200,rep=T))
## scatter plot where the size/color of points depends in msd
library(ggplot2)
ggplot(dat) +
geom_point(aes(x,y,size=msd,color=msd)) +
theme_bw()