我找不到任何关于如何在 latex/overleaf 中制作龙卷风图的指南。有人知道如何制作吗?
我正在进行经济分析,想展示变化将如何影响生产成本。
灵感图片:
编辑:该问题被标记为重复问题,但我尝试使用这个问题(如何使用 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}