关于 pgfplot 中的网格线的帮助(版本 2)

关于 pgfplot 中的网格线的帮助(版本 2)

这是帮助解决 pgfplot 中的网格线问题

我编辑了该帖子中的代码以获得更接近我想要的笛卡尔平面上的网格。

这是我所得到的。通过在环境中指定grid=both,和和grid style={line width=.1pt, draw=gray!10},、、xmin=-10.5和,我认为会绘制 20 条水平灰线和 20 条垂直灰线。我认为环境中xmax=10.5应该指示绘制一些较暗的辅助线。但事实并非如此。我尝试指定、、和,以便通过、、和绘制“主网格” 。但没用。ymin=-10.5ymax=10.5axisTikZmajor grid style={line width=.2pt,draw=gray!50},axisTikZxtick={-10, -5, 5, 10},ytick={-10, -5, 5, 10},ticklabel style={font=\tiny,fill=white},extra x ticks={-9, -8, -7, -6, -4, -3, -2, -1, 1, 2, 3, 4, 6, 7, 8, 9},TikZx=-10x=-5x=5x=10

这里有一些需要包含的功能。-10-55和处的刻度线需要在两个轴上排版,并且“在网格线上”。 执行此代码后,它们都在网格下……但是,除了、、和10的排版外,在 x 轴下方和 y 轴左侧有一个水平白色条纹。为什么那里会有这个水平白色条纹?-10-5510

\documentclass{amsart}
\usepackage{tikz}
\usetikzlibrary{calc}

\usepackage{pgfplots}
\pgfplotsset{compat=1.11}


\begin{document}



\begin{tikzpicture}
\begin{axis}[title=An Illustration of Lattice Paths, title style={align=center,font=\bfseries},
    grid=both,grid style={line width=.1pt, draw=gray!10},major grid style={line width=.2pt,draw=gray!50},
    xmin=-10,xmax=10,ymin=-10,ymax=10,
    axis lines=middle,
    xtick={-10, -5, 5, 10},
    ytick={-10, -5, 5, 10},
    ticklabel style={font=\tiny,fill=white},
    extra x ticks={-9, -8, -7, -6, -4, -3, -2, -1, 1, 2, 3, 4, 6, 7, 8, 9},
    extra x tick labels={},
    extra y ticks={-9, -8, -7, -6, -4, -3, -2, -1, 1, 2, 3, 4, 6, 7, 8, 9},
    extra y tick labels={},
    minor tick num=4,
    enlargelimits={abs=0.5},
    axis line style={latex-latex},
    axis line style={shorten >=-7.5pt, shorten <=-7.5pt},
    xlabel style={at={(ticklabel* cs:1)},anchor=north west},
    ylabel style={at={(ticklabel* cs:1)},anchor=south west}
    ]

\coordinate (O) at (0,0);
\node[fill=white,circle,inner sep=0.5pt] (O-label) at ($(O)+(-135:10pt)$) {$\scriptstyle{O}$};
\coordinate (A) at (-3,9);
\node[fill=white,circle,inner sep=0.5pt] (A-label) at ($(A)+(-180:10pt)$) {$\scriptstyle{A}$};
\coordinate (B) at (7,-3);
\node[fill=white,circle,inner sep=0.5pt] (B-label) at ($(B)+(-45:10pt)$) {$\scriptstyle{B}$};

\draw[fill] (O) circle (1.5pt);
\draw[fill] (A) circle (1.5pt);
\draw[fill] (B) circle (1.5pt);

%These commands are for drawing a path from O to A.
\coordinate (A1) at (-1,0);
\coordinate (A2) at (-1,3);
\coordinate (A3) at (-3,3);

\draw[line width=1pt] (O) -- (A1) -- (A2) -- (A3) -- (A);

%These commands are for drawing a path from O to B.
\coordinate (B1) at (2,0);
\coordinate (B2) at (2,-2);
\coordinate (B3) at (5,-2);
\coordinate (B4) at (5,-3);
\coordinate (B) at (7,-3);

\draw[line width=1pt] (O) -- (B1) -- (B2) -- (B3) -- (B4) -- (B);

