pgfplots 样条线和颜色序列不起作用

pgfplots 样条线和颜色序列不起作用

我想创建一个具有预定义颜色的图,并通过样条曲线连接各点。

两种情况都不会发生。颜色系列未应用(所有线条均为黑色),样条线也未应用于曲线。

\documentclass[]{scrbook}

\usepackage{pgfplots}
\usetikzlibrary{pgfplots.patchplots}

\definecolor{colorseriesRGB1}{RGB}{0,     0, 192}
\definecolor{colorseriesRGB2}{RGB}{192,   0,   0}
\definecolor{colorseriesRGB3}{RGB}{0  , 128,   0}
\definecolor{colorseriesRGB4}{RGB}{192,   0, 192}

\pgfplotscreateplotcyclelist{colorseries-rgb}{
  {colorseriesRGB1},
  {colorseriesRGB2},
  {colorseriesRGB3},
  {colorseriesRGB4},
}

\begin{document}
\pgfplotsset{width=0.8\textwidth, height=0.6\textwidth}
\begin{tikzpicture}
\begin{axis}[cycle list name=colorseries-rgb]
\addplot[samples = 10,patch type=quadratic spline] {x^2 - x +4};
\end{axis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

编辑:

我的原始代码使用的是数据表。如果我添加选项,mesh,patch,patch type=quadratic spline那么图看起来就完全错了

\begin{tikzpicture}
\begin{axis}[scale only axis,
             every axis plot/.append 
               style={line width=1.5pt},
             mark=none,
             style=solid,
             enlargelimits=false, ymax = 3.5,
             cycle list name=colorseries-office,
             % smooth,
             mesh,patch,patch type=quadratic spline
             ]
  %  column with header  "y1"
  \addplot+   table[x=x1,y=y1]  from  \datatable;
  \addplot+   table[x=x1,y=y2]  from  \datatable;
  \addplot+   table[x=x1,y=y3]  from  \datatable;
  \addplot+   table[x=x1,y=y4]  from  \datatable;
\end{axis}
\end{tikzpicture}

在此处输入图片描述

smooth然而,尽管我不知道它真正做了什么,这个选项看起来像我想要的:

在此处输入图片描述

答案1

如果没有可选参数,则只需使用

\addplot {x^2 - x +4};

将继承您指定的正确样式。但是,如果您希望覆盖某些参数但保留其他方面(正如你在代码中所做的那样),那么你必须使用\addplot+[...

\addplot+[samples = 10] {x^2 - x +4};

它告诉pgfplots使用中指定的样式cyclelist,但更改您指定的选项。

更多示例请参阅第 4.6.7 节。

关于quadratic spline,参考第 5.6.1 节,

二次样条实际上不过是使用二次多项式的分段拉格朗日插值:它需要序列“(左端),(右端),(中间)”中的三个点,并使用二次多项式对这三个点进行插值。

因此,对于您的示例,您可以使用类似

% left, right, middle
\addplot+[patch,mesh,patch type=quadratic spline]coordinates{(-5,33)(5,23)(0,3)};

看起来您目前正在尝试输入一个函数来帮助找到坐标 - 我不知道如何做到这一点,但也许这个网站上的一位专家会知道。

相关内容