修改散点图中的某些特征(版本 2)

修改散点图中的某些特征(版本 2)

我有一个散点图需要修改。为什么不O使用命令排版\node (origin) at ($(O)+(225:10pt)$) {$O$};?我希望使用与x 轴上的刻度标记标签和y 轴上的刻度标记标签O相同的字体进行排版。我不希望通过点绘制线条,也不希望从和绘制网格线。沿着 y 轴,我希望标签打印在两行上 - 第二行上打印“Candy Bars”。1012010120

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

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

\begin{document}

\begin{tikzpicture}

\begin{axis}[grid=major, title=\textbf{George's Unsold Candy Bars\unboldmath},
    ylabel = Number of Unsold Candy Bars,
    xlabel = Number of Days,
    xmin=0,xmax=11,ymin=0,ymax=130,
    xtick={\empty},ytick={\empty},
    extra x ticks={10},
    extra x tick labels={10},
    extra y ticks={120},
    extra y tick labels={120},
    yticklabel style={anchor=east},]

\addplot plot coordinates{(0,120) (1,108) (2,96) (3,84) (4,72) (5,60) (6,48) (7,36) (8,24) (9,12) (10,0)};
\coordinate (O) at (0,0);
\node (origin) at ($(O)+(225:10pt)$) {$O$};

\end{axis}

\end{tikzpicture}

\end{document}

答案1

首先,为什么要使用额外的刻度?只需使用常规刻度,结果是一样的。您也使用了\addplot plot,但第二个图是不需要的。关于您的问题:

为什么不使用命令 \node (origin) at ($(O)+(225:10pt)$) {$O$}; 排版 O?

您需要将命令置于axis环境之外。此外,声明一个命令的坐标是多余的,只需说 即可(0,0)

我希望 O 采用与 x 轴上的刻度标记标签 10 和 y 轴上的刻度标记标签 120 相同的字体排版。

在您的示例中,您写的是$O$,但结果会有所不同,原因有二:这是在数学模式下,您写的是字母 O,而不是数字零 0。更改为0将使用相同的字体。

我不想要通过这些点绘制线,也不想从 10 到 120 绘制网格线。沿着 y 轴,我希望标签打印在两行上 - 第二行上打印“糖果棒”。

该选项only marks仅绘制坐标点。可以通过说 来删除网格线grid=nonegrid=major对于 y 轴标签中的新线,只需添加\\您希望线条断开的位置即可。

输出

图1

代码

\documentclass{amsart}
\usepackage{tikz}
\usepackage{pgfplots}

\usetikzlibrary{calc}

\pgfplotsset{compat=newest}

\begin{document}
\begin{tikzpicture}

\begin{axis}[grid=none, align=center, title=\textbf{George's Unsold Candy Bars},
    ylabel = Number of Unsold\\Candy Bars,
    xlabel = Number of Days,
    xmin=0,xmax=11,
    ymin=0,ymax=130,    
    xtick={10},
    ytick={120},
    yticklabel style={anchor=east},]

\addplot[only marks] coordinates{(0,120) (1,108) (2,96) (3,84) (4,72) (5,60) (6,48) (7,36) (8,24) (9,12) (10,0)};
\end{axis}

\node (origin) at ($(0,0)+(225:10pt)$) {0};
\end{tikzpicture}
\end{document}

答案2

下面是渲染散点图的代码,它更接近我想要的效果。x 轴上 10 处的刻度线和 y 轴上 120 处的刻度线似乎被散点图中的点遮住了。更重要的是,轴的标签不见了。

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

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

\begin{document}

\begin{tikzpicture}


\begin{tikzpicture}

\begin{axis}[grid=none, align=center, title=\textbf{George's Unsold Candy Bars},
    ylabel = Number of Unsold \\ Candy Bars,
    xlabel = Number of Days,
    xmin=0,xmax=11,ymin=0,ymax=130,
    xtick={10},ytick={120},
    yticklabel style={anchor=east},
    axis on top,axis lines=middle,
    xlabel=$x$,ylabel=$y$,
    xlabel style={at={(ticklabel* cs:1)},anchor=north west},
    ylabel style={at={(ticklabel* cs:1)},anchor=south east}
    ]

\addplot[only marks] coordinates{(0,120) (1,108) (2,96) (3,84) (4,72) (5,60) (6,48) (7,36) (8,24) (9,12) (10,0)};

\end{axis}

\coordinate (O) at (0,0);
\node (origin) at ($(O)+(225:10pt)$) {$0$};

\end{tikzpicture}

\end{document}

相关内容