Как я могу изменить размер или поворот моей вторичной метки оси x, чтобы она не перекрывалась с линиями при экспорте ее как статического изображения?

# packages
import pandas as pd
import plotly.graph_objects as go

df_RampUp_2030 = pd.read_excel('RampUp.xlsx', index_col=[0,1])

# define xlabels
xlabels = [list(df_RampUp_2030.index.get_level_values(0)),
           list(df_RampUp_2030.index.get_level_values(1)),
           df_RampUp_2030.index]

fig = go.Figure()

# create traces
for idx, tech in enumerate(df_RampUp_2030.columns):
    fig.add_trace(
        go.Bar(
            y=df_RampUp_2030[tech],
            x=xlabels,
            name=tech,
            showlegend=True,
            width=0.5,
        )
    )

# specify layout
fig.update_layout(
    yaxis=dict(
        titlefont_size=16,
        tickfont_size=12,
        title="Mio. Stk.",
        showspikes=True),
    xaxis=dict(
        titlefont_size=16,
        tickfont_size=12),
    title_text='Fahrzeughochlauf<br>alternativer Antriebstechnologien bis 2030',
    template='plotly_white',
    barmode='stack',
)

fig.show()

На получившемся изображении ярлыки NPE 2018 и eMobil 2050 не помещаются в указанное пространство. Можно ли повернуть только эти две метки? Если нет, как я могу изменить размер шрифта вторичных меток?

enter image description here

Данные:

+-----------------+-------------------+-------+-------+-------+------+------------------+
|     Studie      |     Szenario      |  BEV  | PHEV  |  FCV  | REEV | Elektrofahrzeuge |
+-----------------+-------------------+-------+-------+-------+------+------------------+
| dena            | RF                |   1.9 |   3.2 |   0.9 |      |                  |
| dena            | TM                |   5.6 |  16.4 |   2.2 |      |                  |
| dena            | EL                |  13.3 |  11.0 |   1.2 |      |                  |
| BCG             | RF                |   2.0 |   7.0 |   0.0 |      |                  |
| BCG             | 80                |   4.0 |   6.0 |   0.0 |      |                  |
| BCG             | 95                |   4.0 |   6.0 |   0.0 |      |                  |
| NPE 2018        | konservativ       |       |       |       |      |              4.2 |
| NPE 2018        | optimistisch      |       |       |       |      |              7.0 |
| RENEWBILITY III | Basis             | 0.449 | 2.513 | 0.004 |      |                  |
| RENEWBILITY III | Fokus Kraftstoffe | 0.456 |  2.55 |   0.0 |      |                  |
| RENEWBILITY III | Pkw-Maut          | 1.004 | 6.277 | 0.007 |      |                  |
| RENEWBILITY III | ohne O-LKW        | 1.037 | 6.485 |   0.0 |      |                  |
| RENEWBILITY III | Effizienz Plus    | 1.037 | 6.485 | 0.008 |      |                  |
| RENEWBILITY III | Effizienz         | 1.001 | 5.387 | 0.008 |      |                  |
| eMobil 2050     | Regional eMobil   |   3.0 |   1.0 |       |  2.0 |                  |
| eMobil 2050     | Grenzenlos eMobil |   2.0 |   2.0 |       |  2.0 |                  |
+-----------------+-------------------+-------+-------+-------+------+------------------+
0
Kilian Helfenbein 8 Сен 2020 в 15:29

1 ответ

Лучший ответ

Я зафиксировал два момента. Сначала я переместил легенду в верхнюю часть заголовка, чтобы освободить место для нее с правой стороны. Затем я увеличил ширину, задав размер изображения вручную, а не автоматически.

# packages
import pandas as pd
import plotly.graph_objects as go

# df_RampUp_2030 = pd.read_excel('RampUp.xlsx', index_col=[0,1])

# define xlabels
xlabels = [list(df_RampUp_2030.index.get_level_values(0)),
           list(df_RampUp_2030.index.get_level_values(1)),
           df_RampUp_2030.index]

fig = go.Figure()

# create traces
for idx, tech in enumerate(df_RampUp_2030.columns):
    fig.add_trace(
        go.Bar(
            y=df_RampUp_2030[tech],
            x=xlabels,
            name=tech,
            showlegend=True,
            width=0.5,
        )
    )

# specify layout
fig.update_layout(
    autosize=False,
    width=1000,
    height=500,
    yaxis=dict(
        titlefont_size=16,
        tickfont_size=12,
        title="Mio. Stk.",
        showspikes=True),
    xaxis=dict(
        titlefont_size=16,
        tickfont_size=12),
    title_text='Fahrzeughochlauf<br>alternativer Antriebstechnologien bis 2030',
    template='plotly_white',
    barmode='stack',
)

fig.update_layout(legend=dict(
    orientation="h",
    yanchor="bottom",
    y=1.02,
    xanchor="right",
    x=1
))

fig.show()

enter image description here

1
r-beginners 8 Сен 2020 в 13:22