Значения деления оси X не соответствуют данным

Я новый пользователь сюжета. Значения оси X моего графика (метка/отметка) не соответствуют данным, указанным для оси X.

import pandas as pd
import psycopg2 as odb
import plotly.express as px
from urllib.parse import quote_plus
from sqlalchemy import create_engine

connection = odb.connect(...)

q = """select SOMEATTR, OTHERATTR, SOMETYPE from SOMETABLE...."""

uri = f"postgresql+psycopg2://{quote_plus(user)}:{quote_plus(pw)}@{host}:{port}/{db}"
alchemyEngine = create_engine(uri)

df = pd.read_sql(q, connection)

fig = px.bar(df, x = "SOMEATTR", y = "OTHERATTR", color = "SOMETYPE", orientation='h')
fig.update_xaxes(rangemode = "normal")
fig.write_html('first_figure.html', auto_open=True)

В моем примере значения SOMEATTR варьируются от 0 до 7,2808. На графике показана метка 900 в конце гистограммы.

Я ожидал бы, что метки/отметки осей будут находиться в диапазоне от 0 до 7 или 8, а не от 0 до 900.

Может ли кто-нибудь помочь мне получить значения по оси X, которые будут представлять фактический диапазон значений данных «x» (0, 1, 2...8 и т. д.)? Есть ли способ добавить дополнительную ось для достижения этой цели?

Выглядит как составная гистограмма. Каков ожидаемый результат, если вы не хотите, чтобы сумма нескольких SOMEATTR соответствовала конкретному экземпляру OTHERATTR?

BigBen 18.04.2024 19:54

@BigBen, я полагаю, я не хочу, чтобы ось X представляла «промежуточную сумму» значений SOMEATTR, а скорее метки/отметки оси X должны лучше представлять значения SOMEATTR, т. е. 900 должно быть чем-то меньшим, чем 7,2808. , больше похоже на 7. Возможно, мне нужен другой тип диаграммы, кроме «сложенной». Данные SOMEATTR представлены в милях, может быть, они лучше представляют линейные элементы?

cm1 18.04.2024 20:09

Я не уверен, каков желаемый результат. Может, нарисовать вручную, чтобы разобраться?

BigBen 18.04.2024 20:14

@BigBen, добавил в вопрос еще одну картинку.

cm1 18.04.2024 20:57

Чтобы задать произвольный масштаб, задайте список значений интервалов и список строк для них. Попробуйте следующее. fig.update_xaxes(tickvals=[x for x in range(0,1000,100)], ticktext=[str(x) for x in range(0,10,1)])

r-beginners 19.04.2024 02:35
0
5
56
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я смог решить эту проблему с помощью комментаторов здесь. Один показал мне, что мне нужно использовать «изменение атрибута» SOMEATTR (в моем случае длину) вместо значения SOMEATTR (пробег). Затем я применил предложенный масштаб по оси X, опубликованный в комментариях.

Другие вопросы по теме