我试图在同一窗口(即线图和散点图)中绘制两种类型的图。在折线图(第一个图)中绘制的数据是浮动数值,代表气候指数(Y)与十进制年(X)。我想成为“分散”的第二个图大致相同,但浮动数值表示流量(Y)与十进制年(X)。我试图做到这一点,用双X轴和散点图第二,寄生虫Y轴如下:在同一窗口中绘制多种类型的图(线,散点图,条等)
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()
,我得到了错误代码:
TypeError: cannot perform reduce with flexible type
此代码当我用以p2开头的行中的图代替散点图时会正常工作,但会产生第二条线图。我希望分散的最终原因是第二个数据集中有很多要绘制的点,而连接它们的线是分散注意力和“杂乱”(当我需要的时候是及时突出显示)。条形图而不是散点图也可以工作。任何建议或帮助将不胜感激!
相关:http://stackoverflow.com/questions/1746312/why-wont-my-python-scatter-plot-work 努力确保这两个你数组中有正确的数据类型。你有没有尝试将你的y2数组的元素转化为float? – Urjit
如果您只想绘制一个绘图的圆形标记,请不要使用'scatter',只需使用'plot'并指定没有连线的圆形标记。 (例如'par.plot(x2,y2,'o')'或更详细地说'par.plot(x2,y2,linestyle ='none',marker ='o')'。散布用于改变颜色和/或基于第三和第四个变量的标记的大小,它返回的集合与“plot”返回的'Line2D'艺术家不同(并且更加灵活)。没有理由使用散布,除非您需要改变颜色或尺寸基于另一个变量 –