更改绘图指定部分的线条样式 - pgfplots

更改绘图指定部分的线条样式 - pgfplots

我希望能够通过一个addplot命令更改图表中某个部分的线条样式。是否有任何方法可以更改 x 轴指定部分的线条样式属性?我只见过类似的问答地址多个 addplots以满足不同的线条风格,以及很好的例子其中解决方案似乎是通过添加draw具有不同风格来满足问题的期望。不过,它似乎也只是在最后的情节可视化中添加了不同的情节。

我的 MWE 如下所示,它采用了一种“丑陋”的解决方案,即仅将各个部分拆分为多个addplot命令。

在此处输入图片描述

\documentclass[10pt,border=3mm,tikz]{standalone}
    \usepackage{pgfplots}
    \pgfplotsset{compat=1.18}
    \usetikzlibrary{pgfplots.groupplots}
    
    \begin{document}
    \begin{tikzpicture}   
            \begin{groupplot}[
                group style={
                    group size = 1 by 1,
                    },
                clip=true,
                enlargelimits=true,
                height = 0.75\columnwidth,
                width = 1\columnwidth,
                axis x line = center,
                axis y line = center,
                xlabel={$x$},
                xmin=0,
                xmax=3,
                xtick={0,1,2,3}
                ]
                \nextgroupplot[ymin=0,
                                ymax=10,
                                ytick={0,2,...,10},
                                ylabel = {$y$}
                                ]
    
                    \addplot[color=blue, domain = 0:1, samples=50                   
                            ] {x^2};
                    \addplot[color=blue, dashed, domain = 1:2, samples=50                   
                            ] {x^2};
                    \addplot[color=blue, domain = 2:3, samples=50                   
                            ] {x^2};
                            
            \end{groupplot}    
        \end{tikzpicture}
    \end{document}

提前致谢。

答案1

您可以使用库soft clip提供的功能fillbetween(如 MS-SPO 在评论中所建议的),并根据第 104 页的示例创建自己的自定义样式。当前 PGFPlots 手册(版本 1.18.1)

\documentclass[border=10pt]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\usetikzlibrary{pgfplots.groupplots, fillbetween}

\pgfplotsset{
    dashed between/.style args={#1:#2}{
        draw=none,
        postaction={
            draw,
            decorate,
            decoration={
                soft clip,
                soft clip path={
                    (\pgfkeysvalueof{/pgfplots/xmin},\pgfkeysvalueof{/pgfplots/ymin}) rectangle
                    (#1,\pgfkeysvalueof{/pgfplots/ymax})
                },
            }
        },
        postaction={
            draw,
            dashed,
            decorate,
            decoration={
                soft clip,
                soft clip path={
                    (#1,\pgfkeysvalueof{/pgfplots/ymin}) rectangle
                    (#2,\pgfkeysvalueof{/pgfplots/ymax})
                },
            }
        },
        postaction={
            draw,
            decorate,
            decoration={
                soft clip,
                soft clip path={
                    (#2,\pgfkeysvalueof{/pgfplots/ymin}) rectangle
                    (\pgfkeysvalueof{/pgfplots/xmax},\pgfkeysvalueof{/pgfplots/ymax})
                },
            }
        }
    }
}

\begin{document}
\begin{tikzpicture}   
    \begin{groupplot}[
        group style={
            group size=1 by 1,
        },
        clip=true,
        enlargelimits=true,
        height=0.75\columnwidth,
        width=1\columnwidth,
        axis x line=center,
        axis y line=center,
        xlabel={$x$},
        xmin=0,
        xmax=3,
        xtick={0,1,2,3}
    ]
    \nextgroupplot[
        ymin=0,
        ymax=10,
        ytick={0,2,...,10},
        ylabel={$y$}
    ]

        \addplot[color=blue, domain={0:3}, dashed between={1:2}] {x^2};

        \addplot[color=red, domain={0:3}, dashed between={0.5:2.5}] {4};

    \end{groupplot}    
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容