Я новый пользователь сюжета. Значения оси 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 и т. д.)? Есть ли способ добавить дополнительную ось для достижения этой цели?
@BigBen, я полагаю, я не хочу, чтобы ось X представляла «промежуточную сумму» значений SOMEATTR, а скорее метки/отметки оси X должны лучше представлять значения SOMEATTR, т. е. 900 должно быть чем-то меньшим, чем 7,2808. , больше похоже на 7. Возможно, мне нужен другой тип диаграммы, кроме «сложенной». Данные SOMEATTR представлены в милях, может быть, они лучше представляют линейные элементы?
Я не уверен, каков желаемый результат. Может, нарисовать вручную, чтобы разобраться?
@BigBen, добавил в вопрос еще одну картинку.
Чтобы задать произвольный масштаб, задайте список значений интервалов и список строк для них. Попробуйте следующее. fig.update_xaxes(tickvals=[x for x in range(0,1000,100)], ticktext=[str(x) for x in range(0,10,1)])
Я смог решить эту проблему с помощью комментаторов здесь. Один показал мне, что мне нужно использовать «изменение атрибута» SOMEATTR (в моем случае длину) вместо значения SOMEATTR (пробег). Затем я применил предложенный масштаб по оси X, опубликованный в комментариях.
Выглядит как составная гистограмма. Каков ожидаемый результат, если вы не хотите, чтобы сумма нескольких SOMEATTR соответствовала конкретному экземпляру OTHERATTR?