라텍스에서 tikz / pgfplots를 사용하여 히트 맵을 생성하려고하는데 빈 플롯이 나타납니다. GNUplot에서 사용한 것과 동일한 명령을 사용합니다.이 명령은

plot "heat-data.txt" matrix with image; 

GNUplot에서는 원하는 이미지가 생성됩니다. GNUplot으로 만든 이미지 여기서 “heat-data.txt”파일에는 z 좌표가 포함됩니다.

6 5 4 3 1 0 3 2 2 0 0 1 0 0 0 0 1 0 0 0 0 0 2 3 0 0 1 1 1 0 0 1 0 1 1 0 

보고서에서 데이터 세트의 히트 맵을 생성하고 싶으므로 나머지 보고서와 동일한 스타일로이 작업을 수행하고 Tikz / Pgfplots를 사용하고 싶습니다.

\addplot3[raw gnuplot] gnuplot{ set view map; plot "heat-data.txt" matrix with image}; 

생성 된 이미지

그리고 시도한

\addplot3[raw gnuplot,surf,shader=flat]gnuplot{ plot "heat-data.txt" matrix with image; }; 

결과는

MWE :

\documentclass[tikz, crop]{standalone} \usepackage{tikz} \usepackage{pgfplots} \pgfplotsset{compat=newest} \pgfplotsset{plot coordinates/math parser=false} \begin{document} \begin{tikzpicture} \begin{axis}[ colorbar right, colormap/viridis, view={0}{90} ] %\addplot3[raw gnuplot]gnuplot{ %plot "heat-data.txt" matrix with image; %}; \addplot3[raw gnuplot,surf,shader=flat]gnuplot{ plot "heat-data.txt" matrix with image; }; \end{axis} \end{tikzpicture} \end{document} 

댓글

답변

별로 없습니다. gnuplot 경험. 제가 제공 할 수있는 것은 데이터를 일반 행렬 플롯으로 그릴 수있는 것으로 변환하는 것입니다.

\documentclass[border=3.14mm,tikz]{standalone} \usepackage{filecontents} \begin{filecontents*}{heat-data.txt} 6 5 4 3 1 0 3 2 2 0 0 1 0 0 0 0 1 0 0 0 0 0 2 3 0 0 1 1 1 0 0 1 0 1 1 0 \end{filecontents*} \usepackage{pgfplots} \usetikzlibrary{pgfplots.colormaps} \pgfplotsset{compat=1.16} \usepackage{pgfplotstable} \newcommand*{\ReadOutElement}[4]{% \pgfplotstablegetelem{#2}{[index]#3}\of{#1}% \let#4\pgfplotsretval } \begin{document} \pgfplotstableread[header=false]{heat-data.txt}\datatable \pgfplotstablegetrowsof{\datatable} \pgfmathtruncatemacro{\numrows}{\pgfplotsretval} \pgfplotstablegetcolsof{\datatable} \pgfmathtruncatemacro{\numcols}{\pgfplotsretval} \xdef\LstX{} \xdef\LstY{} \xdef\LstC{} \foreach \Y [evaluate=\Y as \PrevY using {int(\Y-1)},count=\nY] in {1,...,\numrows} {\pgfmathtruncatemacro{\newY}{\numrows-\Y} \foreach \X [evaluate=\X as \PrevX using {int(\X-1)},count=\nX] in {1,...,\numcols} { \ReadOutElement{\datatable}{\PrevY}{\PrevX}{\Current} \pgfmathtruncatemacro{\nZ}{\nX+\nY} \ifnum\nZ=2 \xdef\LstX{\PrevX} \xdef\LstY{\PrevY} \xdef\LstC{\Current} \else \xdef\LstX{\LstX,\PrevX} \xdef\LstY{\LstY,\PrevY} \xdef\LstC{\LstC,\Current} \fi } } \edef\temp{\noexpand\pgfplotstableset{ create on use/x/.style={create col/set list={\LstX}}, create on use/y/.style={create col/set list={\LstY}}, create on use/color/.style={create col/set list={\LstC}},}} \temp \pgfmathtruncatemacro{\strangenum}{\numrows*\numcols} \pgfplotstablenew[columns={x,y,color}]{\strangenum}\strangetable %\pgfplotstabletypeset[empty cells with={---}]\strangetable \begin{tikzpicture} \begin{axis}[colorbar] \addplot [ matrix plot, point meta=explicit, ] table [meta=color,col sep=comma] \strangetable; \end{axis} \end{tikzpicture} \end{document} 

여기에 이미지 설명 입력

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다