これは解決策ではなく、説明であり、醜い回避策ではありますが。
時々、gnuplot
この問題についてメーリングリストに報告がありますが、それは視聴者に関係しているようです. これはgnuplot
、サーフェス プロットを作成する方法に関係しています。これらは、一緒にステッチされたポリゴンとして描画されます。表示されているモアレ パターンは、2 つのポリゴン間のレンダリングが間違っているためです。これは、ビューア、ビューアの設定、およびズーム倍率によって異なります。
その効果を示す最も簡単な例は、次の Postscript ファイルです。
%!PS-Adobe-2.0
50 50 moveto 50 0 rlineto 0 50 rlineto -50 0 rlineto closepath 0 setgray fill
100 50 moveto 50 0 rlineto 0 50 rlineto -50 0 rlineto closepath 0 setgray fill
このファイルをたとえば名前を付けて保存しmoire.ps
て表示するか、 で変換してps2pdf
表示します。Acrobat Reader 9.5.1 では、次のように表示されます。
Acrobat Reader には、Preferences -> Page Display -> Enhance thin lines
この問題を回避できる設定がありますが、他の部分で問題が発生します。
私のシステム (Debian) では、すべてのビューアーに 、 、 、 libpoppler` などのパターンが表示mupdf
さfirefox
れghostscript
ますpdftocairo
。
じゃあ何をすればいいの?私自身は、次の回避策を使用します。私splot
はpng
高解像度で に移動し、後でそのファイルを で再読み込みしますplot ... with rgbimage
。次に、ヒートマップをビットマップとして取得し、残りはベクトルです。ほとんどの場合、これは問題ではありません。何らかの方法で、解像度が制限された測定データがあり、それを補間するからです。
質問gnuplot 等高線の色に基づいて: スタイル ラインを設定し、線種を設定しないでください。これを実装する方法は次のとおりです。
reset
set lmargin at screen 0.05
set rmargin at screen 0.85
set bmargin at screen 0.1
set tmargin at screen 0.9
set pm3d map interpolate 20,20
unset key
set cntrparam bspline
set cntrparam points 10
set cntrparam levels increment -6,-6,-24
set contour surface
set linetype 1 lc rgb "blue" lw 2
set linetype 2 lc rgb "blue"
set linetype 3 lc rgb "black"
set linetype 4 lc rgb "orange"
set linetype 5 lc rgb "yellow"
set palette rgb 33,13,10 #rainbow (blue-green-yellow-red)
set cbrange [-18:0]
unset border
unset xtics
unset ytics
set angles degree
r = 3.31
set xrange[-r:r]
set yrange[-r:r]
set colorbox user origin 0.9,0.1 size 0.03,0.8
##################### start changes ##############
set autoscale fix
RES_X = 2000
RES_Y = 2000
save('settings.tmp')
set lmargin at screen 0
set rmargin at screen 1
set bmargin at screen 0
set tmargin at screen 1
unset colorbox
set terminal pngcairo size RES_X, RES_Y
set output '3d-polar-inc.png'
splot 'new_test.dat' nocontour
unset output
load('settings.tmp')
# mapping of the coordinates for the png plotting later
X0 = GPVAL_X_MIN
Y0 = GPVAL_Y_MIN
DX = (GPVAL_X_MAX - GPVAL_X_MIN)/real(RES_X)
DY = (GPVAL_Y_MAX - GPVAL_Y_MIN)/real(RES_Y)
C0 = GPVAL_CB_MIN
DC = GPVAL_CB_MAX - GPVAL_CB_MIN
C(x) = (x/255.0) * DC + C0
# now plot the png
#set terminal pdfcairo size 10cm,10cm
#set output '3d-polar.pdf'
set terminal postscript eps color level3 size 10cm,10cm solid
set output '3d-polar-eps.eps'
set multiplot
set cbrange[GPVAL_CB_MIN:GPVAL_CB_MAX]
plot '3d-polar-inc.png' binary filetype=png \
origin=(X0, Y0) dx=DX dy=DY \
using (C($1)):(C($2)):(C($3)) \
with rgbimage, \
NaN with image t '' # hack for getting the colorbox
# plot the contours
unset surface
unset pm3d
splot 'new_test.dat' w l
###################### end changes #################
# now plot the polar grid only
set style line 11 lc rgb 'black' lw 2 lt 0
set grid polar ls 11
set polar
set logscale r 10
set rrange[10:20000]
unset raxis
set rtics format '' scale 0
#set rtics axis scale
set rtics (20,50,100,200,500,1000,2000,5000,10000,20000)
do for [i=-150:180:30] {
dum = r+0.15+0.05*int(abs(i/100))+0.05*int(abs(i/140))-0.05/abs(i+1)
set label i/30+6 at first dum*cos(i), first dum*sin(i) center sprintf('%d', i)
}
set label 20 at first 0, first -(log(20)/log(10)-1) center "20"
set label 100 at first 0, first -(log(100)/log(10)-1) center "100"
set label 200 at first 0, first -(log(200)/log(10)-1) center "200"
set label 1000 at first 0, first -(log(1000)/log(10)-1) center "1k"
set label 2000 at first 0, first -(log(2000)/log(10)-1) center "2k"
set label 10000 at first 0, first -(log(10000)/log(10)-1) center "10k"
set label 20000 at first 0, first -(log(20000)/log(10)-1) center "20k"
plot NaN w l
unset multiplot
unset output
これpdfcairo
を使用すると 1.7 MB の pdf ファイルが得られ、epslatex level3
(このオプションは 4.7 開発バージョンでのみ使用可能です) を使用すると 1.5 MB の eps ファイルが得られ、これをepstopdf
で 136 KB の pdf ファイルに変換できます。
Big data surface plotsに対する私の回答も参照してください: Call gnuplot from tikz to generate bitmap and include automatically? TeX.SX上。