Python 带有matplotlib的额外空绘图

Python 带有matplotlib的额外空绘图,python,pandas,matplotlib,Python,Pandas,Matplotlib,使用此代码绘制iris数据集会给我一个额外的空绘图: import pandas as pd from matplotlib import pyplot as plt d = {'Species': ['setosa', 'versicolor','virginica'], 'Sepal length': [1, 2, 3], 'Sepal width': [2, 4, 6]} df = pd.DataFrame(data=d) unv = df['Species'].unique()

使用此代码绘制iris数据集会给我一个额外的空绘图:

import pandas as pd
from matplotlib import pyplot as plt

d = {'Species': ['setosa', 'versicolor','virginica'], 'Sepal length': [1, 2, 3], 'Sepal width': [2, 4, 6]}

df = pd.DataFrame(data=d)


unv = df['Species'].unique()
colorv = ['r','b','g']
markerv = ['v', 'o', '>']


#Getting an extra empty plot for no reason
fig, ax=plt.subplots(1,2)
for i in range(len(unv)):
    df[df['Species'] == unv[i]].plot(x="Sepal length", y="Sepal width", kind="scatter",ax=ax[0],label=unv[i],color=colorv[i], marker = markerv[i])

plt.show()
有什么建议,为什么我收到这个额外的阴谋,我如何可以删除它?
您将获得2个子批,因为您通过调用
plt.subplot(1,2)
请求了两个子批,这将在1行和2列上创建1*2个子批

因此,您的问题的答案是调用
plt.subplot(1,1)
。 在评论中,你说你已经试过了,但是你得到了一个错误。这是意料之中的。(我的重点):

返回:

图:matplotlib.figure.figure对象

ax:轴对象或 轴对象。

ax可以是单个matplotlib.axes.axes对象或轴数组 对象如果创建了多个子地块。尺寸 可以使用挤压关键字控制结果数组的大小,请参见 上面

如果
subplots()
只返回一个轴,那么它将返回该轴对象而不是列表,因此您应该修改对以下对象的调用:

df[df['Species'] == unv[i]].plot( (...) ,ax=ax, (...) )

图,ax=plt。子图(1,2)
正在创建两个轴(图)。如果
unv
只有一个元素,那么只能得到一个迭代和一个绘图。尝试打印
len(联合国志愿人员)
。如果不是,请检查其中一个元素是否为空。避免第一个问题的一种方法是:
fig,ax=plt。子批次(1,len(unv))
.Hmm.不太有效。联合国志愿人员方案的长度是3,因此我得到了3张图。你需要明白,我们不能复制你的例子。所以在
unv
中有3个元素,我可以通过使用3种颜色和标记猜到。因此,为什么只创建两个轴?您是否检查了试图绘制的数据(
iris[iris['Species']==unv[i]]
)?为什么有子图(1,2)?您的代码看起来像是要在同一个轴上绘制所有内容。我只需要一个绘图,但是如果我选择fig,ax=plt。子绘图(1,1),我会得到一个错误。是的,数据iris[iris['Species']==unv[i]]是正确的