pyplot.scatter(dataframe) vs. dataframe.plot(kind='scatter')
我有几个熊猫数据框。我想在单独的散点图中绘制几列,彼此相对,然后将它们组合为图中的子图。我想相应地标记每个子图。在使子图标签正常工作方面,我遇到了很多麻烦,直到我发现据我所知,有两种直接从数据框进行图绘制的方法;参见SO和pandasdoc:
1 2 | ax0 = plt.scatter(df.column0, df.column5) type(ax0): matplotlib.collections.PathCollection |
和
1 2 | ax1 = df.plot(0,5,kind='scatter') type(ax1): matplotlib.axes._subplots.AxesSubplot |
我不明白为什么存在两种不同的方式。使用PathCollections的第一种方法的目的是什么?在17.0中添加了第二个。是第一个过时的还是有其他用途的?
如您所见,pandas函数返回一个axes对象。也可以使用"获取当前轴"功能将PathCollection对象解释为轴对象。例如:
1 2 3 | plot = plt.scatter(df.column0, df.column5) ax0 = plt.gca() type(ax0) |
< matplotlib.axes._subplots.AxesSubplot at 0x10d2cde10>
您可能会看到以下更标准的方式:
1 2 3 | fig = plt.figure() ax0 = plt.add_subplot() ax0.scatter(df.column0, df.column5) |
这时,欢迎您执行"设置"命令,例如您的
希望这会有所帮助。
两者之间的区别在于它们来自不同的库。第一个来自matplotlib,第二个来自pandas。它们执行相同的操作,即创建一个matplotlib散点图,但是matplotlib版本返回点的集合,而pandas版本返回matplotlib子图。这使matplotlib版本更具通用性,因为您可以在另一个图中使用点的集合。