Pgfplots 绘制来自 csv 文件的数据

Pgfplots 绘制来自 csv 文件的数据

我正在尝试创建一个底部有三个 x 轴的图表。我找到了一个可以创建 3 个轴的代码,但是当我尝试绘制 csv 文件中的数据时,我收到一条错误消息:

!软件包 pgfkeys 错误:我不知道您传递了“逗号”的键“/tikz/col sep”,我将忽略它。也许您拼错了。

在其他设置下绘制 csv 文件时我没有遇到任何问题,但不知何故我无法让它工作。我做错了什么?这是文件: 测试.csv

这是我的代码:

\begin{document}
\usepackage{pgfplots}

    \begin{tikzpicture}
        \pgfplotsset{    
        every axis x label/.style={
        at={(ticklabel* cs:1.05)},
        yshift = -7.5pt,
        anchor=west,},
        width=14cm,
        height=7cm,
        every axis y label/.style={at={(current axis.above origin)},
        anchor=north east,
        yshift = 1cm,} }
        \begin{axis}[
        scaled y ticks = false,
          y tick label style={/pgf/number format/fixed,
          /pgf/number format/1000 sep = \thinspace},
          xmin=0,xmax=3,
          xlabel={$Re$},
          ylabel={$\delta ~\text{[mm]}$},
          ymin=0, ymax=2,
          ymajorgrids=true, xmajorgrids=true,
          axis y line*=left, axis x line*=bottom]
          \addplot[color=red,smooth,thick, col sep=comma] {test.csv};
        \end{axis}
        \begin{axis}[
            xmin=0,xmax=70,%--- CF,
            hide y axis,
             axis x line*=none,
            ymin=0, ymax=2,
            xlabel={$\dot{V} ~[\text{L} / \text{h}]$},
            x label style={yshift=-0.8cm},
            x tick label style={yshift=-0.8cm}
            ]
        \addplot[color=blue,smooth,thick] coordinates { 
                  (2.28,1.09068)
            (1.67,0.97372)
            (1.11,0.832298376)
            (0.55,0.634618222)
            (0.27,0.46422) };
        \end{axis} 
          \begin{axis}[
            xmin=0,xmax=35,
            hide y axis,
            axis x line*=none,
            ymin=0, ymax=2,
            xlabel={$\dot{V}/A ~[\text{m}^3 / \text{h} \text{m}^2]$},
            x label style={yshift=-1.6cm},
            x tick label style={yshift=-1.6cm}
            ]
        \addplot[color=black,thick] coordinates { 
                  (2.28,1.09068)
            (1.67,0.97372)
            (1.11,0.832298376)
            (0.55,0.634618222)
            (0.27,0.46422) };
        \end{axis}   
    \end{tikzpicture}
\end{document}

答案1

我认为,这包含对您问题的答案和 MWE。您的问题的答案是您应该尝试

\addplot[color=red,smooth,thick] table[col sep=comma,header=false,x index=0,y index=1] {test.csv};

如果您的test.csv数据格式中包含逗号分隔符,则此方法有效。这是因为col sep=comma对于表格来说,这是一个有效选项,但对于绘图来说,则不是。注意我也增加了xmax该情节,因为按照你的设置,整个情节会被剪掉。

为了使其成为 MWE,我

  1. 添加了文档类,
  2. 已加载amsmath(因为你正在使用\text),
  3. 移至\usepacage{pgfplots}上方\begin{document}
  4. 通过文件内容添加test.csv到 MWE 以便于测试。

我没有更改任何细节,因为我不知道它Re代表什么。如果它代表real part,我不会在数学模式中设置它。

\documentclass[tikz,border=3.14mm]{standalone}
\usepackage{filecontents}
\begin{filecontents*}{test.csv}
70.4,1.012015504
52.8,0.919477106
35.2,0.803237238
17.6,0.637529818
8.8,0.506007752
\end{filecontents*}
\usepackage{amsmath}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}
\begin{document}
\begin{tikzpicture}
    \pgfplotsset{    
    every axis x label/.style={
    at={(ticklabel* cs:1.05)},
    yshift = -7.5pt,
    anchor=west,},
    width=14cm,
    height=7cm,
    every axis y label/.style={at={(current axis.above origin)},
    anchor=north east,
    yshift = 1cm,} }
    \begin{axis}[
    scaled y ticks = false,
      y tick label style={/pgf/number format/fixed,
      /pgf/number format/1000 sep = \thinspace},
      xmin=0,xmax=75,
      xlabel={$Re$},
      ylabel={$\delta ~\text{[mm]}$},
      ymin=0, ymax=2,
      ymajorgrids=true, xmajorgrids=true,
      axis y line*=left, axis x line*=bottom]
      \addplot[color=red,smooth,thick] table[col sep=comma,header=false,
      x index=0,y index=1] {test.csv};
    \end{axis}
    \begin{axis}[
        xmin=0,xmax=70,%--- CF,
        hide y axis,
         axis x line*=none,
        ymin=0, ymax=2,
        xlabel={$\dot{V} ~[\text{L} / \text{h}]$},
        x label style={yshift=-0.8cm},
        x tick label style={yshift=-0.8cm}
        ]
    \addplot[color=blue,smooth,thick] coordinates { 
              (2.28,1.09068)
        (1.67,0.97372)
        (1.11,0.832298376)
        (0.55,0.634618222)
        (0.27,0.46422) };
    \end{axis} 
      \begin{axis}[
        xmin=0,xmax=35,
        hide y axis,
        axis x line*=none,
        ymin=0, ymax=2,
        xlabel={$\dot{V}/A ~[\text{m}^3 / \text{h} \text{m}^2]$},
        x label style={yshift=-1.6cm},
        x tick label style={yshift=-1.6cm}
        ]
    \addplot[color=black,thick] coordinates { 
              (2.28,1.09068)
        (1.67,0.97372)
        (1.11,0.832298376)
        (0.55,0.634618222)
        (0.27,0.46422) };
    \end{axis}   
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容