pgfplots:使用因子重新调整轴,具有良好的刻度标签/位置

Markus 09/11/2017. 2 answers, 1.267 views
pgfplots

我试图通过某些值来标准化pgfplots图的轴,例如y轴为2000 ,x轴为19099 。 y轴看起来很不错,但是x轴被不好的数字缩放,产生的刻度标签大约是1.57等,而不是1.5等。

有没有办法缩放轴但仍然自动将刻度线放在好位置?

最小的工作示例:

\documentclass{standalone}
  \usepackage{pgfplots}
  \begin{document}
    \begin{tikzpicture}
      \begin{axis}[
        xmin = 0,xmax = 70000,
        ymin = 0,ymax = 5000,
        scaled x ticks=manual:{}{\pgfmathparse{(#1)/(19099)}},
        scaled y ticks=manual:{}{\pgfmathparse{(#1)/(2000)}},
      ]
      \end{axis}
    \end{tikzpicture}
  \end{document} 

代码输出

UPDATE

尝试@Jake方法,在我的轴内绘制函数时给出错误,请参阅以下内容:

\documentclass{standalone}
  \usepackage{pgfplots}
  \begin{document}
    \begin{tikzpicture}
      \begin{axis}[
        xmin = 0,xmax = 70000,
        ymin = 0,ymax = 5000,
        domain=0:70000,
        x coord trafo/.code={
          \pgfkeys{/pgf/fpu=true}
          \pgfmathparse{(#1)/(19099)}
          \pgfkeys{/pgf/fpu=false}
        },
        y coord trafo/.code={
          \pgfkeys{/pgf/fpu=true}
          \pgfmathparse{(#1)/(2000)}
          \pgfkeys{/pgf/fpu=false}
        },
%        scaled x ticks=manual:{}{\pgfmathparse{(#1)/(19099)}},
%        scaled y ticks=manual:{}{\pgfmathparse{(#1)/(2000)}},
        ]
        \addplot {2000+0.001*(x/60)^2};
      \end{axis}
    \end{tikzpicture}
  \end{document} 

这会产生错误,例如:``! 非法计量单位(插入pt).`

2 Answers


Jake 10/26/2012.

scaled x ticks键仅在刻度位置已经确定后才起作用,因此它们不是去往这里的方式。 相反,您应该使用x coord trafo/.codey coord trafo/.code x coord trafo/.code来转换坐标系。

请注意,对于与您的值一样大的值,您需要在fpu中打开fpu库。 当使用xminxmax等时,需要在计算后停用fpu库,但是在绘制数学表达式时,可能不会停用库。 这有点麻烦:你需要\pgflibraryfpuifactive来决定我们是否在应该打开和关闭libary的上下文中,或者保持原样:

\documentclass{standalone}
  \usepackage{pgfplots}
  \begin{document}
    \begin{tikzpicture}
      \begin{axis}[
      xmin=0, xmax=70000,
      ymin=0, ymax=5000,
        domain=0:70000,
        x coord trafo/.code={
            \pgflibraryfpuifactive{
                \pgfmathparse{(#1)/(19099)}
            }{
                \pgfkeys{/pgf/fpu=true}
                \pgfmathparse{(#1)/(19099)}
                \pgfkeys{/pgf/fpu=false}
            }
        },
        y coord trafo/.code={
            \pgflibraryfpuifactive{
                \pgfmathparse{(#1)/(2000)}
            }{
                \pgfkeys{/pgf/fpu=true}
                \pgfmathparse{(#1)/(2000)}
                \pgfkeys{/pgf/fpu=false}
            }
        },
        ]
        \addplot {2000+0.001*(x/60)^2};
      \end{axis}
    \end{tikzpicture}
  \end{document} 
5 comments
Markus 10/26/2012
这对于坐标图很有效。 如果我添加一个函数来绘制,它会给我错误,请参阅更新到原始帖子。
Jake 10/26/2012
@Markus:我已经编辑了我的答案。
Luigi 10/26/2012
@Jake应该x filter/.code={\pgfmathparse{#1/19099}}更快? 不应该吗? (y轴相同)。 你必须调整绘图范围。
Jake 10/26/2012
@Luigi:我不确定我明白你的意思。 如果要手动设置xminxmax ,仅使用该x filter将不起作用。
Luigi 10/26/2012
@Jake,设置xmin=0, xmax=3.67就是这样。

Luigi 10/26/2012.

比Jake的解决方案更容易但更脏:

\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.6}

\begin{document}
\begin{tikzpicture}
\begin{axis}[
  xmin=0, xmax=3.67,
  ymin=0, ymax=5000,
  domain=0:70000,
  x filter/.code={\pgfmathparse{#1/19099}},
  scaled y ticks=manual:{}{\pgfmathparse{#1/2000}}
  ]
\addplot {2000+0.001*(x/60)^2};
\end{axis}
\end{tikzpicture}
\end{document} 

在此处输入图像描述

1 comments
Markus 10/30/2012
也许更脏,但仍然有效! 我会检查这里的表现是否有所不同。 特别是对于大量带有大量样本的曲线,我猜这可能会很麻烦。 谢谢!

HighResolutionMusic.com - Download Hi-Res Songs

1 Alan Walker

Diamond Heart flac

Alan Walker. 2018. Writer: Alan Walker;Sophia Somajo;Mood Melodies;James Njie;Thomas Troelsen;Kristoffer Haugan;Edvard Normann;Anders Froen;Gunnar Greve;Yann Bargain;Victor Verpillat;Fredrik Borch Olsen.
2 Sia

I'm Still Here flac

Sia. 2018. Writer: Sia.
3 Cardi B

Taki Taki flac

Cardi B. 2018. Writer: Bava;Juan Vasquez;Vicente Saavedra;Jordan Thorpe;DJ Snake;Ozuna;Cardi B;Selena Gomez.
4 Little Mix

Woman Like Me flac

Little Mix. 2018. Writer: Nicki Minaj;Steve Mac;Ed Sheeran;Jess Glynne.
5 Halsey

Without Me flac

Halsey. 2018. Writer: Halsey;Delacey;Louis Bell;Amy Allen;Justin Timberlake;Timbaland;Scott Storch.
6 Lady Gaga

I'll Never Love Again flac

Lady Gaga. 2018. Writer: Benjamin Rice;Lady Gaga.
7 Bradley Cooper

Shallow flac

Bradley Cooper. 2018. Writer: Andrew Wyatt;Anthony Rossomando;Mark Ronson;Lady Gaga.
8 Bradley Cooper

Always Remember Us This Way flac

Bradley Cooper. 2018. Writer: Lady Gaga;Dave Cobb.
9 Kelsea Ballerini

This Feeling flac

Kelsea Ballerini. 2018. Writer: Andrew Taggart;Alex Pall;Emily Warren.
10 Mako

Rise flac

Mako. 2018. Writer: Riot Music Team;Mako;Justin Tranter.
11 Dewain Whitmore

Burn Out flac

Dewain Whitmore. 2018. Writer: Dewain Whitmore;Ilsey Juber;Emilio Behr;Martijn Garritsen.
12 Avril Lavigne

Head Above Water flac

Avril Lavigne. 2018. Writer: Stephan Moccio;Travis Clark;Avril Lavigne.
13 Khalid

Better flac

Khalid. 2018. Writer: Charlie Handsome;Jamil Chammas;Denis Kosiak;Tor Erik Hermansen;Mikkel Stoleer Eriksen;Khalid.
14 Lady Gaga

Look What I Found flac

Lady Gaga. 2018. Writer: DJ White Shadow;Nick Monson;Mark Nilan Jr;Lady Gaga.
15 Deep Chills

Run Free flac

Deep Chills. 2018.
16 Dynoro

In My Mind flac

Dynoro. 2018. Writer: Georgi Kay;Feenixpawl;Ivan Gough.
17 Charli XCX

1999 flac

Charli XCX. 2018. Writer: Charli XCX;Troye Sivan;Leland;Oscar Holter;Noonie Bao.
18 NCT 127

Regular (English Version) flac

NCT 127. 2018.
19 Lukas Graham

Love Someone flac

Lukas Graham. 2018. Writer: Don Stefano;Morten "Rissi" Ristorp;Morten "Pilo" Pilegaard;Jaramye Daniels;James Alan;David LaBrel;Lukas Forchhammer Graham.
20 Rita Ora

Let You Love Me flac

Rita Ora. 2018. Writer: Rita Ora.

Related questions

Hot questions

Language

Popular Tags