TiKz Kiviat 图表 - 标签编号从 0.0 到 1.0

TiKz Kiviat 图表 - 标签编号从 0.0 到 1.0

我正在尝试创建一个 Kiviat 图。轴的标签值必须从 0.0 到 1.0。我用过,\pgfmathresult/10但只得到整数。

下面我展示了我正在使用的代码。有人能帮我获取从 0.0 到 1.0 的标签值吗

\documentclass{article}
\usepackage{tikz,lipsum,lmodern}
\usepackage[most]{tcolorbox}
\usepackage{tkz-kiviat,numprint,fullpage}
\usepackage{pgfplots}
\usetikzlibrary{arrows}
\newcommand\ColorBox[1]{\textcolor{#1}{\rule{2ex}{2ex}}}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[brazil]{babel}  
\usepackage{etoolbox}
\usetikzlibrary{calc} 

\begin{document}

\makeatletter
\patchcmd{\tkz@KiviatGrad}{\pgfmathresult}{\pgfmathresult/10}
         {\typeout{*** SUCCESS ***}}
         {\ERRORpatchfailed}
\makeatother 
\begin{figure}[!h]
\centering
\frame{
\begin{tikzpicture}[label distance=.15cm, scale=0.5]
 \tkzKiviatDiagram[radial  style/.style ={-}, lattice style/.style ={black!30}]% 
{$Q_u$, $Q_c$, $Q_d$, $Q_{da}$, $Q_m$, $Q_p$, $Q_t$}
 \tkzKiviatLine[thick,color=red!20,
                mark=ball,
                ball color=red!20,
                mark size=4pt,
                fill=red!20](8,7.5,10,10,9,9,7.5)
 \tkzKiviatLine[thick,color=blue!20,mark=ball,
                mark size=4pt,
                mark color=blue!20,
                fill=blue!20,
                opacity=.5](8.6,9,10,10,8,5,5)


  \tkzKiviatGrad[suffix=,unity=1](0)


\end{tikzpicture}}

\end{figure}

结果是:

在此处输入图片描述

答案1

您所做的更改不起作用,因为下一步中\tkz@KiviatGrad使用了。您需要将其更改为。因为这给我带来了一些精度问题(例如,而不是),所以我后来格式化了数字。由于空间不大,我将标签移动到了第二个轴,并将字体大小减小到了。注意,我设置了而不是除以 10 。\pgfmathtruncatemacro\pgfmathsetmacro0.200010.2\pgfmathprintnumber\tinyunity=0.1\tkz@KiviatGrad

参见代码中的注释。

代码输出

\documentclass{article}
\usepackage{tkz-kiviat}
\makeatletter
\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 {1,...,\tkz@kiv@lattice}{
 \pgfmathparse{\tkz@kiv@unity*\nv} 
 \pgfmathsetmacro{\result}{\pgfmathresult} % change from \pgfmathtruncatemacro
 \protected@edef\tkz@kiv@gd{\tkz@kiv@prefix\pgfmathprintnumber[precision=1,fixed]{\result}\tkz@kiv@suffix} % used \pgfmathprintnumber instead of "$\result$"
    \path[/kiviatgrad/.cd,#1] (0:0)--(360/\tkz@kiv@radial*#2:\nv*\tkz@kiv@gap) 
       node[label=(360/\tkz@kiv@radial*#2)-90:\tiny\tkz@kiv@gd] {}; % added \tiny
      }
 \let\tikz@label@distance\tikz@label@distance@tmp  
\endgroup
}%
\makeatother
\begin{document}

\begin{figure}[!h]
\centering
\frame{
\begin{tikzpicture}[label distance=.15cm,scale=0.5]
 \tkzKiviatDiagram[radial  style/.style ={-}, lattice style/.style ={black!30}]% 
{$Q_u$, $Q_c$, $Q_d$, $Q_{da}$, $Q_m$, $Q_p$, $Q_t$}

\tkzKiviatGrad[unity=0.1](1) % set unity as 0.1
\end{tikzpicture}}
\end{figure}
\end{document}

相关内容