TikZ & PGFPlots でカラーマップを作図する.
はじめに.
TikZ と PGFPlots を用いて,データファイルを取り込み,下図のようなカラーマップを作成します.
使用するエンジンは Version 1.10.0 (TeX Live 2019) です.XeTeXなどでもできるかもしれません.しかしプロットするデータ数が大きい場合,XeTeXでは作図できない場合があります.
作図するデータの作成.
今回プロットするデータは,C言語を用いて,-1 以上かつ 0.5 以下の範囲の乱数を出力させることで用意しました.使用したコードは以下の通りです.
#include<stdio.h>
#include<stdlib.h>
int main(){
FILE *fp;
srand(0);
int i,j;
fp=fopen("out.dat","w");
for(i=0;i<5;i++){
for(j=0;j<5;j++)fprintf(fp,"%d\t%d\t%4.3f\n",i,j,(double)rand()/RAND_MAX*2*3/4-1);
fprintf(fp,"\n");
}
fclose(fp);
return 0;
}
このプログラムによって得られるデータファイルは,次のようなフォーマットです.
0 0 -0.636
0 1 -0.980
0 2 -0.425
0 3 -0.378
0 4 -0.898
1 0 0.490
1 1 -0.274
(中略)
4 3 -0.603
4 4 -0.434
TikZ & PGFPlots で作図.
次のコードファイルを用意します.
\documentclass[crop,border=2pt,tikz]{standalone}
\usepackage{pgfplots}
\usepgfplotslibrary{colorbrewer}
\usetikzlibrary{pgfplots.colormaps}
\pgfplotsset{compat=newest,compat/show suggested version=false}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
xmin=-0.5,xmax=4.5,ymin=-0.5,ymax=4.5,
point meta min=-1, point meta max=1,
enlargelimits=false,
axis equal image=true,
view={-90}{90}, %原点(0,0)を左下に設定したい.
matrix plot,
colormap/PiYG-11,
colorbar,
]
\addplot3[surf]table{out.dat};
\end{axis}
\end{tikzpicture}
\end{document}
このファイルをLuaTeXでコンパイルすると,本記事の最上部に挙げた図がPDFで出力されます.
ワンポイントアドバイス.
データを作成する際に,乱数を範囲 -1 以上かつ 0.5 以下で生成しました.PGFPlots のマニュアル(32頁)に,
PGFPLOTS computes the minimum and maximum value of all such numbers. Then, it maps every number into a colormap.
とある通り,PGFPlotsではデータの最大値と最小値を計算し,その間でカラーマップの色を割り当てます.したがってデフォルトの設定で -1 以上かつ0.5 以下のデータをプロットしようとすると,「+1を緑,-1を赤,0を白」に設定することができません.このプロットを可能にする設定が,[point meta min=-1, point meta max=1] なのです.
gnuplot との違い
TikZ & PGFPlots でなくとも,たとえばgnuplotでも作図することができます.私が試したところ,データ数が少ない場合はgnuplotでプロットしても問題ありませんでした.しかし,データ数が多い場合(カラーマップの一辺が100セル以上だと),gnuplotではひとつひとつのセルがくっきりと表せませんでした.解像度を上げる設定をしてプロットしてみても,やはり私の意図通りのプロットにはなりませんでした.ひとつひとつのセルが正方形ではなくぼやっとした円に見えます.
一方でgnuplotならではの良さもあります.データ数が多いカラーマップ(カラーマップの一辺が100セル程度)をプロットする場合は,TikZ & PGFPlots でプロットするために1,2分のコンパイル時間がかかります.gnuplot では3秒程度で作図できるのに.
Author And Source
この問題について(TikZ & PGFPlots でカラーマップを作図する.), 我々は、より多くの情報をここで見つけました https://qiita.com/kazumiy/items/9210b62216e49fde6411著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .