เราอาจสมมติว่าเรามีไฟล์ CSV และเราต้องการพล็อตบรรทัดขั้นพื้นฐานที่มีหลายบรรทัดในหนึ่งพล็อตและคำอธิบายง่ายๆ
เราอาจสมมติว่าเรามีไฟล์ CSV และเราต้องการพล็อตบรรทัดขั้นพื้นฐานที่มีหลายบรรทัดในหนึ่งพล็อตและคำอธิบายง่ายๆ
คำตอบ:
วิธีที่ง่ายที่สุดคือใช้ R
ใช้read.csv
เพื่อป้อนข้อมูลลงใน R จากนั้นใช้การรวมกันของคำสั่งplot
และline
ถ้าคุณต้องการบางสิ่งบางอย่างที่พิเศษจริงๆแล้วมองไปที่ห้องสมุดggplot2หรือตาข่าย
ในggplot2
คำสั่งต่อไปนี้ควรให้คุณเริ่มต้น
require(ggplot2)
#You would use read.csv here
N = 10
d = data.frame(x=1:N,y1=runif(N),y2=rnorm(N), y3 = rnorm(N, 0.5))
p = ggplot(d)
p = p+geom_line(aes(x, y1, colour="Type 1"))
p = p+geom_line(aes(x, y2, colour="Type 2"))
p = p+geom_line(aes(x, y3, colour="Type 3"))
#Add points
p = p+geom_point(aes(x, y3, colour="Type 3"))
print(p)
นี่จะให้พล็อตต่อไปนี้แก่คุณ:
พล็อตบรรทัด http://img84.imageshack.us/img84/6393/tmpq.jpg
ออมทรัพย์แปลงใน R
แผนการแปลงใน R นั้นตรงไปตรงมา:
#Look at ?jpeg to other different saving options
jpeg("figure.jpg")
print(p)#for ggplot2 graphics
dev.off()
แทนที่จะjpeg
เป็นคุณยังสามารถบันทึกเป็นpdf
ไฟล์หรือคำลงท้าย:
#This example uses R base graphics
#Just change to print(p) for ggplot2
pdf("figure.pdf")
plot(d$x,y1, type="l")
lines(d$x, y2)
dev.off()
m <- melt(d, id = "x"); qplot(variable, value, data = m, colour = variable)
มันยากที่จะผ่าน R สำหรับกราฟิก คุณสามารถทำสิ่งที่คุณต้องการใน 3 บรรทัด ตัวอย่างเช่นสมมติว่าไฟล์ csv มีสี่คอลัมน์:
x <- read.csv("file.csv")
matplot(x[,1],x[,2:4],type="l",col=1:3)
legend("topleft",legend=c("A","B","C"),lty=1,col=1:3)
R เป็นคำตอบที่แน่นอน ฉันจะเพิ่มสิ่งที่ Rob และ Colin พูดไปแล้ว:
เพื่อปรับปรุงคุณภาพของแปลงของคุณคุณควรพิจารณาการใช้ไคโรแพคเกจสำหรับอุปกรณ์เอาท์พุท นั่นจะช่วยปรับปรุงคุณภาพของกราฟิกขั้นสุดท้ายอย่างมาก คุณเพียงเรียกฟังก์ชั่นก่อนที่จะลงจุดและมันจะเปลี่ยนเส้นทางไปยังกรุงไคโรเป็นอุปกรณ์ส่งออก
Cairo(600, 600, file="plot.png", type="png", bg="white")
plot(rnorm(4000),rnorm(4000),col="#ff000018",pch=19,cex=2) # semi-transparent red
dev.off() # creates a file "plot.png" with the above plot
สุดท้ายในแง่ของการวางไว้ในสิ่งพิมพ์นั่นคือบทบาทที่Sweave
เล่น มันทำให้การรวมแปลงกับกระดาษของคุณเป็นการดำเนินการเล็กน้อย (และมีประโยชน์เพิ่มเติมจากการทิ้งคุณไว้กับบางสิ่งที่สามารถทำซ้ำได้และเข้าใจได้) ใช้cacheSweave
ถ้าคุณมีการคำนวณระยะยาว
เครื่องมือที่ฉันชอบคือ Python mathplotlib
ข้อดี:
สำหรับรูปแบบไฟล์ที่แตกต่างกันเช่น svg และ eps ให้ใช้พารามิเตอร์ format ของ savefig
ตัวอย่าง: input.csv
"บรรทัด 1", 0.5,0.8,1.0,0.9,0.9 "บรรทัด 2", 0.2,0.7,1.2,1.1,1.1
รหัส:
import csv
import matplotlib.pyplot as plt
legends = []
for row in csv.reader(open('input.csv')):
legends.append(row[0])
plt.plot(row[1:])
plt.legend(legends)
plt.savefig("out.svg", format='svg')
ดูแกลเลอรีตัวอย่างสำหรับห้องสมุดการสร้างภาพยอดนิยมสามแห่ง:
สำหรับสองคนแรกคุณยังสามารถดูซอร์สโค้ดที่เชื่อมโยงได้ - สิ่งที่ง่ายคือง่าย ๆ ไม่ได้มีหลายบรรทัด กรณี prefuse จะมีรหัส Java boilerplate ที่จำเป็น ทั้งสามรองรับแบ็กเอนด์ / อุปกรณ์ / renderers จำนวนมาก (pdf, ps, png, ฯลฯ ) ทั้งสามมีความสามารถชัดเจนของกราฟิกคุณภาพสูง
ฉันคิดว่าภาษาของคุณน่าจะใช้งานได้ดีที่สุด
ตัวเลือกอื่นคือGnuplot
ง่ายเป็นญาติ ไม่มีเครื่องมือใดที่ง่ายจนกว่าคุณจะรู้วิธีใช้งาน เครื่องมือบางอย่างอาจดูยากขึ้นในตอนแรก แต่ให้การควบคุมที่ละเอียดยิ่งขึ้นแก่คุณเมื่อคุณเชี่ยวชาญ
ฉันได้เริ่มต้นเมื่อเร็ว ๆ นี้ที่จะทำให้แผนการของฉันในpgfplots เป็นแพคเกจ LaTeX (ด้านบนของtikz
) มันเป็นสิ่งที่ดีโดยเฉพาะอย่างยิ่งในการทำสิ่งที่ดูดี แบบอักษรจะสอดคล้องกับส่วนที่เหลือของเอกสารและง่ายกว่ามากในการรวมแปลงของคุณทางสายตา ไม่ใช่ตัวเลือกที่ง่ายที่สุดในการแปลง แต่เป็นวิธีที่ง่ายในการแปลงที่มีคุณภาพการตีพิมพ์อย่างแน่นอน