# Add Pie Chart to Your PDF Report

In this article you will learn how to add various charts to your PDF Report. Lets start!  
  
So, you have your canvas, lets drop new block there **<span style="color: rgb(185, 106, 217);">Python Plot Chart</span>**

[![Screenshot 2024-08-16 at 20.09.16.png](https://docs.finmars.com/uploads/images/gallery/2024-08/scaled-1680-/screenshot-2024-08-16-at-20-09-16.png)](https://docs.finmars.com/uploads/images/gallery/2024-08/screenshot-2024-08-16-at-20-09-16.png)  
  
Logic absolutely the same as with Python HTML Block, the only difference that we expect from Python Plot Chart an **<span style="color: rgb(185, 106, 217);">Image</span>** as output  
  
In settings Panel same options and same rules as for Python HTML Block

[![Screenshot 2024-08-16 at 20.14.28.png](https://docs.finmars.com/uploads/images/gallery/2024-08/scaled-1680-/screenshot-2024-08-16-at-20-14-28.png)](https://docs.finmars.com/uploads/images/gallery/2024-08/screenshot-2024-08-16-at-20-14-28.png)

  
Lets see what is inside of code. Open ./python/currency\_pie\_chart.ipynb

```python
import matplotlib.pyplot as plt

import requests
import datetime
from datetime import timedelta

from workflow.finmars import utils, request_api


if 'execution_context' not in locals():
    execution_context = {}
    
report_date = execution_context.get('report_date', '2023-08-12')
portfolio = execution_context.get("portfolio", "Bonds Portfolio")
report_currency = execution_context.get('report_currency', 'USD')
pricing_policy = execution_context.get('pricing_policy', 'com.finmars.standard-pricing:standard')

period_type = execution_context.get('period_type', 'ytd')

category_key = 'exposure_currency.user_code'
value_key = 'market_value'
    
payload = {
    "cost_method": 1,
    "pricing_policy": pricing_policy,
    "report_date": report_date,
    "report_currency": report_currency,
    "portfolios": [portfolio],
    "frontend_request_options": {
        "columns": [],
        "filter_settings": [],
        "groups_types": [],
        "groups_values": []
    }
}


response = request_api(f'/api/v1/reports/backend-balance-report/items/', method='POST', data=payload)

items = response["items"]

labels = []
sizes_dict = {}
sizes = []

for item in items:

    if item[category_key] not in labels:
        labels.append(item[category_key])
        
    if item[category_key] not in sizes_dict:
        sizes_dict[item[category_key]] = 0
        
    sizes_dict[item[category_key]] = sizes_dict[item[category_key]] + item[value_key]
        
# print(labels)

# Mock data
# labels = ['USD', "CHF"]
# sizes = [80, 20]
colors = ['#5d1800', '#842400', '#ad3301', '#d5450a', '#f85f26', '#ff8b65']
# print(sizes_dict)

for key, value in sizes_dict.items():
    sizes.append(value)

# # Create a pie chart
plt.figure(figsize=(8,6))
wedges, texts, autotexts = plt.pie(sizes, labels=labels, colors=colors, autopct='%1.1f%%', startangle=140,     labeldistance=1.15,  # Distance of labels from the center of the pie
    pctdistance=0.85)    # Distance of the percentage text from the center)

for text in texts:
    text.set_fontsize(14)
    text.set_color('black')

# Set the font size and color for the percentage labels
for autotext in autotexts:
    autotext.set_fontsize(14)
    autotext.set_color('white')

plt.axis('equal')  # Equal aspect ratio ensures that pie is drawn as a circle.

# # Show the plot
plt.tight_layout()  # Adjust layout to make room for rotated labels
plt.show()

```

Code is similar to what we have seen before, only principal change is

```python
import matplotlib.pyplot as plt
```

  
So, we use Matplotlib for charts ([https://matplotlib.org/)](https://matplotlib.org/)) Import it  
  
After we fetched and prepared data, we need to configure our Plot

```python
# Create a pie chart
plt.figure(figsize=(8,6))
wedges, texts, autotexts = plt.pie(sizes, labels=labels, colors=colors, autopct='%1.1f%%', startangle=140,     labeldistance=1.15,  # Distance of labels from the center of the pie
    pctdistance=0.85)    # Distance of the percentage text from the center)

for text in texts:
    text.set_fontsize(14)
    text.set_color('black')

# Set the font size and color for the percentage labels
for autotext in autotexts:
    autotext.set_fontsize(14)
    autotext.set_color('white')

plt.axis('equal')  # Equal aspect ratio ensures that pie is drawn as a circle.
```

Pass data, other settings, when you ready then do:

```python
# Show the plot
plt.tight_layout()  # Adjust layout to make room for rotated labels
plt.show()
```

  
Lets add Export button to your Dashboard Layout. Go to [https://docs.finmars.com/books/pdf-builder/page/add-export-button-to-your-dashboard](https://docs.finmars.com/books/pdf-builder/page/add-export-button-to-your-dashboard)