ข้ามไปยังเนื้อหา

แกนลอการิทึมด้วย pgfplots

เปลี่ยน axis เป็น semilogyaxis (y แบบลอการิทึม), semilogxaxis (x แบบลอการิทึม) หรือ loglogaxis (ทั้งสองแกน) หรือตั้งค่า ymode=log หรือ xmode=log ที่ axis ปกติ

มาตราส่วนลอการิทึมบนแกน y

ค่าที่เพิ่มขึ้นเป็นเท่าตัว เช่น จำนวนนับ ความคลาดเคลื่อน หรือความถี่ อ่านได้ดีที่สุดบนมาตราส่วนลอการิทึม semilogyaxis คงแกน x ให้เป็นเชิงเส้นและทำให้แกน y เป็นลอการิทึม ขีดแบ่งอยู่ที่กำลังของสิบและมีป้ายเป็น $10^k$

การเติบโตแบบเอกซ์โพเนนเชียลบนแกน y แบบลอการิทึม

LaTeXส่วนนำ: \usepackage{pgfplots}เปิดในตัวแก้ไข (เปิดในแท็บใหม่)
\begin{tikzpicture}
  \begin{semilogyaxis}[xlabel={Day}, ylabel={Cells}, grid=major]
    \addplot coordinates {(0,44) (1,120) (2,350) (3,980) (4,2700) (5,7600) (6,21000)};
  \end{semilogyaxis}
\end{tikzpicture}

เส้นตรงบนกราฟนี้หมายถึงการเติบโตคงที่ด้วยตัวคูณเดียวกันในแต่ละขั้น

ลอการิทึมทั้งสองแกน

loglogaxis ทำให้ทั้งสองแกนเป็นลอการิทึม กฎกำลังอย่าง $y = x^2$ จะกลายเป็นเส้นตรงที่มีความชันเท่ากับเลขชี้กำลัง

กฎกำลังบนกราฟ log-log

LaTeXส่วนนำ: \usepackage{pgfplots}เปิดในตัวแก้ไข (เปิดในแท็บใหม่)
\begin{tikzpicture}
  \begin{loglogaxis}[xlabel=$n$, ylabel={Time (s)}, legend pos=north west]
    \addplot coordinates {(10,0.001) (100,0.01) (1000,0.1) (10000,1)};
    \addplot coordinates {(10,0.0001) (100,0.01) (1000,1) (10000,100)};
    \legend{$O(n)$, $O(n^2)$}
  \end{loglogaxis}
\end{tikzpicture}
จัดหน้าโดย Scissor LaTeX: กฎกำลังบนกราฟ log-log

แบบเดียวกันด้วย xmode และ ymode

xmode=log และ ymode=log ทำให้ axis ปกติมีมาตราส่วนลอการิทึม วิธีนี้สะดวกเมื่อการเลือกมาจากสไตล์ หรือใช้ภายในกราฟแบบกลุ่ม

xmode=log บนแกนปกติ

LaTeXส่วนนำ: \usepackage{pgfplots}เปิดในตัวแก้ไข (เปิดในแท็บใหม่)
\begin{tikzpicture}
  \begin{axis}[xmode=log, xlabel={Frequency (Hz)}, ylabel={Gain (dB)}, ymin=-30, ymax=5]
    \addplot[blue, thick, domain=1:5, samples=60, variable=t]
      ({10^t}, {-10*log10(1 + (10^t/1000)^2)});
  \end{axis}
\end{tikzpicture}
จัดหน้าโดย Scissor LaTeX: xmode=log บนแกนปกติ

สูตรใช้ได้บนแกนลอการิทึมเช่นกัน แต่ domain และ samples อยู่ในหน่วยของข้อมูล จุดตัวอย่างจะกระจายเท่า ๆ กันระหว่างปลายทั้งสอง บนแกนลอการิทึมจุดเกือบทั้งหมดจึงไปตกอยู่ในทศวรรษสุดท้าย ตัวอย่างนี้จึงวาดเส้นโค้งอิงพารามิเตอร์ในเลขชี้กำลัง t จาก $10^1$ ถึง $10^5$ ซึ่งกระจายจุดตัวอย่างเท่า ๆ กันตามแกนลอการิทึม pgfplots ก็ทำงานแบบเดียวกัน

ฐานอื่น

log basis y=2 (หรือ log basis x) เปลี่ยนฐาน ขีดแบ่งจะอยู่ที่กำลังของ 2 และมีป้ายเป็น $2^k$

ฐาน 2 บนแกน y

LaTeXส่วนนำ: \usepackage{pgfplots}เปิดในตัวแก้ไข (เปิดในแท็บใหม่)
\begin{tikzpicture}
  \begin{semilogyaxis}[log basis y=2, xlabel={Doublings}, ymin=1, ymax=64]
    \addplot coordinates {(0,1) (1,2) (2,4) (3,8) (4,16) (5,32)};
  \end{semilogyaxis}
\end{tikzpicture}

ตัวเลือกบนแกนลอการิทึม

ตัวเลือกใน Scissor LaTeXหมายเหตุ
semilogxaxis, semilogyaxis, loglogaxisใช้ได้
xmode=log, ymode=logใช้ได้
log basis x=b, log basis y=bใช้ได้
ymin, ymax บนแกนลอการิทึมใช้ได้ใส่ค่าบวก
log ticks with fixed pointไม่รองรับถูกละเว้นพร้อมข้อความแจ้ง ป้ายยังคงเป็นรูปกำลัง
ybar stacked บนแกนลอการิทึมไม่รองรับแท่งถูกวาดทับกันแทนการซ้อน และไม่มีข้อความแจ้ง
ค่า 0 หรือน้อยกว่าถูกตัดออกจุดที่แสดงบนมาตราส่วนลอการิทึมไม่ได้จะถูกละไว้ พร้อมข้อความแจ้งหนึ่งข้อความ

สิ่งที่ต่างจากการติดตั้ง TeX

ดูกราฟแท่งสำหรับแท่งบนแกนเชิงเส้น และดูคู่มือ pgfplots สำหรับตัวเลือกทุกตัว: ctan.org/pkg/pgfplots

ดูเพิ่มเติม กราฟเส้น, กราฟแบบกลุ่ม และ เส้นชั้นความสูงและแผนที่ความร้อน

คำถามและคำตอบ

จะทำให้แกน y เป็นลอการิทึมใน pgfplots ได้อย่างไร

ใช้ \begin{semilogyaxis} ... \end{semilogyaxis} แทน axis หรือเพิ่ม ymode=log ในตัวเลือกของแกน

ทำไมกราฟลอการิทึมของฉันไม่แสดงข้อมูล

แกนลอการิทึมแสดงค่าศูนย์หรือค่าลบไม่ได้ จุดที่มีค่าเช่นนั้นจะถูกตัดออก และแท็บ Problems จะแจ้งไว้ ให้เลื่อนข้อมูลหรือใช้แกนเชิงเส้น

ใช้ฐาน 2 หรือฐาน e ได้ไหม

ได้ ด้วย log basis y=2 (หรือจำนวนบวกใดก็ได้ เช่น log basis x=2.71828)

ทุกตัวอย่างในหน้านี้จัดหน้าโดย Scissor LaTeX ขณะสร้างเว็บไซต์ อัปเดตล่าสุด 2026-11-07