从两个Pandas DataFrame的多列中添加线以散布图

时间:2018-07-19 12:23:07

标签: python pandas scatter-plot

我正在从两个熊猫DataFrame的多列创建散点图,并希望将标记与线条连接起来。下面是一些示例代码。

创建两个数据框:

inYs= pd.DataFrame(np.random.uniform(low=0.3, high=0.450, size=(100)))
inYs[1]= np.random.uniform(low=0.1, high=0.2, size=(100))
inYs[2]= np.random.uniform(low=0.03, high=0.05, size=(100))
inYs[3]= np.random.uniform(low=0, high=0.02, size=(100))
inYs=inYs.T

inXs=pd.DataFrame(np.random.uniform(low=0.3, high=0.0, size=(100)))
inXs[1]=np.random.uniform(low=5.0, high=3.5, size=(100))
inXs[2]=np.random.uniform(low=7.5, high=5.0, size=(100))
inXs[3]=np.random.uniform(low=10, high=9, size=(100))
inXs=inXs.T

通过遍历两个DataFrames的列来创建散点图:

fig = plt.figure(figsize=(17, 10))
fig.clf()
ax1 = plt.axes()

for i in np.arange(1, 100):
    for (x,y)in zip(inXs[i],inYs[i]):
        ax1.plot(x, y,"-p", color='grey')

这将创建一个scatter plot of multiple columns from two dataframes ,但是尽管使用了线型“ -p”,但标记仍未联接(我尝试了几种不同的线型)。

对于在迭代列时如何加入散点图标记的想法,我将不胜感激。还是有一种方法可以通过以另一种方式遍历一组x值和y值来创建多个折线图?

我一直在尝试在SO上为此找到解决方案,但仍然无法解决我在这里做错的事情。这是我第一次放弃并问一个问题,所以请原谅我对经验丰富的编码人员来说是否显而易见!

1 个答案:

答案 0 :(得分:0)

问题在于,您绘制的(x,y)对是单点。如果您将y列表相对于x值列表进行绘制,则会绘制标记之间的连接。哪些标记应与其他标记连接?这些应该包装在提到的列表中。

仅举一个例子,y列表与x列表如何导致绘制线条;当然,我怀疑这是您要创建的情节...

fig = plt.figure(figsize=(17, 10))
fig.clf()
ax1 = plt.axes()

for i in np.arange(1, 100):
    for (x,y)in zip(inXs[i],inYs[i]):
        ax1.plot(inXs[i], inYs[i], 'o-')

enter image description here