Я пытаюсь построить трехмерные диаграммы рассеяния в разных строках, используя python.
Массив "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()
Если я поставлю plt.show()
и plt.close()
вне цикла for, тогда он покажет все разброс на одном графике.