2014-06-24 6 views
1

평소 히트 맵을 사용하여 플롯을 변환하려고합니다. 데이터는 X, Y, X와 Z 형식으로는, Y는 위도/경도 및 z되고 기록 된 인스턴스gnuplot - 2d 점에서 히트 맵으로 변경

의 #되는

우리는 현재 사용 플롯 :

plot 'data.dat' u 1:2:3 with points pointtype 13 lc palette, \ 
'boundary.dat' with lines ls 1 

내가 그릴 수 있도록하고 싶습니다 히트 맵 3 플롯 : 1. 기본 히트 맵 값 2. 기본 지오프 경로를 표시하기 위해 50 % 불투명도를 나타냅니다. 3. 경계를 나타내는 선.

샘플 이미지 : enter image description here 왼쪽 이미지는 gnuplot이고, 오른쪽 이미지는 qgis 이미지입니다. 우리는 gnuplot이 오른쪽에있는 것과 유사한 것을 생산하기를 원합니다.

피터

답변

1

니스 질문 :

당신은 적절한 결과를 얻으려면 몇 가지 단계가 필요합니다

히트 맵을 얻기 위해, 정기적 격자를 생성하고 보간해야합니다 당신의 데이터. 이것은 set dgrid3d으로 할 수 있습니다. 당신은 구분 기호로 쉼표를 사용하는 set datafile separator ','을 사용할 수 있습니다, 보통

set dgrid3d 200,200,2 
set table 'data-heatmap.dat' 
splot '< tr "," " " < data.dat' using 1:2:3 
unset table 
unset dgrid3d 

하지만, 임시 파일 data-heatmap.dat' contains columns separated by spaces, so you must use tr`은 교체하기 만 일부 데이터의 보간을 원하기 때문에 당신은 임시 파일에 보간를 작성해야합니다 공백이있는 쉼표

그러면 모두 함께 음모를 꾸밀 수 있습니다. 다음과 같이 전체 스크립트를 볼 수 있습니다

# Diverging color palette from colorbrewer2.org 
set palette defined (0 '#006837', 1 '#1a9850', 2 '#66bd63',\ 
        3 '#a6d96a', 4 '#d9ef8b', 5 '#ffffbf',\ 
        6 '#fee08b', 7 '#fdae61', 8 '#f46d43',\ 
        9 '#df3027', 10 '#a50026') 
unset key 
set dgrid3d 200,200,2 
set table 'data-heatmap.dat' 
splot '< tr "," " " < data.dat' using 1:2:3 
unset table 
unset dgrid3d 

set autoscale fix 
set xtics 0.1 
plot 'data-heatmap.dat' u 1:2:3 w image,\ 
    '< tr "," " " < boundary.dat' w l lc rgb 'black' lw 2,\ 
    '< tr "," " " < data.dat' w p pt 7 ps 0.2 lc palette 

은 부드러운 보간을 얻을 set dgrid3d 200,200,1 또는 유사한을 사용합니다. 고정 색상 범위를 set cbrange으로 설정하려고 할 수도 있습니다. 4.6.5와

결과는 다음 생성 된 그리드

enter image description here

치수는 산란 데이터의 바운딩 박스로부터 유도된다. 보간 영역을 확장하기위한 해킹으로 보간 된 데이터를 생성 할 때 즉석에서 오른쪽 상단에 한 점, 왼쪽 상단에 하나씩 두 개의 더미 점을 추가 할 수 있습니다. 나중에는 set offsets 이러한 점에 대한 비트를 해결할 수 있습니다

# Diverging color palette from colorbrewer2.org 
set palette defined (0 '#006837', 1 '#1a9850', 2 '#66bd63',\ 
        3 '#a6d96a', 4 '#d9ef8b', 5 '#ffffbf',\ 
        6 '#fee08b', 7 '#fdae61', 8 '#f46d43',\ 
        9 '#df3027', 10 '#a50026') 
unset key 
set dgrid3d 200,200,2 
set table 'data-heatmap.dat' 
splot '< echo -e "\n-118.62,34.29,1\n-118.10,34.29,1" | paste -s -d "\n" data.dat - | tr "," " "' using 1:2:3 
unset table 
unset dgrid3d 

set autoscale fix 
set offsets -0.02,-0.01,-0.01,0.01 
set xtics 0.1 
plot 'data-heatmap.dat' u 1:2:3 w image,\ 
    '< tr "," " " < boundary.dat' w l lc rgb 'black' lw 2,\ 
    '< tr "," " " < data.dat' w p pt 7 ps 0.2 lc palette 

enter image description here

+0

이 내가 찾던 정확히 것입니다. 보간이 북쪽과 남쪽으로 몇 픽셀 계속되도록 상단과 하단에 소량의 패딩을 추가 할 수 있습니까? – user438431

+0

흠, "예", 제 편집을 참조하십시오. – Christoph

+0

좋습니다. 데이터는 프로그래밍 방식으로 생성되므로 필요에 따라 몇 개의 더미 행/열을 추가 할 수 있습니다. 또한 쉼표 대신 공백을 사용하여 tr을 만들 필요가 없도록 만들었습니다. 감사! – user438431

관련 문제