
0 대신 -2로 시작하는 tkzKiviatGrad 스케일을 변경할 수 있습니까? 따라서 아래 예의 판매는 -2 -1 0 1 2가 됩니다.
그리고 어떻게든 그래프 중앙에 시작점을 표시할 수 있나요?
\documentclass{article}
\usepackage[table,dvipsnames]{xcolor}
\usepackage{tkz-kiviat}
\usetikzlibrary{arrows,positioning,fit}
\begin{document}
\begin{figure}[h!]
\centering
\begin{tikzpicture}
\tkzKiviatDiagram[scale=0.8,label distance=1cm,
gap = 1.5,
lattice = 4]{Barfoo1,Barfoo2,Barfoo3,Barfoo4,Barfoo5,Barfoo6}
\tkzKiviatLine[thick,color=blue](1,2,3,2,4,0)
\tkzKiviatLine[thick,color=yellow](1,2,4,1,4,2)
\tkzKiviatLine[thick,color=green](1,4,4,2,4,4)
\tkzKiviatLine[thick,color=Aquamarine](1,2,3,1,2,2)
\tkzKiviatLine[thick,color=Magenta](1,3,4,1,4,3)
\tkzKiviatGrad[unity=1](0)
\node[anchor=south west,xshift=-60pt,yshift=40pt] at (current bounding box.south east)
{
\begin{tabular}{@{}lp{4cm}@{}}
\cellcolor{blue} & Foobar1 \\
\cellcolor{yellow} & Foobar2 \\
\cellcolor{green} & Foobar3\\
\cellcolor{Aquamarine} & Foobar4 \\
\cellcolor{Magenta} & Foobar5 \\
\end{tabular}
};
\end{tikzpicture}
\end{figure}
\end{document}
답변1
문제를 해결하려면 다음을 살펴보십시오.tkz-kiviat.sty그리고 의 정의 \tkzKiviatGrad
.
결과:
MWE:
\documentclass{article}
\usepackage[table,dvipsnames]{xcolor}
\usepackage{tkz-kiviat}
\usetikzlibrary{arrows}
\makeatletter
\def\tkzKiviatGrad{\pgfutil@ifnextchar[{\tkz@KiviatGrad}{\tkz@KiviatGrad[]}}
\def\tkz@KiviatGrad[#1](#2){%
\begingroup
\pgfkeys{/kiviatgrad/.cd,
graduation distance= 0 pt,
prefix ={},
suffix={},
unity=1
}
\pgfqkeys{/kiviatgrad}{#1}%
\let\tikz@label@distance@tmp\tikz@label@distance
\global\let\tikz@label@distance\tkz@kiv@grad
\foreach \nv in {0,...,\tkz@kiv@lattice}{ %original: \foreach \nv in {1,...,\tkz@kiv@lattice}{
\pgfmathparse{\tkz@kiv@unity*\nv}
\pgfmathtruncatemacro{\result}{\pgfmathresult-2} %original: \pgfmathtruncatemacro{\result}{\pgfmathresult}
\protected@edef\tkz@kiv@gd{\tkz@kiv@prefix$\result$\tkz@kiv@suffix}
\path[/kiviatgrad/.cd,#1] (0:0)--(360/\tkz@kiv@radial*#2:\nv*\tkz@kiv@gap)
node[label=(360/\tkz@kiv@radial*#2)-90:\tkz@kiv@gd] {};
}
\let\tikz@label@distance\tikz@label@distance@tmp
\endgroup
}%
\makeatother
% \usepackage{etoolbox}
% \makeatletter
% \patchcmd{\tkz@KiviatGrad}{\pgfmathresult}{\pgfmathresult-2}
% {\typeout{*** SUCCESS ***}}
% {\ERRORpatchfailed}
% \makeatother
\begin{document}
\begin{figure}[h!]
\centering
\begin{tikzpicture}
\tkzKiviatDiagram[scale=0.8,label distance=1cm,
gap = 1.5,
lattice = 4]{Barfoo1,Barfoo2,Barfoo3,Barfoo4,Barfoo5,Barfoo6}
\tkzKiviatLine[thick,color=blue](1,2,3,2,4,0)
\tkzKiviatLine[thick,color=yellow](1,2,4,1,4,2)
\tkzKiviatLine[thick,color=green](1,4,4,2,4,4)
\tkzKiviatLine[thick,color=Aquamarine](1,2,3,1,2,2)
\tkzKiviatLine[thick,color=Magenta](1,3,4,1,4,3)
\tkzKiviatGrad[unity=1](0)
\node[anchor=south west,xshift=-60pt,yshift=40pt] at (current bounding box.south east)
{
\begin{tabular}{@{}lp{4cm}@{}}
\cellcolor{blue} & Foobar1 \\
\cellcolor{yellow} & Foobar2 \\
\cellcolor{green} & Foobar3\\
\cellcolor{Aquamarine} & Foobar4 \\
\cellcolor{Magenta} & Foobar5 \\
\end{tabular}
};
\end{tikzpicture}
\end{figure}
\end{document}
1. 등급 척도 값만 변경하는 방법은 무엇입니까?(문제 1만 해결)
\patchcmd
with를 사용하여 파일 \usepackage{etoolbox}
내부의 명령을 재정의 할 수 있습니다 .sty
. 이름에 @ 기호가 포함된 명령에 액세스하거나 수정하려면 재정의를 \makeatletter
및 로 묶어야 합니다 . \makeatother
(참고:@Frank Mittelbach의 접근 방식:.sty 파일 수정?
규모를 에서 로 이동하려면 0 1 2 3 4
아래 재정의를 사용하여 정의 내부 의 계산된 값에서 -2 -1 0 1 2
빼야 합니다 .2
\pgfmathparse
\def\tkz@KiviatGrad
\usepackage{etoolbox}
\makeatletter
\patchcmd{\tkz@KiviatGrad}{\pgfmathresult}{\pgfmathresult-2}
{\typeout{*** SUCCESS ***}}
{\ERRORpatchfailed}
\makeatother
2. 시작점을 중앙에 표시(문제 1과 2 해결)
두 번째 질문에 대해서는 전체 정의를 재정의하는 해결책만 찾았습니다. for-loop
with 변수 는 istead \nv
로 시작해야 하므로 프리앰블에 다음을 추가하세요. 문제 1도 같은 방법으로 해결하려면 로 교체하세요 . : (참고:0
1
\pgfmathtruncatemacro{\result}{\pgfmathresult}
\pgfmathtruncatemacro{\result}{\pgfmathresult-2}
@Werner의 접근 방식: \makeatletter ... \makeatother를 사용한 로컬 재정의
\makeatletter
\def\tkzKiviatGrad{\pgfutil@ifnextchar[{\tkz@KiviatGrad}{\tkz@KiviatGrad[]}}
\def\tkz@KiviatGrad[#1](#2){%
\begingroup
\pgfkeys{/kiviatgrad/.cd,
graduation distance= 0 pt,
prefix ={},
suffix={},
unity=1
}
\pgfqkeys{/kiviatgrad}{#1}%
\let\tikz@label@distance@tmp\tikz@label@distance
\global\let\tikz@label@distance\tkz@kiv@grad
\foreach \nv in {0,...,\tkz@kiv@lattice}{ %original: \foreach \nv in {1,...,\tkz@kiv@lattice}{
\pgfmathparse{\tkz@kiv@unity*\nv}
\pgfmathtruncatemacro{\result}{\pgfmathresult-2} %original: \pgfmathtruncatemacro{\result}{\pgfmathresult}
\protected@edef\tkz@kiv@gd{\tkz@kiv@prefix$\result$\tkz@kiv@suffix}
\path[/kiviatgrad/.cd,#1] (0:0)--(360/\tkz@kiv@radial*#2:\nv*\tkz@kiv@gap)
node[label=(360/\tkz@kiv@radial*#2)-90:\tkz@kiv@gd] {};
}
\let\tikz@label@distance\tikz@label@distance@tmp
\endgroup
}%
\makeatother