У меня есть набор данных, который содержит страну, год и города США, в которые они мигрировали. Я не уверен, как построить эти данные в Python - PullRequest
0 голосов
/ 21 марта 2019

Я попытался сгенерировать трехмерный график, но я могу сделать это для каждого из столбцов цикла For Loop.Может кто-нибудь помочь мне построить это?Я также приложил код.Это не должно быть 3D, но что-то более интуитивное.

enter image description here

for i in west_africa.columns[2:]:
    plt.style.use('seaborn-white')
    data = west_africa.set_index(['Country','Year'])[[i]]
    data = data.unstack().fillna(0).stack()
    L = []
    for j, group in data.groupby(level=1)[i]:
        L.append(group.values)
    z = np.hstack(L).ravel()
    xlabels = west_africa.set_index(['Year']).index.get_level_values('Year').unique()
    ylabels = west_africa.set_index(['Country']).index.get_level_values('Country').unique()
    x = np.arange(xlabels.shape[0])
    y = np.arange(ylabels.shape[0])

    x_M, y_M = np.meshgrid(x, y, copy=False)

    fig = plt.figure(figsize=(10, 10))
    ax = fig.add_subplot(111, projection='3d')

    ax.w_xaxis.set_ticks(x + 0.5/2.)
    ax.w_yaxis.set_ticks(y + 0.5/2.)

    ax.w_xaxis.set_ticklabels(xlabels)
    ax.w_yaxis.set_ticklabels(ylabels, rotation = 90, rotation_mode="anchor")

    # Labeling the 3 dimensions
    ax.set_xlabel('Year')
    ax.set_ylabel('Country')
    ax.set_zlabel(i)

    values = np.linspace(0.2, 1., x_M.ravel().shape[0])

    colors = plt.cm.Spectral(values)
    ax.bar3d(x_M.ravel(), y_M.ravel(), z*0, dx=0.5, dy=0.5, dz=z, color=colors)
    plt.show()
...