如何制作龙卷风图(龙卷风图、龙卷风图)来表示不确定性

如何制作龙卷风图(龙卷风图、龙卷风图)来表示不确定性

我找不到任何关于如何在 latex/overleaf 中制作龙卷风图的指南。有人知道如何制作吗?

我正在进行经济分析,想展示变化将如何影响生产成本。

灵感图片:

灵感1灵感2

编辑:该问题被标记为重复问题,但我尝试使用这个问题(如何使用 pgfplots 绘制漂亮的人口金字塔图?) 作为基础,但不幸的是,我并不满意,而且我被卡住了。

我尽力

我还有许多工作要做,才能使它更符合我的两张灵感图片,例如:

  • % 值代表总数的百分比。如何删除它们并显示与主值之间的变化(?),如两个示例图片所示?
  • 如何插入 x 轴和 y 轴?

我删除了页眉/标题,但这不是必需的,因为我将在下面添加图形文本。

如果我无法解释我的问题,我很抱歉,因为我提到我对 latex/overleaf 很陌生:) 我感谢您的反馈和答案!

(我也尝试过使用这个:使用 PGFPlots 创建龙卷风图并强制中断其中一个水平条但我发现这个更难理解。我希望 y 轴不带编号,而是带文本,但不知道如何更改。)

\documentclass{standalone}
\usepackage[svgnames]{xcolor}
\usepackage{tikz}
\usepackage{pgfplotstable}
\usepackage{wasysym}
\begin{document}

\pgfplotstableread[col sep=comma]{
unit,min,max
Lipid content,1000,1300
Growth rate,800,1000
Main equipment cost basis,500,500
Operating factor,50,400
}\loadedtable

\newlength{\dy}\setlength{\dy}{\baselineskip}
\newlength{\dx}\setlength{\dx}{0.007em}
\newlength{\temp}

\pgfplotstablegetrowsof{\loadedtable}
\pgfmathparse{\pgfplotsretval-1}
\edef\rows{\pgfmathresult}
% compute total for percentages
\setlength{\temp}{0pt}
\foreach \y in {0,1,...,\rows}{%
  \pgfplotstablegetelem{\y}{min}\of\loadedtable
  \global\advance\temp by \pgfplotsretval pt
  \pgfplotstablegetelem{\y}{max}\of\loadedtable
  \global\advance\temp by \pgfplotsretval pt
}
\pgfmathparse{0.01\temp}
\edef\total{\pgfmathresult}

\noindent\begin{tikzpicture}

\foreach \y in {0,1,...,\rows}{%
  \pgfplotstablegetelem{\y}{unit}\of\loadedtable
  \node[left] at (-19em,-\y\dy) {\strut\pgfplotsretval};
  \pgfplotstablegetelem{\y}{min}\of\loadedtable
  \node[left] at (-15em,-\y\dy) {\strut\pgfplotsretval};
  \node[left,fill=Navy,text width=\pgfplotsretval\dx,text height=.8\dy,inner sep=0]
    at (0,-\y\dy+0.1\dy) {};
  \pgfmathparse{\pgfplotsretval/\total}
  \pgfmathprintnumberto[fixed,precision=2]{\pgfmathresult}{\per}
  \node[left] at (-\pgfplotsretval\dx,-\y\dy) {\small\strut\per\%};
  \pgfplotstablegetelem{\y}{max}\of\loadedtable
  \node[left] at (17em,-\y\dy) {\strut\pgfplotsretval};
  \node[right,fill=HotPink,text width=\pgfplotsretval\dx,text height=.8\dy,inner sep=0]
    at (0,-\y\dy+0.1\dy) {};
  \pgfmathparse{\pgfplotsretval/\total}
  \pgfmathprintnumberto[fixed,precision=2]{\pgfmathresult}{\per}
  \node[right] at (\pgfplotsretval\dx,-\y\dy) {\small\strut\per\%};
}

\end{tikzpicture}
\end{document}

相关内容