如何使用python绘制多个子图

如何使用python绘制多个子图,python,numpy,matplotlib,scikit-learn,Python,Numpy,Matplotlib,Scikit Learn,我遇到了一个问题,我得到了一个图像,必须使用python和matplotlib、sklearn、numpy重新创建这个图像。下图: 以下是我迄今为止用python编写的代码: import matplotlib.pyplot as plt from sklearn.datasets import load_iris import numpy as np iris = load_iris() print(type(iris)) print(iris['target_names']) print(

我遇到了一个问题,我得到了一个图像,必须使用python和matplotlib、sklearn、numpy重新创建这个图像。下图:

以下是我迄今为止用python编写的代码:

import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
import numpy as np

iris = load_iris()
print(type(iris))
print(iris['target_names'])
print(iris['data'])
print(iris['target'])
print(iris['DESCR'])
print(iris['feature_names'])

fig = plt.figure()
ax1 = plt.subplot(2, 1, 1)
ax2 = plt.subplot(2, 1, 2)


iris = load_iris()
data = np.array(iris['data'])
targets = np.array(iris['target'])

cd = {0: 'r', 1: 'b', 2: 'g'}

cols = np.array([cd[target] for target in targets])

ax1.scatter(data[:, 0], data[:, 1], c=cols)
ax2.scatter(data[:, 0], data[:, 2], c=cols)
plt.show()

我完全迷路了,真的需要帮助才能通过这一关,我只得到了前两个子地块的权利。任何建议都会非常有用,因为我几天来一直在努力解决这个问题。

获得相应子批次的数字的一种方法是

fig, subs = plt.subplots(4,3)
SUB是战神的2d阵列,所以您可以:

subs[0][0].scatter(x,y)

获得具有相应子批次的图形的一种方法是

fig, subs = plt.subplots(4,3)
SUB是战神的2d阵列,所以您可以:

subs[0][0].scatter(x,y)
这里有一个例子

from matplotlib import pyplot as plt 
import numpy as np

x = np.linspace(-5, 5, 10)
y = np.random.rand(10)

fig, ax = plt.subplots(nrows=4, ncols=3, figsize=(8, 6))

# ax is a 2d array with shape (4, 3), it can be sliced just like a numpy array 

for row in range(4):
    for col in range(3):
        ax[row][col].scatter(x, y, c='color you want')

plt.show()
这里有一个例子

from matplotlib import pyplot as plt 
import numpy as np

x = np.linspace(-5, 5, 10)
y = np.random.rand(10)

fig, ax = plt.subplots(nrows=4, ncols=3, figsize=(8, 6))

# ax is a 2d array with shape (4, 3), it can be sliced just like a numpy array 

for row in range(4):
    for col in range(3):
        ax[row][col].scatter(x, y, c='color you want')

plt.show()

这将准确地解释如何创建请求的图像:

import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
import numpy as np

fig, subs = plt.subplots(4,3) #setting the shape of the figure in one line as opposed to creating 12 variables 

iris = load_iris() ##code as per the example 
data = np.array(iris['data'])
targets = np.array(iris['target'])

cd = {0:'r',1:'b',2:"g"}
cols = np.array([cd[target] for target in targets])


# Row 1 

subs[0][0].scatter(data[:,0], data[:,1], c=cols)
subs[0][1].scatter(data[:,0], data[:,2], c=cols)
subs[0][2].scatter(data[:,0], data[:,3], c=cols)

# Row 2 

subs[1][0].scatter(data[:,1], data[:,0], c=cols)
subs[1][1].scatter(data[:,1], data[:,2], c=cols)
subs[1][2].scatter(data[:,1], data[:,3], c=cols)

# Row 3 

subs[2][0].scatter(data[:,2], data[:,0], c=cols)
subs[2][1].scatter(data[:,2], data[:,1], c=cols)
subs[2][2].scatter(data[:,2], data[:,3], c=cols)

#Row 4 

subs[3][0].scatter(data[:,3], data[:,0], c=cols)
subs[3][1].scatter(data[:,3], data[:,1], c=cols)
subs[3][2].scatter(data[:,3], data[:,2], c=cols)

plt.show()

这将准确地解释如何创建请求的图像:

import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
import numpy as np

fig, subs = plt.subplots(4,3) #setting the shape of the figure in one line as opposed to creating 12 variables 

iris = load_iris() ##code as per the example 
data = np.array(iris['data'])
targets = np.array(iris['target'])

cd = {0:'r',1:'b',2:"g"}
cols = np.array([cd[target] for target in targets])


# Row 1 

subs[0][0].scatter(data[:,0], data[:,1], c=cols)
subs[0][1].scatter(data[:,0], data[:,2], c=cols)
subs[0][2].scatter(data[:,0], data[:,3], c=cols)

# Row 2 

subs[1][0].scatter(data[:,1], data[:,0], c=cols)
subs[1][1].scatter(data[:,1], data[:,2], c=cols)
subs[1][2].scatter(data[:,1], data[:,3], c=cols)

# Row 3 

subs[2][0].scatter(data[:,2], data[:,0], c=cols)
subs[2][1].scatter(data[:,2], data[:,1], c=cols)
subs[2][2].scatter(data[:,2], data[:,3], c=cols)

#Row 4 

subs[3][0].scatter(data[:,3], data[:,0], c=cols)
subs[3][1].scatter(data[:,3], data[:,1], c=cols)
subs[3][2].scatter(data[:,3], data[:,2], c=cols)

plt.show()

检查,它用于绘制数据并将其显示为与您提供的图像类似的图像使用我只正确地获得前2个子图您只创建了2个子图,您希望正确地获得其中多少子图?请注意,每个子图使用了2个功能。i、 e.前两个子图来自我们绘制iris数据集的示例。这是一个排列问题。从4个功能中选择2个,总共相当于12个选项。这就是为什么总共有12个子地块。这是我得到的唯一一点帮助我的建议,因此使用seaborn's pairs总共12个,感谢@Abishakadityacheck out,它用于绘制数据并将其显示为与您提供的图像类似的图像使用我只获得了前2个子图,您只创建了2个子图,您希望得到正确的功能有多少?请注意,每个子批次使用2个功能。i、 e.前两个子图来自我们绘制iris数据集的示例。这是一个排列问题。从4个功能中选择2个,总共相当于12个选项。这就是为什么总共有12个子地块。这是我能得到的唯一一点帮助我的建议,所以我非常喜欢使用seaborn的配对,谢谢@AbishekAditya@Wynand罗伯茨有问题吗?谢谢,没有Questions@Wynand罗伯茨有问题吗?谢谢,没有问题