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

วาดกราฟจากข้อมูลในไฟล์ CSV

เพิ่มไฟล์เข้าโปรเจกต์ของคุณแล้วเขียน \addplot table[x=col1, y=col2, col sep=comma] {file.csv}; ภายใน axis ของ pgfplots

วาดกราฟสองคอลัมน์ของไฟล์

อัปโหลดไฟล์ CSV เข้าโปรเจกต์ของคุณ (หรือสร้างไฟล์ในโปรเจกต์) บรรทัดแรกคือชื่อคอลัมน์ x= และ y= เลือกคอลัมน์ตามชื่อ และ col sep=comma บอกว่าค่าต่าง ๆ คั่นด้วยจุลภาค

หน้านี้ใช้ไฟล์ขนาดเล็กชื่อ data-from-csv-weather.csv:

CSV
month,temp,rain,sd
1,1.2,44,0.8
2,2.0,38,0.7
3,5.6,41,0.9
...
12,2.3,46,0.8

อุณหภูมิรายเดือนจากไฟล์ CSV

LaTeXส่วนนำ: \usepackage{pgfplots}เปิดในตัวแก้ไข (เปิดในแท็บใหม่)
\begin{tikzpicture}
  \begin{axis}[xlabel={Month}, ylabel={Temperature ($^\circ$C)}, xtick={1,...,12}]
    \addplot table[x=month, y=temp, col sep=comma] {data-from-csv-weather.csv};
  \end{axis}
\end{tikzpicture}
จัดหน้าโดย Scissor LaTeX: อุณหภูมิรายเดือนจากไฟล์ CSV

ไฟล์ในโฟลเดอร์ก็ใช้ได้ ให้เขียนพาธตามที่อยู่ในโปรเจกต์ เช่น {data/weather.csv}

หลายคอลัมน์ คอลัมน์ความคลาดเคลื่อน และค่าที่คำนวณ

อ่านไฟล์เดียวกันหนึ่งครั้งต่อข้อมูลหนึ่งชุด y error= นำแถบความคลาดเคลื่อนมาจากคอลัมน์ และ y expr= คำนวณค่าจากแถว โดยใช้ \thisrow{name} แทนคอลัมน์

ข้อมูลสองชุดจากไฟล์เดียว

LaTeXส่วนนำ: \usepackage{pgfplots}เปิดในตัวแก้ไข (เปิดในแท็บใหม่)
\begin{tikzpicture}
  \begin{axis}[xlabel={Month}, ylabel={Value}, legend pos=north west, ymin=0]
    \addplot+[error bars/.cd, y dir=both, y explicit]
      table[x=month, y=temp, y error=sd, col sep=comma] {data-from-csv-weather.csv};
    \addplot+[mark=none, dashed]
      table[x=month, y expr=\thisrow{rain}/2, col sep=comma] {data-from-csv-weather.csv};
    \legend{Temperature ($^\circ$C), Rain / 2 (mm)}
  \end{axis}
\end{tikzpicture}
จัดหน้าโดย Scissor LaTeX: ข้อมูลสองชุดจากไฟล์เดียว

อ่านตารางเพียงครั้งเดียว

\pgfplotstableread อ่านไฟล์เข้าสู่แมโคร ซึ่ง \addplot ทุกคำสั่งนำไปใช้ได้ วิธีนี้สั้นกว่าเมื่อตารางเดียวกันใช้กับหลายกราฟ

\pgfplotstableread และสองกราฟ

LaTeXส่วนนำ: \usepackage{pgfplots}เปิดในตัวแก้ไข (เปิดในแท็บใหม่)
\pgfplotstableread[col sep=comma]{data-from-csv-weather.csv}\weather
\begin{tikzpicture}
  \begin{axis}[ybar, bar width=6pt, ymin=0, xlabel={Month}, ylabel={Rain (mm)},
               xtick={1,...,12}, enlarge x limits=0.06]
    \addplot table[x=month, y=rain] {\weather};
  \end{axis}
\end{tikzpicture}

ข้อมูลภายในเอกสาร: filecontents

ชุดข้อมูลขนาดเล็กอยู่ในไฟล์ .tex เองได้ filecontents* จะเขียนเนื้อหาออกเป็นไฟล์ตามชื่อที่ระบุ ซึ่ง \addplot table จะอ่านต่อ ไฟล์นี้อยู่ในส่วนนำของเอกสาร ก่อน \begin{document}

ข้อมูลที่เขียนด้วย filecontents*

