複雑で滑らかな曲線を描く方法

複雑で滑らかな曲線を描く方法

それぞれの曲げを非常に滑らかにしたいです。曲線を描くための唯一の基準は、曲線が (1,2.5) から始まり、(1,2.75) で終わることです。曲線の方程式は示されていません。私はそれをできませんでした。助けてください。

\documentclass[tikz,border=13mm]{standalone}
\usetikzlibrary{arrows.meta,decorations.markings}
\usetikzlibrary{calc}
%\pgfplotsset{ticks=none}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}
\begin{document}
     \begin{axis}[name=MyAxis,grid=major,grid style=dotted , xmin=0, xmax=12, ymin=0, ymax=5,
          xlabel=$x\rightarrow$, ylabel={$y \rightarrow$}, 
                  %xtick = {0,.3479,1},  xticklabels = {,$x_1$,},
                    %ytick = {0,0.015,0.0414,.4}, yticklabels={,,,},  %yticklabels=\empty,
         scale=1, restrict y to domain=0:5,clip=false]
    \draw  (1,0) -- (1,3);
    \addplot[color=red,smooth,thick,-] coordinates  {
    (1,2.5) (.3,2) (1,.8) (5,0.5) (7,.75) (7.75,1.15) (8.25,1.75)  (8,2.5) (7,3) (5,3.2) (3.75,3.15) (2.5,3) (1,2.75)};
            \end{axis}
\end{tikzpicture}
\end{document}

答え1

\draw[color=red] plot [smooth cycle]より良い結果を得るには、次の方法があります:

\documentclass[tikz,border=13mm]{standalone}
\usetikzlibrary{arrows.meta,decorations.markings}
\usetikzlibrary{calc}
%\pgfplotsset{ticks=none}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}
\begin{document}
    \begin{tikzpicture}[>=stealth,declare function={f(\x)=(10.5-\x)/(10.5);}]
 \begin{axis}[name=MyAxis,grid=major,grid style=dotted , xmin=0, xmax=12, ymin=0, ymax=5,
          xlabel=$x\rightarrow$, ylabel={$y \rightarrow$}, 
                  %xtick = {0,.3479,1},  xticklabels = {,$x_1$,},
                    %ytick = {0,0.015,0.0414,.4}, yticklabels={,,,},      %yticklabels=\empty,
         scale=1, restrict y to domain=0:5,clip=false]
    \draw  (1,0) -- (1,3);
    \draw[color=red] plot [smooth cycle] coordinates {
(1,2.5) (.3,2) (1,.8) (5,0.5) (7,.75) (7.75,1.15) (8.25,1.75)  (8,2.5) (7,3) (5,3.2) (3.75,3.15) (2.5,3) (1,2.75)};
            \end{axis}
\end{tikzpicture}
\end{document}

Gummi で実行した結果は次のとおりです。 ここに画像の説明を入力してください

線がない場合、曲線は次のようになります。 ここに画像の説明を入力してください

user1942348 が次の行を除いた元のコードを投稿しました: ここに画像の説明を入力してください

答え2

使用方法hobby:

\documentclass[tikz,border=13mm]{standalone}
\usetikzlibrary{arrows.meta,decorations.markings}
\usetikzlibrary{calc, hobby}
%\pgfplotsset{ticks=none}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}
\begin{document}
\begin{tikzpicture}[use Hobby shortcut]
     \begin{axis}[name=MyAxis,grid=major,grid style=dotted , xmin=0, xmax=12, ymin=0, ymax=5,
          xlabel=$x\rightarrow$, ylabel={$y \rightarrow$}, 
                  %xtick = {0,.3479,1},  xticklabels = {,$x_1$,},
                    %ytick = {0,0.015,0.0414,.4}, yticklabels={,,,},  %yticklabels=\empty,
         scale=1, restrict y to domain=0:5,clip=false]
    \draw  (1,0) -- (1,3);
    \draw[red, thick] (1,2.5)..(.3,2)..(1,.8)..(5,0.5)..(7,.75)..(7.75,1.15)..(8.25,1.75)..(8,2.5)..(7,3)..(5,3.2)..(3.75,3.15)..(2.5,3)..(1,2.75);
            \end{axis}
\end{tikzpicture}
\end{document}

滑らかな曲線

編集:

\addplotコードをクリーンアップし、ポイントの数を減らして曲線をプロットとして作成しました。

\documentclass[tikz,border=1cm]{standalone}
\usetikzlibrary{hobby}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\begin{document}
\begin{tikzpicture}
\begin{axis}[grid=major, grid style=dotted, xmin=0, xmax=12, ymin=0, ymax=5, xlabel=$x\rightarrow$, ylabel={$y \rightarrow$}]
  \draw  (1,0) -- (1,3);
  \addplot[red, thick, smooth, hobby] coordinates  {(1,2.5) (.3,2) (1,.8) (5,0.5) (7,.75) (8.25,1.75) (5,3.2) (1,2.75)};    
\end{axis}
\end{tikzpicture}
\end{document}

ほぼ同じ滑らかな曲線

関連情報