\coordinate (P) at (4,6);
\node[fill=white,circle,inner sep=0.5pt] (P-label) at ($(P)+(45:10pt)$) {$\scriptstyle{P}$};
\draw[fill] (P) circle (1.5pt);

\coordinate (Q) at (-7,-7);
\node[fill=white,circle,inner sep=0.5pt] (Q-label) at ($(Q)+(-135:10pt)$) {$\scriptstyle{Q}$};
\draw[fill] (Q) circle (1.5pt);

\end{axis}

\end{tikzpicture}

答案1

我认为major grid style={line width=.2pt,draw=gray!50},在轴环境中应该指示 TikZ 绘制一些较暗的辅助线。但它没有。

是的。尝试将其缩小到.1pt,您仍然可以将它们与其他行区分开来line width=.1pt,gray!10。请参阅下图以了解此情况。

我尝试指定 xtick={-10, -5, 5, 10},, ytick={-10, -5, 5, 10},, ticklabel style={font=\tiny,fill=white},, 以及 extra x ticks={-9, -8, -7, -6, -4, -3, -2, -1, 1, 2, 3, 4, 6, 7, 8, 9}, 以便让 TikZ 通过 x=-10、x=-5、x=5 和 x=10 绘制“主网格”。但是没有奏效。

我不明白你为什么要尝试做新的事情,而我在上一个问题中给你的代码正是通过这些点绘制线条。可能你不理解代码(这种情况可能发生),但代码已经做到了这一点。参见:

在此处输入图片描述

该命令minor tick num=#是每个主刻度之间的刻度数(不是刻度标签)。

因此在这种情况下您有 0、5、10。如果您写minor tick num=4,您将获得四个刻度。

因此从 0 到 5:1,2,3,4。
从 5 到 10:6,7,8,9。

四个数字 = 四个刻度。再次查看上图以了解其实际效果。

希望这可以帮助。

编辑:回复您的评论:

假设我想要一个笛卡尔平面上的网格,其中 xmin=-52、xmax=52、ymin=-11、ymax=17,并且我想要在距离 y 轴 13 的倍数的垂直线上和距离 y 轴 5 的倍数的水平线上实现主网格样式。

我无法在这里制作该平面,因为它太大了,但我会提供一个小例子来解释相同的概念。如果您不改变刻度,则默认值为 5 的倍数:{0,5,10,...},但您可以为每个轴单独更改此值。当您为某个轴设置刻度时,那些将被视为该轴的主要刻度。因此,如果您说{-9,-6,-3,0,3,6,9},那么这些将是主要刻度。

当然,如果刻度太多但您知道步骤,您可以简单地写下来xtick={-9,-6,...,9},,结果是一样的。您定义起点和终点,然后使用第二个数字来定义步骤。由于在 9 和 6 之间有 3 个数字,因此步骤为 3。

如果两个轴不同,我们需要使用以下方法单独指定每个轴的次要刻度

minor x tick num={4},
minor y tick num={4},

结果如下:

图1

以下是代码:

\documentclass{amsart}
\usepackage{tikz}
\usetikzlibrary{calc}

\usepackage{pgfplots}
\pgfplotsset{compat=1.11}

\begin{document}
\begin{tikzpicture}
\begin{axis}[grid style={line width=.1pt, draw=gray!10},major grid style={line width=.2pt,draw=gray!50},
    xmin=-11.75,xmax=11.75,
    ymin=-11.75,ymax=11.75,
    xtick={-9,-6,...,9},
    ytick={},
    grid=both,
    minor x tick num={4},
    minor y tick num={4},
    enlargelimits={abs=0},
    ticklabel style={font=\tiny,fill=white},
    axis lines=middle,
    axis line style={latex-latex},
    xlabel style={at={(ticklabel* cs:1)},anchor=north west},
    ylabel style={at={(ticklabel* cs:1)},anchor=south west}
]

\coordinate (O) at (0,0);
\node[fill=white,circle,inner sep=0pt] (O-label) at ($(O)+(-135:10pt)$) {$\scriptstyle{O}$};

\end{axis}
\end{tikzpicture}
\end{document}

相关内容