\documentclass{article}
\usepackage{pgfplots}
\begin{filecontents*}{speed.dat}
t   v
0   0
1   4.4
2   8.1
3   11.0
4   13.2
\end{filecontents*}
\begin{document}
\begin{tikzpicture}
  \begin{axis}[xlabel={Time (s)}, ylabel={Speed (m/s)}]
    \addplot table[x=t, y=v] {speed.dat};
  \end{axis}
\end{tikzpicture}
\end{document}

ในตัวอย่างนี้คอลัมน์คั่นด้วยช่องว่าง ซึ่งเป็นค่าเริ่มต้นของ pgfplots จึงไม่ต้องใช้ col sep

ตัวเลือกของตาราง

ตัวเลือกทำอะไรใน Scissor LaTeX
x=name, y=nameคอลัมน์ตามชื่อใช้ได้
x index=0, y index=1คอลัมน์ตามหมายเลข เริ่มจาก 0ใช้ได้
col sep=commaรวมถึง space, tab, semicolon, &ใช้ได้
header=falseบรรทัดแรกเป็นข้อมูล ไม่ใช่ชื่อใช้ได้
skip first n=2ข้ามบรรทัดแรก ๆใช้ได้
x expr=, y expr=คำนวณค่าด้วย \thisrow{name}, \thisrowno{n} หรือ \coordindexใช้ได้
y error=, x error=คอลัมน์แถบความคลาดเคลื่อนใช้ได้
comment chars=!อักขระหมายเหตุเพิ่มเติม (บรรทัดที่ขึ้นต้นด้วย # และ % จะถูกข้ามเสมอ)ใช้ได้
\pgfplotstablereadอ่านตารางเข้าสู่แมโครใช้ได้
\pgfplotstabletypesetพิมพ์ตารางเป็นตาราง LaTeXไม่รองรับ: ถูกข้ามพร้อมข้อความแจ้ง

ช่องว่าง nan และ inf จะถือเป็นค่าที่หายไปและถูกละไว้

เมื่อมีบางอย่างผิดพลาด

หากอ่านไฟล์ .csv โดยไม่มี col sep=comma Scissor LaTeX ยังหาจุลภาคเจอ กราฟจึงถูกวาด แต่แท็บ Problems จะขอให้คุณเพิ่มตัวเลือกนี้ การติดตั้ง TeX จะไม่เดาให้ และกราฟจะล้มเหลวที่นั่น

ไม่มี col sep: วาดได้ พร้อมคำเตือน

LaTeXส่วนนำ: \usepackage{pgfplots}เปิดในตัวแก้ไข (เปิดในแท็บใหม่)
\begin{tikzpicture}
  \begin{axis}[width=6cm, height=4.5cm]
    \addplot table[x=month, y=temp] {data-from-csv-weather.csv};
  \end{axis}
\end{tikzpicture}

แท็บปัญหา: Add col sep=comma to read data-from-csv-weather.csv so it also works in LaTeX

ไฟล์ที่ไม่อยู่ในโปรเจกต์จะทำให้กราฟนั้นถูกละไว้ แกนยังถูกวาด และแท็บ Problems จะระบุชื่อไฟล์ที่หายไป

ไฟล์ที่หายไป

LaTeXส่วนนำ: \usepackage{pgfplots}เปิดในตัวแก้ไข (เปิดในแท็บใหม่)
\begin{tikzpicture}
  \begin{axis}[width=6cm, height=4.5cm]
    \addplot table[col sep=comma] {results.csv};
  \end{axis}
\end{tikzpicture}

แท็บปัญหา: Data file not in the project: results.csv

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

ทุกอย่างในหน้านี้เป็นไวยากรณ์ของ pgfplots ไฟล์จึงคอมไพล์ในการติดตั้ง TeX ได้ด้วย คู่มือ: ctan.org/pkg/pgfplots สำหรับแถบความคลาดเคลื่อนจากคอลัมน์ ดูแถบความคลาดเคลื่อน

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

จะวาดกราฟจากไฟล์ CSV ใน LaTeX ได้อย่างไร

ใส่ไฟล์ไว้ในโปรเจกต์แล้วเขียน \addplot table[x=a, y=b, col sep=comma] {file.csv}; ในแกน โดยแทน a และ b ด้วยชื่อคอลัมน์ของคุณ

ไฟล์ CSV ของฉันใช้อัฒภาค ต้องเขียนอย่างไร

ใช้ col sep=semicolon สำหรับแท็บ ให้ใช้ col sep=tab

วาดกราฟคอลัมน์เทียบกับหมายเลขแถวได้ไหม

ได้: table[x expr=\coordindex, y=name] ใช้ 0, 1, 2 และต่อไปเรื่อย ๆ เป็นค่า x

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