我正在尝试使用\datavisualization
TikZ 显示,但即使重读了 pgf/TikZ 手册(第 VI 部分,第 58 节)并再次检查了所有内容,我还是没有得到预期的图。我没有收到任何错误,但显示很乱。
加载datavisualization
TikZ 库后,我正在执行以下操作:
\begin{tikzpicture}
\datavisualization [school book axes,
visualize as scatter]
data [read from file={1.csv}]
data [read from file={2.csv}]
data [read from file={3.csv}]
;
\end{tikzpicture}
这里1.csv
,2.csv
和3.csv
是与文件位于同一目录中的现有文件.tex
,它们遵循以下格式([...]
表示它继续):
x, y
0, 0
0.010000, -0.000200
0.020000, -0.005238
0.030000, -0.017640
0.040000, -0.034847
0.050000, -0.054843
0.060000, -0.076289
0.070000, -0.098301
0.080000, -0.120320
0.090000, -0.142004
[...]
根据我在 pgf 手册第 57.2 节中阅读的内容,在标题下数字准确性,与数字格式或小数精度没有冲突。
经过所有这些,输出已经退化了:
这根本不是预期的图表。y
值的范围从 0 到 -1,并且没有重复的x
值。我不知道我做错了什么!
平均能量损失
我把整个糟糕的序言都放进去了,以防万一有什么事情把事情搞乱。
% ---DOCUMENT CLASS---
\documentclass[11pt, a4paper]{article}
\usepackage[margin=2.5cm]{geometry}
\usepackage[utf8]{inputenc}
% ---MINTED---
\usepackage{mdframed}
%\usepackage{minted}
%\BeforeBeginEnvironment{minted}{\begin{mdframed}}
%\AfterEndEnvironment{minted}{\end{mdframed}}
% ---MISC. PACKAGES---
\usepackage{setspace}
\usepackage{amssymb}
\usepackage{multirow}
\usepackage{amsmath}
\usepackage{mathtools}
\usepackage{bigints}
\usepackage{float}
\usepackage{pgfplots}
\usepackage{filecontents}
% ---FOOTNOTES---
\usepackage[symbol]{footmisc}
\renewcommand{\thefootnote}{\fnsymbol{footnote}}
% ---NEW MATH COMMANDS---
\newcommand*{\QED}{\hfill\ensuremath{\square}}
\newcommand{\z}{\mathbb{Z}}
% ---AMSTHM---
\usepackage{amsthm}
\newtheorem{cor}{Corollary}
\newtheoremstyle{big}% hname
{4em}% hSpace above
{4em}% hSpace below
{\itshape}% hBody font
{}% hIndent amount
{\bf}% hTheorem head font
{}% hPunctuation after theorem heading
{.5em}% hSpace after theorem heading
{}%
\theoremstyle{big}
\newtheorem{prop}{Proposition}
\usepackage{amsfonts}
\usepackage{chngcntr}
\usepackage[labelfont=bf]{caption}
\captionsetup[listing]{position=top}
% ---LISTINGS---
%\renewcommand{\listingscaption}{Code listing}
\usepackage[title]{appendix}
% ---TIKZ---
\usepackage{tikz}
\usetikzlibrary{shapes.geometric, arrows}
\usetikzlibrary{datavisualization}
\usetikzlibrary{positioning}
\tikzstyle{startstop} = [rectangle,
rounded corners,
minimum width=3cm,
minimum height=1cm,
text centered,
draw=black,
fill=red!30]
\tikzstyle{io} = [trapezium,
trapezium left angle=70,
trapezium right angle=110,
minimum width=0.5cm,
minimum height=1cm,
text centered,
draw=black,
fill=blue!10]
\tikzstyle{process} = [rectangle,
minimum width=3cm,
minimum height=1cm,
text centered,
draw=black,
fill=orange!30]
\tikzstyle{decision} = [diamond,
minimum width=3cm,
minimum height=1cm,
text centered,
draw=black,
fill=green!30]
\tikzstyle{arrow} = [thick, ->, >=stealth]
% ---PLOTS---
\pgfplotsset{compat=1.12}
% ---XCOLOR---
\usepackage{xcolor}
\definecolor{bg}{rgb}{0.95,0.95,0.95}
\definecolor{dgreen}{rgb}{0.1, 0.5, 0.2}
% ---HYPERREF---
\usepackage{hyperref}
\hypersetup{
colorlinks=true,
linkcolor=blue,
filecolor=magenta,
urlcolor=cyan,
citecolor=dark blue
}
\newcommand{\propautorefname}{Proposition}
\newcommand{\corautorefname}{Corollary}
\newcommand{\listingautorefname}{Code Listing}
\begin{document}
\begin{tikzpicture}
\datavisualization [school book axes,
visualize as scatter]
data [read from file={(1,1)_n100(1).csv}]
data [read from file={(1,1)_n100(2).csv}]
data [read from file={(1,1)_n100(3).csv}]
;
\end{tikzpicture}
\end{document}
答案1
大部分序言对这个问题没有影响。我只保留了必要的部分。
不清楚为什么标题(即数据 .csv 文件的顶行)无法正确读取/使用。为了避免此问题,请明确使用键headline
并指定{x, y}
为值。
通过使用headline
密钥,您还必须x, y
在数据文件中删除!如果不这样做,它将被视为数据点。
您可以headline
在以下位置找到更多信息:http://mirrors.ctan.org/graphics/pgf/base/doc/pgfmanual.pdf#pgf.headline(第 770 页)
% ---DOCUMENT CLASS---
\documentclass[11pt, a4paper]{article}
\usepackage[margin=2.5cm]{geometry}
% ---MISC. PACKAGES---
\usepackage{pgfplots}
% ---TIKZ---
\usepackage{tikz}
\usetikzlibrary{datavisualization}
% ---PLOTS---
\pgfplotsset{compat=1.16}
\begin{document}
\begin{tikzpicture}
\datavisualization [school book axes,
all axes={length=6cm},
x axis={min value=0,max value=1,ticks={step=0.5,minor steps between steps=4}},
y axis={min value=-1,max value=0,ticks={step=0.5,minor steps between steps=4}},
visualize as scatter]
data[headline={x, y}, read from file={1.csv}]
;
\end{tikzpicture}
\end{document}
即使点显示正确,图表也很难阅读。因此,我强制将轴和刻度加长并标注。这可能对您没有用,但它可以帮助未来的读者查看图表。
正如评论中提到的那样……这是一种奇怪的行为。甚至pgf
/tikz
手册也显示您正确地格式化了数据文件。他们有多个一致的例子。我猜这是一个意外引入的错误?但我并不完全确定。
如果你感到疑惑的话,我在查看使用 读取数据文件的其他示例时发现了这个问题\datavisualization
。 这个答案来自一个非常相似的问题最终帮助我发现了这个问题。