Automating plotting CSV files quickly and with some level of artistic control Suppose my CSV file has time and various columns of data vs time.
I want to be able to automate plotting.  To a file at least; multiple formats or to the screen as well is a plus.
There will be lots of plots.  Multiple plots on same axes, e.g. like a spreadsheet scatterplot with multiple columns.  Changing the plot commands should be possible for a non-specialist.  It should be possible to have some artistic control, like colors, points, lines, or both, maybe symbol.  
Here's what I have considered:
spreadsheets like OpenOffice or Excel: can't automate easily.  Good on looks, artistic control, and selecting columns from CSV to plot.  Bad on automation, and time to plot.
R: Easy to read multi-column csv into dataframe, but not so easy to generate required plots.  Easy for single time series but haven't seen any simple examples for plotting multiple columns of data onto the same X and Y axes as a spreadsheet scatterplot will do.
Gnuplot:  May require reformatting data. Not so intuitive for reading multi-column CSV for scatterplot.  
Any others I should be considering?
 A: Python with MatplotLib. Python is pretty good at manipulating csv files.

but haven't seen any simple examples for plotting multiple columns of
  data onto the same X and Y axes as a spreadsheet scatterplot will do.

Have you explored ggplot2? You can keep adding series to a plot using ggplot2. It also has a very good facet plotting feature.
A: As @suncoolsu observed the main thing is strategy for abstracting data operations. First prepare template for each graph you intend to produce. This means definining:


*

*Data for the graph

*Artistic details


Now you need the program (software package) which takes as the input the data and the artistic details and outputs the graph in your preferred format. 
Data for the graph will probably be not of the format you have data in the csv file. So you need the program which reads the data from csv file and prepares it for plotting.
Finaly you will need a program which coordinates aforementioned processes: data preparation and graphs.
If you work with Unix based systems such combination of different program is very common, so there exist multiple choices for the data manipulation and coordination programs. All the scripting languages (bash, python, perl, ruby) will be able to perform these tasks. For producing graphs you need more specialized software, such as gnuplot, or specialized libraries of scripting languages. Although I mentioned Unix, you can perform these operations on Windows too. 
Instead of scripting languages you can write dedicated programs in C, C++, Java, .NET or any other programming language you prefer. It really depends on which environment  you are comfortable working with. You can also use Visual Basic or VB macros in Excel.
I myself would do everything in R, since it can perform all three tasks I mentioned. I routinely have to read csv files, do analysis and perform plots. Since usually I am working with multiple country data, I must produce a graph for each country. R lets me do this very easily. Furthermore R graphs are very customizable (see the graph on R project home page), and when you have a graph you can produce practically any format you like, see ?device. 
Even in R you can achieve the aforementioned tasks in different ways. For example you can use only base packages, or use packages such as foreach, plyr, reshape for automation and data manipulation. For plotting you can either use base R graphics, lattice, or ggplot2.
A: I use matplotlib for the same purpose. This is my python code:
#!/home/user/miniconda2/bin/python
import sys
import csv
import numpy as np
import matplotlib.pyplot as plt
#plt.style.use('stylesheet')

if len(sys.argv) != 2:
    print "Single argument Expected"
    sys.exit(2)
f = str(sys.argv[1])

with open(f) as f1:
    reader = csv.reader(f1, delimiter=',')
    first_row = next(reader)

data = np.genfromtxt(f, delimiter=",", skip_header=1)
for col in range(1,len(first_row)):
    plt.plot(data[:,0],data[:,col],label=first_row[col],lw=2)

plt.title(f[:-4])
plt.xlabel(first_row[0])
#plt.ylabel(first_row[1])
plt.legend(loc=0)
#plt.show()
plt.savefig(f[:-4]+".pdf")
print "Done! Saved image to "+f[:-4]+".pdf"

Go through matplotlib documentation to know how to change plot style and other properties. I personally use a stylesheet.
