TikZ & PGFPlots로 컬러 지도를 그립니다.
서문
TikZ 및 PGFPlots를 사용하여 데이터 파일을 읽고 다음 그림과 같은 컬러 지도를 만듭니다.
사용된 엔진은 Version 1.10.0(TeX Live 2019)입니다. XeTeX 등도 가능할 수 있습니다. 그러나 드로잉의 데이터 수가 많으면 XeTeX는 그림을 그릴 수 없습니다.
작도 데이터의 제작.
이번에 그린 데이터는 C 언어로 -1이상 출력하고 0.5이하 범위의 무작위 수를 사용합니다. 사용하는 코드는 다음과 같습니다.
main.c
#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로 그림을 그립니다.
다음 코드 파일을 준비하세요.
main.tex
\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분의 컴파일 시간이 필요하다.
Reference
이 문제에 관하여(TikZ & PGFPlots로 컬러 지도를 그립니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kazumiy/items/9210b62216e49fde6411텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)