使用NP阵列绘制分类数据

时间:2019-04-12 11:22:08

标签: python matplotlib

我正在尝试绘制分类数据,其中X字段是具有12列作为特征的二维数组。如何在前3000个字段属于1类而其他9000个数据属于2类数据的图形中进行绘制。数据看起来像这样。

[[4.860e+02 1.400e+01 4.700e+01 ... 1.500e+01 0.000e+00 0.000e+00] [1.897e+03 1.000e+01 3.850e+02 ... 1.200e+01 0.000e+00 0.000e+00] [1.330e+02 1.500e+01 4.700e+01 ... 1.000e+01 0.000e+00 0.000e+00] ... [8.700e+01 1.000e+00 1.000e+01 ... 9.800e+01 1.300e+01 1.000e+01] [5.700e+01 1.000e+00 7.000e+00 ... 9.000e+01 1.700e+01 2.600e+01] [1.200e+01 0.000e+00 2.000e+00 ... 9.600e+01 7.000e+00 1.200e+01]]

1 个答案:

答案 0 :(得分:0)

从您提供的信息中很难理解您的问题。请添加更多信息,以使其更清晰。抱歉,我无法对此发表评论,因为我没有足够的声誉。

所以我将在旁边发布答案。据我了解您的问题,您有一个(9000 x 12)numpy数组,其中12列是变量,而9000行是观察值?您想将数据分为2类,然后将它们以不同的颜色/线条样式/等方式绘制在同一图中?

如果要为数组分配分类(“分类变量”),pandas将是最佳选择。如果您只想用numpy做到这一点,我会使用类似这样的东西:

import numpy as np
import matplotlib.pyplot as plt

# Sample data
arr = np.random.randn(9000, 12)

# Split data
class_a = arr[:3001, :]
class_b = arr[3001:, :]

# Plot both classes in same plot
fig, ax = plt.subplots(1, 1)

ax.plot(class_a[:, 0], class_a[:, 1])  # Choose columns you want to plot
ax.plot(class_b[:, 0], class_b[:, 1])

如果您使用2个单独的plt.plot调用,则matplotlib将自动使用新颜色。 使用pandasseaborn的方法将扩展arr变量:

import pandas as pd
import seaborn as sns

df = pd.DataFrame(arr)

df['Class'] = 'A'
df.Class[3001:] = 'B'  # Hacky solution, but got no time to elaborate

sns.lineplot(data=df, x=0, y=1, hue='Class')