如何在Pandas的For循环中打印不同的散点图?

2024-10-01 07:41:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用python在不同的行中绘制3D散点图。在

数组“seasons”包含四个不同的数据集,我尝试调用每个数据集并分别绘制3D散点图。在

下面的代码只给出了一个数据集seasons[df]的结果。在

seasons = [summer_spike_df,Autumn_spike_df,Winter_spike_df,Spring_spike_df]
colors = ['b', 'orange', 'g', 'r', 'c', 'm', 'y', 'k', 'Brown', 'ForestGreen'] 
ncenters = 3

for df in (seasons):
    alldata = np.vstack((df['time_of_day'], df['Height'],df['resolution']))
    cntr, u, u0, d, jm, p, fpc = fuzz.cluster.cmeans(
        alldata, ncenters, 3, error=0.005, maxiter=1000, init=None)
    fpcs = []
    fpcs.append(fpc)
    for pt in cntr:
        ax.scatter(pt[0], pt[1],pt[2],color='r')

    cluster_membership = np.argmax(u, axis=0)
    for j in range(ncenters):
        ax.scatter(df['time_of_day'][cluster_membership == j],
                df['Height'][cluster_membership == j],
                df['resolution'][cluster_membership == j],
                '.', 
                color=colors[j], edgecolor='k',marker='o', s=20, lw=0, alpha=0.7)

ax.set_title('Centers = {0}; FPC = {1:.2f}'.format(ncenters, fpc))
ax.axis('on')
#ax.set_ylim([0,6])
ax.grid()
plt.show()

enter image description here

如果我把plt.show()plt.close()放在for循环之外,那么它会在同一个图中显示所有的散点。在


Tags: 数据inptdffor绘制pltax
1条回答
网友
1楼 · 发布于 2024-10-01 07:41:46

您不会显示您在何处定义ax。但是,要将数据集放入单独的三维散点图中,需要在单独的轴上定义它们。在

例如,您可以在一个图形中定义4个单独的轴,并将每个数据帧显式地绘制为单独的轴:

fig, axes = plt.subplots(nrows=2, ncols=2)
for df, ax in zip(seasons, axes.flatten()):
    # Your for loop will probably work as is here
    ...

    # With this exception, you'll just move code below within for loop
    ax.set_title('Centers = {0}; FPC = {1:.2f}'.format(ncenters, fpc))
    ax.axis('on')
    ax.grid()

相关问题 更多 >