LaTeX で三角座標グラフを作成してみた

\documentclass{jarticle}
\usepackage{pstricks,pstricks-add,multido}
\begin{document}

\psset{unit=100mm}

% dotsep は点線の設定、dotsize は psdot の設定
\psset{dotsep=2pt, dotsize=3pt 3}

%%% 左座標を定義 %%%
\newcommand{\TC}{
% 座標軸
\psline(0,0)(1;60)
% 格子線(点線)
\multido{\ns=0.2+0.2,\ne=0.6+0.1}{4}{
\psplot[linewidth=0.4pt, linestyle=dotted, algebraic=true]{\ns}{\ne}{sqrt(3)*(x-\ns)}
}
% 副目盛線:長さ 0.005
\multido{\n=0.000+0.010}{51}{
\fpSub{\n}{0.005}{\a}
\psplot[linewidth=0.4pt, algebraic=true]{\a}{\n}{sqrt(3)*\n}
}
% 主目盛線:長さ 0.01
\multido{\n=0.00+0.10}{6}{
\fpSub{\n}{0.01}{\a}
\psplot[linewidth=0.4pt, algebraic=true]{\a}{\n}{sqrt(3)*\n}
}
% 主目盛:主目盛線の端点から 0.01 離れた位置に目盛を表示
\multido{\n=0.0+0.2}{6}{
\rput[r](!\n\space 2 div 0.02 sub \n\space 2 div 3 sqrt mul){$\n$}
}
}

\begin{pspicture}(0,0)(1,0.866)
\TC
% 左座標を時計回りに 120° 回転させて右座標とする。
\rput[rC]{-120}(!0.5 0.5 3 sqrt mul){\TC}
% 左座標を反時計回りに 120° 回転させて底座標とする。
\rput[rC]{120}(!1 0){\TC}

% 左ラベル: [(0.5 - 0.1*sqrt(3))/2, (0.5*sqrt(3) + 0.1)/2]
\rput{60}(!0.5 0.1 3 sqrt mul sub 2 div 0.5 3 sqrt mul 0.1 add 2 div){\gtfamily 左座標}
% 右ラベル: [(0.5 + 0.1*sqrt(3))/2 + 0.5, (0.5*sqrt(3) + 0.1)/2]
\rput{-60}(!0.5 0.1 3 sqrt mul add 2 div 0.5 add 0.5 3 sqrt mul 0.1 add 2 div){\gtfamily 右座標}
% 底ラベル
\rput(0.5, -0.1){\gtfamily 底座標}

% サンプル1:左座標 0.3、底座標 0.2 の場合 (1 - 0.2 - 0.3/2, 0.3*sqrt(3)/2)
\rput(!1 0.2 sub 0.3 2 div sub 0.3 3 sqrt 2 div mul){$(0.3, 0.5, 0.2)$}
% サンプル2:左座標 0.4、底座標 0.6 の場合 (1 - 0.6 - 0.4/2, 0.4*sqrt(3)/2)
\psdot[linecolor=red](!1 0.6 sub 0.4 2 div sub 0.4 3 sqrt 2 div mul)
\end{pspicture}

\end{document}

カテゴリーTeX