pgfplots 中有 xcomb 和 ycomb,但是有没有类似 xycomb 的东西?

pgfplots 中有 xcomb 和 ycomb,但是有没有类似 xycomb 的东西?

我正在尝试制作类似下图的东西,但采用 3D 形式,以便绘制离散点质量函数。我在手册中找到的唯一示例pgfplots是第 111 页,但我不知道如何根据我的需要对其进行修改——无论如何,我认为这是错误的起点。

我使用简单的绘图命令创建了这个图形:

在此处输入图片描述

答案1

我认为,如果想要自然地定制 2D 图形,请使用普通的 TikZ。此外,如果想要自然地、数学地定制 3D 图形,请使用普通的 Asymptote。

这个带有 Asymptote 的 xycomb 怎么样?

西科姆

// Run on http://asymptote.ualberta.ca/
import three;
unitsize(1cm);
currentprojection=orthographic((1,1,.5),center=true,zoom=.95);
surface b=scale3(.2)*unitsphere;
pair[] xycomb={(0,1), (3,0), (4,4), (3,2), (2,4), (0,4)};
real[] h={1.5,2,1,3,1,3.5};
pen[] p={red,blue,magenta,yellow,orange,green};
pen q=linewidth(2mm)+opacity(1);
triple[] Mxy,M;
for (int i=0; i<xycomb.length; ++i){
M.push((xycomb[i].x,xycomb[i].y,h[i]));
Mxy.push((xycomb[i].x,xycomb[i].y,0));
draw(Mxy[i]--M[i],p[i]+q);
draw(shift(M[i])*b,p[i]);  
}

// grid on XY-plane
import grid3;
limits((-1,-1,0),(5,5,0));
grid3(XYXgrid,step=1,.5gray+.5white);
draw(Label("$x$",EndPoint),-X--5X,Arrow3);
draw(Label("$y$",EndPoint),-Y--5Y,Arrow3);
draw(Label("$z$",EndPoint),O--3Z,Arrow3()); 

附录选项xcombycombxbarybar最初在 TikZ 中(参见第 22.8 节 平滑图、锐利图、跳跃图、梳状图和条形图在里面手册)pgfplots我猜这是基于的。

在此处输入图片描述

\documentclass[tikz,border=5mm]{standalone}
\begin{document}
\begin{tikzpicture}[thick]
\draw plot[ycomb,mark=ball] coordinates{(1,1) (2,1.5)};
\draw[gray,<->] 
(3,0) node[right,black]{$x$}--(0,0)--(0,2) node[above,black]{$y$};
\end{tikzpicture}
\end{document}

但是,如果喜欢直接用纯 TikZ 绘图,则可以忽略xcombycombxbarybar

在此处输入图片描述

\documentclass[tikz,border=5mm]{standalone}
\begin{document}
\begin{tikzpicture}[c/.style={circle,inner sep=2pt},thick]
\draw[red] (1,0)--+(90:1) node[c,fill=red]{};   
\draw[blue] (2,0)--+(90:1.5) node[c,fill=blue]{};
\draw[gray,<->] 
(3,0) node[right,black]{$x$}--(0,0)--(0,2) node[above,black]{$y$};      
\end{tikzpicture}
\end{document}

答案2

根据此处对不同但相关问题的反馈是否可以在 pgfplots 中请求一种新的绘图类型?如果可以,如何请求?我可以修改@hpekristiansen 提供的一个示例来生成几乎我想要的,所以这几乎是一个答案,但它可能对其他人有帮助——此外,这不适合评论。问题:如何摆脱顶部和底部的端点?我只想要这条线。我可以忍受这个,但也许我可以做得更好。这是代码,输出如下:

\documentclass]{amsbook}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}

\begin{document}
\begin{tikzpicture}
    \begin{axis}[
        view={110}{20},
        width=10cm,
        height=10cm,
        grid=major,
        xmin=0,xmax=4,
        ymin=0,ymax=4,
        zmin=0,zmax=3,
        xtick={0,1,2,3,4},
        ytick={0,1,2,3,4},
        ylabel={$y$},
        xlabel={$x$},
        zlabel={$z$},
        ]
\addplot3 coordinates {(3,3,0) (3,3,1.5)};
\end{axis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容