Создание подзаголовков на основе столбцов - PullRequest
2 голосов
/ 17 июня 2020

Итак, у меня есть вопрос ниже, по которому нужно сделать 3 подзаговора с использованием предоставленных данных. Проблема, с которой я столкнулся, заключается в том, что мне нужно выбрать определенный c жанр из столбца «genre_1» для каждого из трех подзаговоров. Я не могу понять, как выбрать указанные c данные. Я привел пример того, как должен выглядеть вывод.

 from plotly.subplots import make_subplots
    import plotly.graph_objects as go

    movies = {'title_year': {0: 2016, 1: 2016, 2: 2016, 3: 2016, 4:2016},'Title': {0: 'La La Land', 1: 'Zootopia',2: 'Lion',3: 'Arrival', 4: 'Manchester by the Sea'},'Runtime': {0: 128, 1: 108, 2: 118, 3: 116, 4: 137},'IMDb_rating': {0: 8.2, 1: 8.1, 2: 8.1, 3: 8.0, 4: 7.9},'genre_1': {0: 'Action',1: 'Animation',2: 'Biography',3: 'Drama',4: 'Drama'}}

    # Create a subplot, using column, 'genre_1' for three genres - 'Action','Drama','Biography' 

    sub_fig = make_subplots(rows=1, cols=3)

    fig.add_trace(go.Scatter(x='Runtime', y='IMDb_rating',row=1, col=1)
    fig.add_trace(go.Scatter(x='Runtime', y='IMDb_rating',row=1, col=2)
    fig.add_trace(go.Scatter(x='Runtime', y='IMDb_rating',row=1, col=3)

Вывод

1 Ответ

1 голос
/ 17 июня 2020

Это должно работать:

list_genre = list(df.genre_1.unique())
sub_fig = make_subplots(rows=1, cols=len(list_genre), subplot_titles= list_genre)

for i,genre in enumerate(list_genre):
    sub_fig.add_trace(go.Scatter(x = df[df.genre_1==genre]["Runtime"],
                             y=df[df.genre_1==genre]["IMDb_rating"]),row=1, col=i+1)


sub_fig.show()

Вывод:

enter image description here

EDIT : Это код, который вам нужен:

genres_to_plot = ['Action','Drama','Biography']
subset_movies = movies[movies.genre_1.isin(genres_to_plot)].reset_index(drop=True)

fig = px.scatter(subset_movies, x = "Runtime", y = "IMDb_rating", color = "genre_1", facet_col="genre_1", height = 480, width = 850)
fig.show()

Выходная цифра:

enter image description here

Вам просто нужно было добавить параметр facet_col к px.scatter. Если вам нужен пузырьковый график, добавьте size="actor_1_facebook_likes".

...