我有一个DataFrame >>> df = pd.read_csv('Advertising.csv', index_col=0)
>>> df.head(5)
TV Radio Newspaper Sales
1 230.1 37.8 69.2 22.1
2 44.5 39.3 45.1 10.4
3 17.2 45.9 69.3 9.3
4 151.5 41.3 58.5 18.5
5 180.8 10.8 58.4 12.9
代表Advertising.csv中找到的CSV数据。
import matplotlib.pyplot as plt
f, ax_l = plt.subplots(1, 3, figsize=(14, 4))
for e, col_name in enumerate(df.loc[:, :'Newspaper'].columns):
ax_l[e].scatter(df[col_name], df.Sales, alpha=0.5, color='r')
ax_l[e].set_xlabel(col_name)
ax_l[e].set_ylabel('Sales')
我想将我的DataFrame中的每一列与各自的散点图中的Sales列进行对比,即
我设法用
完成了df.plot
我的问题是,savePar <- par(mfrow=c(1,3))
col <- adjustcolor( 'red', 0.5 )
with( Advertising,
{ plot( TV , Sales, pch=19, col=col )
plot( Radio , Sales, pch=19, col=col )
plot( Newspaper, Sales, pch=19, col=col )
}
)
中是否有一个构造可以让这个任务更容易进入Matplotlib并像我一样循环?
动机
我知道在R中,为了获得类似的结果,我会做类似
的事情observer.OnNext(value);
当然看起来比我的Pandas接近IMO要清晰得多,让我质疑是否有一种更直接的方式以这种方式绘制DataFrames列。
答案 0 :(得分:3)
我不知道在df.plot()
方法中完全做到这一点的方法,但有一种更简单的方法来绘制图表:
import pandas as pd
import matplotlib.pyplot as plt
fig, axes = plt.subplots(nrows=1, ncols=3, figsize=(14,4))
for xcol, ax in zip(['TV', 'Radio', 'Newspaper'], axes):
df.plot(kind='scatter', x=xcol, y='Sales', ax=ax, alpha=0.5, color='r')
此处的方法是使用内置zip
函数将列名称与单个axis
对象配对。您可以将axis
对象直接传递给df.plot
,告诉它axis
使用哪个df.plot()
。您还可以在对static private void showAndBlock(Dialog dialog) {
if (Platform.isFxApplicationThread()) {
dialog.showAndWait();
} else {
CountDownLatch lock = new CountDownLatch(1);
Platform.runLater(() -> {
dialog.showAndWait();
lock.countDown();
});
try {
lock.await();
} catch (InterruptedException e) {
// Just in case you call yourTherad.interrupt(),
// the thread will be joined forcibly through here.
}
}
}
的调用中指定x和y数据列的列名称。
使用您提供的数据子集,可以生成: