【发布时间】:2020-08-15 05:26:33
【问题描述】:
我有一个数据框,其中包含一堆 x,y 数据,我希望以散布形式查看这些数据以及一条线。数据框由其形式在多个类别中重复的数据组成。我希望看到的最终结果是某种图的网格,但我不完全确定 matplotlib 如何处理重叠数据的多个子图。
这是我正在使用的数据类型的示例:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
category = np.arange(1,10)
total_data = pd.DataFrame()
for i in category:
x = np.arange(0,100)
y = 2*x + 10
data = np.random.normal(0,1,100) * y
dataframe = pd.DataFrame({'x':x, 'y':y, 'data':data, 'category':i})
total_data = total_data.append(dataframe)
我们有 x 数据,我们有 y 数据,它是某种生成数据集(数据变量)的线性模型。
我已经能够根据主数据集的子集生成单独的图,但在这种情况下,我希望在 3x3 网格中并排查看它们。但是,在循环中调用这些图只会将它们全部叠加到一张图像上。
有没有一种好方法可以使用以下代码块并从类别子集中制作网格?我是否通过在情节调用中执行子集使其过于复杂?
plt.scatter(total_data['x'][total_data['category']==1], total_data['data'][total_data['category']==1])
plt.plot(total_data['x'][total_data['category']==1], total_data['y'][total_data['category']==1], linewidth=4, color='black')
如果有更简单的方法来生成按类别分散加线,我完全赞成。不知道 seaborn 有没有比 pyplot 类似或更直观的方法来使用。
【问题讨论】:
标签: python pandas numpy matplotlib