7

Here is my code:

import plotly.graph_objects as go

fig = go.Figure()
fig.add_trace(go.Bar(
    name='Group 1',
    x=['Var 1', 'Var 2', 'Var 3'], y=[3, 6, 4],
    error_y=dict(type='data', array=[1, 0.5, 1.5]),
    width=0.15
))
fig.add_trace(go.Bar(
    name='Group 2',
    x=['Var 1', 'Var 2', 'Var 3'], y=[4, 7, 3],
    error_y=dict(type='data', array=[0.5, 1, 2]),
    width=0.15
))
fig.update_layout(barmode='group')
fig.show()

output:

enter image description here



I read this but code from seems depreciated and does not works.

Question: How to set background color of the plot and color for grid lines?

vasili111
  • 6,032
  • 10
  • 50
  • 80
  • For bgcolor you can set Layout and then use it to define figure Please check https://stackoverflow.com/questions/59852866/plotly-how-to-set-background-color-per-data – Abhay Jul 17 '20 at 22:52

1 Answers1

17

This should help

import plotly.graph_objects as go
from plotly.graph_objects import Layout

# Set layout with background color you want (rgba values)
# This one is for white background
layout = Layout(plot_bgcolor='rgba(0,0,0,0)')

# Use that layout here
fig = go.Figure(layout=layout)
fig.add_trace(go.Bar(
    name='Group 1',
    x=['Var 1', 'Var 2', 'Var 3'], y=[3, 6, 4],
    error_y=dict(type='data', array=[1, 0.5, 1.5]),
    width=0.15
))
fig.add_trace(go.Bar(
    name='Group 2',
    x=['Var 1', 'Var 2', 'Var 3'], y=[4, 7, 3],
    error_y=dict(type='data', array=[0.5, 1, 2]),
    width=0.15
))
fig.update_layout(barmode='group')

# Change grid color and axis colors
fig.update_xaxes(showline=True, linewidth=2, linecolor='black', gridcolor='Red')
fig.update_yaxes(showline=True, linewidth=2, linecolor='black', gridcolor='Red')
fig.show()

enter image description here

Sources:

  1. Grid line customization
  2. Background Customization
Abhay
  • 585
  • 3
  • 9
  • Is there no way to set it centrally? I mean instead of those two lines for each figure, is there a way to specify it at the beginning of the file and all figures generated in the file will take that property? Is there a way to do this for both x and y axis together in one line instead of two separate method calls? – Meet Mar 19 '22 at 11:15