我有一个二维整数数组。我想用这样的数据绘制散点图:
for(i=0, i<length(row), i++)
for(j=0, j<length(column), j++)
if data[i][j] is positive put a red mark else put a green mark.
有人能给出一个想法吗?谢谢。
答案1
Asymptote
版本
// "2dscatter.asy"
// to get a standalone 2dscatter.pdf image, run
// asy 2dscatter.asy
//
settings.outformat="pdf";
size(9cm);
srand(351767147);
int m=17, n=11;
real[][] data=new real[m][n];
// generate some random integer data table
for(int i=0; i<m; ++i)
for(int j=0; j<n; ++j)
data[i][j]=round((unitrand()*2-1)*m*n);
guide mark=scale(0.5)*unitcircle;
for(int i=0; i<m; ++i) for(int j=0; j<n; ++j){
fill(shift(i,j)*mark,(data[i][j]>0)?red: green);
}
答案2
这是一个想法——但由于你没有提供任何数据,我只能用随机数填充数据数组。这是通过元帖子包裹在内luamplib
,因此您应该用 来编译它lualatex
。
\documentclass[border=5mm]{standalone}
\usepackage{luamplib}
\begin{document}
\mplibtextextlabel{enable}
\begin{mplibcode}
numeric n, data[][];
n = 8;
for i=1 upto n:
for j=1 upto n:
data[i][j] = normaldeviate;
endfor
endfor
beginfig(1);
for i=1 upto n:
for j=1 upto n:
drawdot (i,j) scaled 6
withpen pencircle scaled 4
withcolor if data[i][j] > 0: red else: green fi;
endfor
endfor
endfig;
\end{mplibcode}
\end{document}