Как построить график на основе значений 2 столбцов - PullRequest
0 голосов
/ 03 октября 2019
df = 

     id_easy  latitude  longitude  cluster
0         a1   45.1076     7.4920        0
0         b1   45.1064     7.5013        0
1         c1   44.9498     7.5010        1
1         d1   44.9656     7.5084        1
2         e1   45.0846     7.5277        2
2         f1   45.1650     7.7950        2

Я хочу визуализировать:

  • значения долготы и широты id_easy a1 b1 cluster 0 в разных цветах и ​​остальные данныесерый
  • значения долготы и широты id_easy c1 d1 из cluster 1 разных цветов и остальных данных серого цвета
  • значения долготы и широты id_easy e1 f1 из cluster 2 в разные цвета и остальные данные серого цвета

У меня есть это:

for index_in_red in df.index.unique():
    my_dpi=96
    plt.figure(figsize=(600/my_dpi, 400/my_dpi), dpi=my_dpi)

    plt.plot(df.loc[df.index != index_in_red,'longitude'],df.loc[df.index != index_in_red,'latitude'] ,
             color='silver', marker='o',linestyle='',linewidth=50, markersize=2)

    plt.plot(df.loc[index_in_red,'longitude'],df.loc[index_in_red,'latitude']  ,
              color='maroon',marker='o',linestyle='',linewidth=2, markersize=3)

    plt.show()

Но это даетмне все значения id_easy в бордовом цвете, но я хочу, чтобы они были в другом цвете

Желаемый вывод:

For every values of id_easy I have different color

Для каждого значения id_easy у меня разный цвет

Ответы [ 2 ]

2 голосов
/ 03 октября 2019

Это может быть сделано с морским рожком:

for cluster in df.cluster.unique():

    # mask the cluster of interest
    is_cluster = df.cluster.eq(cluster)

    # plot the other clusters in gray
    ax = df[~is_cluster].plot.scatter(x='latitude',y='longitude', c='gray')

    # plot the cluster of interest in different colors
    sns.scatterplot(data=df[is_cluster],
                    x='latitude', 
                    y='longitude',
                    hue='id_easy',
                    ax=ax)

    # you can do other stuff with ax here
    # ax.set_title(...)...

    plt.show()

В конце у вас будет 3 сюжета:

enter image description here enter image description here enter image description here

1 голос
/ 03 октября 2019

Ваш вопрос мне не совсем понятен, это то, что вы ищете?

enter image description here

, если это код, который я использовал:

df2=df.set_index('cluster')

fig, axs = plt.subplots(figsize=(10, 12), nrows=3,ncols=1,constrained_layout=True)

for clus in df2.index.unique():
    axs[clus].plot(df2.latitude,df2.longitude,'o',color='grey',markersize=12)
    axs[clus].plot(df2.loc[clus].latitude.iloc[0],df2.loc[clus].longitude.iloc[0],'o',markersize=12)
    axs[clus].plot(df2.loc[clus].latitude.iloc[1],df2.loc[clus].longitude.iloc[1],'o',markersize=12)

    axs[clus].set_xlabel('Latitude')
    axs[clus].set_ylabel('Longitude')
    axs[clus].set_title('Cluster '+str(clus))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...