<p>运行<code>plotly.express</code>将返回一个<code>plotly.graph_objs._figure.Figure</code>对象。运行<code>go.Figure()</code>的<code>plotly.graph_objects</code>与例如<code>go.Bar()</code>一起运行的<code>plotly.graph_objects</code>也是如此。因此,在使用plotly express构建地物后,可以通过直接对地物的参照添加线或迹线,如:</p>
<pre><code>fig['data'][0].width = 0.4
</code></pre>
<p>这正是你需要设置的酒吧宽度。您可以轻松地将其与plotly express结合使用:</p>
<h3>代码1</h3>
<pre><code>fig = px.bar(grouped, y='Category', x = ['Current'],
orientation = 'h', barmode='overlay', opacity = 1,
color_discrete_sequence = px.colors.qualitative.Plotly[1:])
fig['data'][0].width = 0.4
</code></pre>
<h3>图1</h3>
<p><a href="https://i.stack.imgur.com/vX3zA.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/vX3zA.png" alt="enter image description here"/></a></p>
<p>为了获得指示目标级别的条形或形状,您可以使用DerekO描述的方法,也可以使用:</p>
<pre><code>for i, g in enumerate(grouped.Goal):
fig.add_shape(type="rect",
x0=g+1, y0=grouped.Category[i], x1=g, y1=grouped.Category[i],
line=dict(color='#636EFA', width = 28))
</code></pre>
<h3>完整代码:</h3>
<pre><code>import plotly.express as px
from plotly.subplots import make_subplots
import plotly as py
import pandas as pd
from plotly import tools
d = {'Mkt_cd': ['Mkt1','Mkt2','Mkt3','Mkt4','Mkt5','Mkt1','Mkt2','Mkt3','Mkt4','Mkt5'],
'Category': ['Apple','Orange','Grape','Mango','Orange','Mango','Apple','Grape','Apple','Orange'],
'CategoryKey': ['Mkt1Apple','Mkt2Orange','Mkt3Grape','Mkt4Mango','Mkt5Orange','Mkt1Mango','Mkt2Apple','Mkt3Grape','Mkt4Apple','Mkt5Orange'],
'Current': [15,9,20,10,20,8,10,21,18,14],
'Goal': [50,35,21,44,20,24,14,29,28,19]
}
dataset = pd.DataFrame(d)
grouped = dataset.groupby('Category', as_index=False).sum()
fig = px.bar(grouped, y='Category', x = ['Current'],
orientation = 'h', barmode='overlay', opacity = 1,
color_discrete_sequence = px.colors.qualitative.Plotly[1:])
fig['data'][0].width = 0.4
fig['data'][0].marker.line.width = 0
for i, g in enumerate(grouped.Goal):
fig.add_shape(type="rect",
x0=g+1, y0=grouped.Category[i], x1=g, y1=grouped.Category[i],
line=dict(color='#636EFA', width = 28))
f = fig.full_figure_for_development(warn=False)
fig.show()
</code></pre>