2017-10-19 10 views
-2

히트 맵을 그리기 위해 2 차원 배열이 있고이 대답을 따랐습니다. https://stackoverflow.com/a/32459287/2370139 C++에서 gnuplot을 사용하고 첫 번째 행과 열은 틱이 아닌 일반 값이므로 "비 균일"을 제거했습니다.히트 맵이 비어있는 이유는 무엇입니까 (흰색)?

Gnuplot gp; 
gp << "set autoscale xfix \n"; 
gp << "set autoscale yfix \n"; 
gp << "set autoscale cbfix \n"; 
gp << "plot '-' matrix with image notitle\n"; 
gp.send2d(pmat); 
gp.flush(); 

pmat는 크기가 50 * 50 인 2 차원 배열입니다. 0에서 1 사이의 부동 소수점 값으로 채워집니다. 완벽하게 흰색 격자를 그립니다. 문제는 무엇입니까?

참고 : C의 내 사용에서 오는

0.5 0.3 0.3 
0.2 0.4 0.6 
0.2 0.8 1 

때문에 문제가 같은 텍스트 파일을 일반의 gnuplot 터미널에서 사용하는 경우 위의 명령이 제대로 작동 ++ API를

+0

'gnuplot-iostream'에 익숙하지 않지만 [this] (https://github.com/dstahlke/gnuplot-iostream/wiki/Datatypes#1d-vs-2d-data)에 따르면 'send2d'는 행렬 형식으로 배열 데이터를 보내지 않고 새로운 행이나 열을 나타내는 공백이있는 1 차원 목록으로 보냅니다. 플롯 커맨드를'gp << '로 바꾼다면'- '줄을 notitle \ n ";'으로 바꿀 수 있습니다. – user8153

+0

귀하의 의견을 주셔서 감사합니다, 그 라인과 함께 작동하지만 3D graph를 그리는 반면 heatmap은 (x, y의 색상은 pmat [x] [y]를 나타냅니다.) – user2370139

+0

단순히'plot' - "with image' 만 사용하여'matrix' 키워드를 삭제하려 했습니까? – Christoph

답변

0

하면 gnuplot-iostream 아무튼 2-d 데이터를 매트릭스 형식으로 지원하기 때문에 코드에서 쉽게 구현할 수 있습니다. 예 :

gp << "plot '-' matrix with image notitle\n"; 
for (int i = 0; i < 50; ++i) { 
    for (int j = 0; j < 50; ++j) 
     gp << pmat[i][j] << "\t"; 
    gp << "\n"; 
} 
gp.flush(); 

(테스트하지 않음)과 같아야합니다.