Как остановить Plotly Scatter от создания несуществующих значений X

#python #python-3.x #plotly

#python #python-3.x #plotly

Вопрос:

Я попытался использовать это в Google и реализовал все предполагаемые исправления, которые я нашел: Настройка tickvals и connectgaps , но это не решило проблему.

У меня есть набор данных из примерно 100 строк со значениями транзакций свойств за 1998, 1999 и 2020 годы. Однако Plotly настаивает на создании каждого года в период с 1999 по 2020 год, даже если он не существует в наборе данных.

Вот мой код диаграммы:

 def scatter(df):
    """
    Must take in a df with property_type, year, price_paid
    """
    figs = []

    for prop_type in df['property_type'].unique():
        df_filt = df[df['property_type'] == prop_type]
        figs.append(
            go.Scatter(x=df_filt['year'],
                       y=df_filt['price_paid'],
                       mode='markers',
                       marker=dict(
                           size=15,
                           opacity=0.5,
                           line=dict(
                               width=1,
                               color='darkSlateGrey'
                           )
                       ),
                       name=prop_type,
                       connectgaps=True)
        )

    layout = go.Layout(width=1000,
                       height=600)

    fig = go.Figure(data=figs, layout=layout)

    fig.update_xaxes(tickmode='array',
                     tickvals=[n for n in range(len(df_filt['year'].unique()))],
                     ticktext=[n for n in df_filt['year'].unique()])

    chart = pyo.plot(fig, output_type='div', include_plotlyjs=True)

    return chart
  

Однако вот что он показывает..

введите описание изображения здесь

Вся помощь приветствуется!

Спасибо

Комментарии:

1. Вы пробовали устанавливать ось X 'type': 'category' ?

2. Спасибо, да! Это сработало. Редактировать: Как мне выбрать ваш комментарий в качестве ответа?

3. Отлично, рад, что это помогло вам! Только что дал вам правильный ответ. Приветствия, приятель.

4. Добро пожаловать! Приветствия!

Ответ №1:

Решение может быть (и, согласно вашему комментарию, определенно есть) таким же простым, как добавление следующего в xaxis макет:

 'type': 'category'