Построение второй оси в процентах на гистограмме - PullRequest
0 голосов
/ 18 июня 2019

Я построил гистограмму с использованием plotly и следующего кода:

import plotly
import plotly.plotly as py
import plotly.graph_objs as go
import numpy as np

from plotly.offline import init_notebook_mode
plotly.offline.init_notebook_mode(connected=True)

x0 = np.random.randn(500)
x1 = np.random.randn(500)+1

trace1 = go.Histogram(
    x=x0
)
trace2 = go.Histogram(
    x=x1
)

data = [trace1, trace2]
layout = go.Layout(barmode='stack')
fig = go.Figure(data=data, layout=layout)

plotly.offline.plot(fig)

То, что я хотел бы добавить, - это процент от общего количества в правой части диаграммы в качестве второй оси.

1 Ответ

0 голосов
/ 21 июня 2019

Я не знаю, есть ли другой способ, но я могу подумать о добавлении фантомной трассировки в качестве обходного пути:

import plotly
import plotly.plotly as py
import plotly.graph_objs as go
import numpy as np

from plotly.offline import init_notebook_mode
plotly.offline.init_notebook_mode(connected=True)

x0 = np.random.randn(500)
x1 = np.random.randn(500)+1

trace1 = go.Histogram(
    x=x0
)
trace2 = go.Histogram(
    x=x1
)
phantom_trace = go.Histogram(
    x=np.hstack([x1, x0]),
    histnorm='percent',
    yaxis='y2',
    showlegend=False,
    hoverinfo='skip',
    marker=go.histogram.Marker(color='rgba(0,0,0,0)')
)

data = [trace1, trace2, phantom_trace]
layout = go.Layout(
    barmode='stack',
    yaxis2=go.layout.YAxis(
        side='right',
        overlaying='y1',
        ticksuffix='%'
    )
)
fig = go.Figure(data=data, layout=layout)

plotly.offline.plot(fig)
...