How to create a bar chart and save in pptx using Python?

Data visualization is an essential part of data analysis and communication, and Python offers many tools and libraries to create visually appealing and informative charts. Two such libraries are Plotly and python-pptx. Plotly is a powerful library for creating interactive charts, including bar charts, while python-pptx is a library for working with PowerPoint presentations programmatically.

Creating a bar chart using Plotly is straightforward ? you can specify the data, chart type, and layout, and Plotly will generate a high-quality chart that can be easily customized. Once created, you can save it as an image file and embed it into a PowerPoint presentation using the python-pptx library.

What is Plotly?

Plotly is a data visualization library that allows users to create interactive and publication-quality graphs and charts. It offers a wide range of charts, including scatter plots, line graphs, bar charts, and more, and is compatible with several programming languages, including Python, R, and JavaScript.

What is python-pptx?

python-pptx is a Python library for creating and updating PowerPoint (.pptx) files. It allows users to add slides, shapes, images, and text to a PowerPoint presentation, offering a range of customization options for automated presentation generation.

Installing Required Libraries

Before creating the bar chart, you need to install the required libraries ?

pip install plotly python-pptx kaleido

The kaleido package is required by Plotly to export static images.

Creating a Bar Chart and Saving to PowerPoint

Here's a complete example that creates a bar chart using Plotly and saves it in a PowerPoint presentation ?

# Importing required libraries
import plotly.graph_objs as go
import plotly.io as pio
from pptx import Presentation
from pptx.util import Inches

# Creating data for the bar chart
categories = ['Product A', 'Product B', 'Product C', 'Product D']
values = [45, 67, 23, 89]

# Creating the bar chart
bar_chart = go.Bar(
    x=categories,
    y=values,
    marker=dict(color=['#FF6B6B', '#4ECDC4', '#45B7D1', '#96CEB4'])
)

# Creating the layout for the chart
layout = go.Layout(
    title='Sales Performance by Product',
    xaxis_title='Products',
    yaxis_title='Sales (in thousands)',
    template='plotly_white',
    width=800,
    height=500
)

# Creating the figure
fig = go.Figure(data=[bar_chart], layout=layout)

# Saving the figure as an image
pio.write_image(fig, 'sales_bar_chart.png', width=800, height=500)

# Creating a PowerPoint presentation
prs = Presentation()

# Adding a new slide with title and content layout
slide = prs.slides.add_slide(prs.slide_layouts[1])

# Adding title to the slide
title = slide.shapes.title
title.text = "Sales Performance Report"

# Adding the chart image to the slide
chart_img = slide.shapes.add_picture(
    'sales_bar_chart.png', 
    Inches(1), 
    Inches(2), 
    width=Inches(8), 
    height=Inches(5)
)

# Saving the PowerPoint presentation
prs.save('sales_presentation.pptx')
print("Bar chart created and saved to PowerPoint successfully!")
Bar chart created and saved to PowerPoint successfully!

How It Works

The process involves several key steps:

  1. Data Preparation: Define the categories and values for the bar chart
  2. Chart Creation: Use go.Bar() to create the bar chart with custom colors
  3. Layout Configuration: Set title, axis labels, and styling using go.Layout()
  4. Image Export: Save the chart as a PNG image using pio.write_image()
  5. PowerPoint Integration: Create a presentation, add a slide, and insert the image

Customization Options

You can enhance the chart and presentation with additional customizations ?

import plotly.graph_objs as go
import plotly.io as pio
from pptx import Presentation
from pptx.util import Inches
from pptx.dml.color import RGBColor

# Enhanced bar chart with annotations
categories = ['Q1', 'Q2', 'Q3', 'Q4']
values = [125, 150, 175, 200]

bar_chart = go.Bar(
    x=categories,
    y=values,
    text=values,  # Show values on bars
    textposition='auto',
    marker=dict(
        color=values,
        colorscale='Viridis',
        showscale=True
    )
)

layout = go.Layout(
    title='Quarterly Revenue Growth',
    xaxis_title='Quarter',
    yaxis_title='Revenue (in $K)',
    template='plotly_white',
    annotations=[
        dict(
            text="Strong growth trend",
            x=2, y=180,
            showarrow=True,
            arrowhead=2
        )
    ]
)

fig = go.Figure(data=[bar_chart], layout=layout)
pio.write_image(fig, 'revenue_chart.png')

# Create presentation with custom formatting
prs = Presentation()
slide = prs.slides.add_slide(prs.slide_layouts[1])

# Customize slide title
title = slide.shapes.title
title.text = "Revenue Analysis"
title.text_frame.paragraphs[0].font.color.rgb = RGBColor(0, 51, 102)

# Add chart
slide.shapes.add_picture('revenue_chart.png', Inches(1), Inches(2), Inches(8), Inches(5))

prs.save('revenue_analysis.pptx')
print("Enhanced presentation created!")
Enhanced presentation created!

Key Parameters

Parameter Description Example
x, y Data for chart axes Categories and values
marker Bar styling options Colors, borders
template Chart theme 'plotly_white', 'ggplot2'
Inches() Position and size in PowerPoint Image placement

Conclusion

Creating a bar chart and saving it in PowerPoint using Python combines the power of Plotly's visualization capabilities with python-pptx's presentation automation. This approach enables you to generate professional reports and presentations programmatically, making it ideal for automated reporting workflows.

Updated on: 2026-03-27T01:30:48+05:30

2K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements