I'm trying to graph two types of plots in the same window (i.e. a line plot, and a scatter plot). The data being plotted in the line graph (first plot) are floating numerical values representing climate indices (Y) vs. decimal years (X). The second plot that I would like to be a 'scatter'ed is much the same, but with floating numerical values representing stream flows (Y) vs. decimal years (X). I've tried to accomplish this as follows by using a twin x axis and a second, parasite y axis for the scatter plot:
import mpl_toolkits
from mpl_toolkits.axes_grid1 import host_subplot
import matplotlib.pyplot as plt
host = host_subplot(111)
par = host.twinx()
host.set_xlim(1880, 2020)
host.set_ylim(-5, 10)
host.set_xlabel("Time")
host.set_ylabel("PDSI Region 01")
par.set_ylabel("Minimum 10% Annual 7-day Non-exceedance Flow (cfs)")
x1 = timearray
y1 = pdsiarray01
x2 = upAmm_yr
y2 = upAmm_min
p1, = host.plot(x1, y1, label="PDSI01")
p2, = par.scatter(x2, y2, label="Annual Lowflow Upper Amm")
par.set_ylim(30, 60)
host.legend()
host.axis["left"].label.set_color(p1.get_color())
par.axis["right"].label.set_color(p2.get_color())
plt.draw()
plt.show()
and I get the error code:
TypeError: cannot perform reduce with flexible type
This code works fine when I replace scatter with plot in the line that starts with p2, but produces a second line plot. The ultimate reason I want it scattered is that there are many fewer points to be plotted in the second dataset, and the lines connecting them are distracting and 'messy' (when I all need is to highlight an instant in time). A bar plot instead of a scatter would work too. Any suggestions or help would be much appreciated!