What is the easiest way to create publication-quality plots under Linux? We may assume that we have CSV file and we want a very basic line plot with several lines on one plot and a simple legend.
 A: Take a look at the sample galleries for three popular visualization libraries:


*

*matplotlib gallery (Python)

*R graph gallery (R) -- (also see ggplot2, scroll down to reference)

*prefuse visualization gallery (Java)


For the first two, you can even view the associated source code -- the simple stuff is simple, not many lines of code.  The prefuse case will have the requisite Java boilerplate code.  All three support a number of backends/devices/renderers (pdf, ps, png, etc).  All three are clearly capable of high quality graphics.
I think it pretty much boils down to which language are you most comfortable working in.  Go with that.
A: Another option is Gnuplot
A: The easiest way is to use R
Use read.csv to enter the data into R, then use a combination of the plot and line commands
If you want something really special, then look at the libraries ggplot2 or lattice.
In ggplot2 the following commands should get you started.
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)   

This would give you the following plot:

Saving plots in R
Saving plots in R is straightforward:
#Look at ?jpeg to other different saving options
jpeg("figure.jpg")
print(p)#for ggplot2 graphics
dev.off()

Instead of jpeg's you can also save as a pdf or postscript file:
#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()

A: It's hard to go past R for graphics. You could do what you want in 3 lines. For example, assuming the csv file has four columns:
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)

A: R is definitely the answer.  I would just add to what Rob and Colin already said:
To improve the quality of your plots, you should consider using the Cairo package for the output device.  That will greatly improve the quality of the final graphics.  You simply call the function before plotting and it redirects to Cairo as the output device.
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

Lastly, in terms of putting it in a publication, that's the role that Sweave plays.  It makes combining plots with your paper a trivial operation (and has the added benefit of leaving you with something that is reproducible and understandable).  Use cacheSweave if you have long-running computations.
A: My favorite tool is Python with matplotlib.
The advantages:

*

*Immediate export from the environment where I do my experiments in

*Support for the scipy/numpy data structures

*Familiar syntax/options (matlab background)

*Full latex support for labels/legends etc. So same typesetting as in the rest of your document!

Specifically, for different file formats like svg and eps, use the format parameter of savefig.
An example:
input.csv
"Line 1",0.5,0.8,1.0,0.9,0.9
"Line 2",0.2,0.7,1.2,1.1,1.1
Code:
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')

A: Easy is relative. No tool is easy until you know how to use it. Some tools may appear more difficult at first, but provide you with much more fine-grained control once you master them.
I have recently started to make my plots in pgfplots. Being a LaTeX package (on top of tikz), it is particularly good at making things look good. Fonts will be consistent with the rest of the document and it's much easier to integrate your plots visually. It's not the easiest option to make plots, but it's a rather easy way to make plots that are certainly publication-quality.
