python-3.x - 我在 Python 中使用 matplotlib、numpy 和数据集的 4x4 图形没有像我想要的那样工作
问题描述
所以我遇到了这个作业问题,我们需要用名为 iris 的数据集制作一个图形。
但我的不是这样,我已经尝试了我能想到的一切。
我让它工作了,但它看起来不一样,所以我开始玩弄,直到我以这张图片下方的错误结束
ended with the following errors
---------------------------------------------------------------------------
IndexError Traceback (most recent call last) in
28 ax2.scatter(data[:, 0], data[:, 2], c=cols)
29 ax2.scatter(data[:, 0], data[:, 3], c=cols)
---> 30 ax2.scatter(data[:, 1], data[:, 4], c=cols)
31 ax2.scatter(data[:, 1], data[:, 5], c=cols)
32 ax2.scatter(data[:, 1], data[:, 6], c=cols)
IndexError: index 4 is out of bounds for axis 1 with size 4
任何援助将不胜感激...
提前致谢
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
import numpy as np
fig = plt.figure()
ax1 = plt.subplot(4, 3, 1)
ax2 = plt.subplot(4, 3, 2)
ax3 = plt.subplot(4, 3, 3)
ax4 = plt.subplot(4, 3, 4)
ax5 = plt.subplot(4, 3, 5)
ax6 = plt.subplot(4, 3, 6)
ax7 = plt.subplot(4, 3, 7)
ax8 = plt.subplot(4, 3, 8)
ax9 = plt.subplot(4, 3, 9)
ax10 = plt.subplot(4, 3, 10)
ax11 = plt.subplot(4, 3, 11)
ax12 = plt.subplot(4, 3, 12)
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)
ax2.scatter(data[:, 0], data[:, 3], c=cols)
ax2.scatter(data[:, 1], data[:, 4], c=cols)
ax2.scatter(data[:, 1], data[:, 5], c=cols)
ax2.scatter(data[:, 1], data[:, 6], c=cols)
ax2.scatter(data[:, 2], data[:, 7], c=cols)
ax2.scatter(data[:, 2], data[:, 8], c=cols)
ax2.scatter(data[:, 2], data[:, 9], c=cols)
ax2.scatter(data[:, 3], data[:, 10], c=cols)
ax2.scatter(data[:, 3], data[:, 11], c=cols)
ax2.scatter(data[:, 3], data[:, 12], c=cols)
plt.show()
解决方案
问题是您试图访问一个不存在的索引。你的形状data
是(150, 4)
。您可以使用
print (data.shape)
# (150, 4)
由于索引在 python 中从 0 开始,这意味着第二个索引data
可以是 0、1、2 和 3。但是,当您这样做时,您使用的是索引 4
ax2.scatter(data[:, 1], data[:, 4], c=cols)
这是你得到错误的地方。当您这样做时会出现相同的错误data[:, 5], data[:, 6], data[:, 7], data[:, 8]
,依此类推。您需要首先确定要显示的数据。然后正确选择索引。
推荐阅读
- kubernetes - 如何将用户凭据传递到 Kubernetes Pod 内的(用户受限的)挂载卷?
- c# - 当消息传入使用 AES 加密时,我需要从 NetworkStream 读取多少字节?
- python - 如何生成具有索引值约束的排列列表?
- html - 在html中画线
- r - R中的数据处理;数据表
- url - 具有多网站的 Magento 2 多商店 - 产品 URL 对 SEO 不友好
- javascript - 不能将变量 NaN 相加
- python - 来自熊猫行的特征值
- python-3.x - 使用 Python pytest selenium 处理 staleelement 引用异常 Coverfox 网站
- jsrender - jsRender如何将子索引传递给父级