ラテックスで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} 

ここに画像の説明を入力

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です