Introduction to Pie Charts in Plotly

pull/1279/head
piyush-poddar 2024-06-24 12:09:56 +05:30
rodzic d1c64d0a41
commit 7e996f4543
9 zmienionych plików z 222 dodań i 0 usunięć

Plik binarny nie jest wyświetlany.

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 28 KiB

Plik binarny nie jest wyświetlany.

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 28 KiB

Plik binarny nie jest wyświetlany.

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 27 KiB

Plik binarny nie jest wyświetlany.

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 32 KiB

Plik binarny nie jest wyświetlany.

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 52 KiB

Plik binarny nie jest wyświetlany.

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 29 KiB

Plik binarny nie jest wyświetlany.

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 27 KiB

Wyświetl plik

@ -10,3 +10,4 @@
- [Seaborn Plotting Functions](seaborn-plotting.md)
- [Getting started with Seaborn](seaborn-basics.md)
- [Bar Plots in Plotly](plotly-bar-plots.md)
- [Pie Charts in Plotly](plotly-pie-charts.md)

Wyświetl plik

@ -0,0 +1,221 @@
# Pie Charts in Plotly
A pie chart is a type of graph that represents the data in the circular graph. The slices of pie show the relative size of the data, and it is a type of pictorial representation of data. A pie chart requires a list of categorical variables and numerical variables. Here, the term "pie" represents the whole, and the "slices" represent the parts of the whole.
Pie charts are commonly used in business presentations like sales, operations, survey results, resources, etc. as they are pleasing to the eye and provide a quick summary.
Plotly is a very powerful library for creating modern visualizations and it provides a very easy and intuitive method to create highly customized pie charts.
## Prerequisites
Before creating bar plots in Plotly you must ensure that you have Python, Plotly and Pandas installed on your system.
## Introduction
There are various ways to create pie charts in `plotly`. One of the prominent and easiest one is using `plotly.express`. Plotly Express is the easy-to-use, high-level interface to Plotly, which operates on a variety of types of data and produces easy-to-style figures. On the other hand you can also use `plotly.graph_objects` to create various plots.
Here, we'll be using `plotly.express` to create the pie charts. Also we'll be converting our datasets into pandas DataFrames which makes it extremely convenient and easy to create charts.
Also, note that when you execute the codes in a simple python file, the output plot will be shown in your **browser**, rather than a pop-up window like in matplotlib. If you do not want that, it is **recommended to create the plots in a notebook (like jupyter)**. For this, install an additional library `nbformat`. This way you can see the output on the notebook itself, and can also render its format to png, jpg, etc.
## Creating a simple pie chart using `plotly.express.pie`
In `plotly.express.pie`, data visualized by the sectors of the pie is set in values. The sector labels are set in names.
```Python
import plotly.express as px
import pandas as pd
# Creating dataset
flowers = ['Rose','Tulip','Marigold','Sunflower','Daffodil']
petals = [11,9,17,4,7]
# Converting dataset to pandas DataFrame
dataset = {'flowers':flowers, 'petals':petals}
df = pd.DataFrame(dataset)
# Creating pie chart
fig = px.pie(df, values='petals', names='flowers')
# Showing plot
fig.show()
```
![Basic Pie Chart](images/plotly-basic-pie-chart.png)
Here, we are first creating the dataset and converting it into Pandas DataFrames using dictionaries, with its keys being DataFrame columns. Next, we are plotting the pie chart by using `px.pie`. In the `values` and `names` parameters, we have to specify a column name in the DataFrame.
`px.pie(df, values='Petals', names='Flowers')` is used to specify that the pie chart is to be plotted by taking the values from column `Petals` and the fractional area of each slice is represented by **petal/sum(petals)**. The column `flowers` represents the labels of slices corresponding to each value in `petals`.
**Note:** When you generate the image using above code, it will show you an **interactive plot**, if you want image, you can download it from their itself.
## Customizing Pie Charts
### Adding title to the chart
Simply pass the title of your chart as a parameter in `px.pie`.
```Python
import plotly.express as px
import pandas as pd
# Creating dataset
flowers = ['Rose','Tulip','Marigold','Sunflower','Daffodil']
petals = [11,9,17,4,7]
# Converting dataset to pandas DataFrame
dataset = {'flowers':flowers, 'petals':petals}
df = pd.DataFrame(dataset)
# Creating pie chart
fig = px.pie(df, values='petals', names='flowers',
title='Number of Petals in Flowers')
# Showing plot
fig.show()
```
![Title in Pie Chart](images/plotly-pie-title.png)
### Coloring Slices
There are a lot of beautiful color scales available in plotly and can be found here [plotly color scales](https://plotly.com/python/builtin-colorscales/). Choose your favourite colorscale apply it like this:
```Python
import plotly.express as px
import pandas as pd
# Creating dataset
flowers = ['Rose','Tulip','Marigold','Sunflower','Daffodil']
petals = [11,9,17,4,7]
# Converting dataset to pandas DataFrame
dataset = {'flowers':flowers, 'petals':petals}
df = pd.DataFrame(dataset)
# Creating pie chart
fig = px.pie(df, values='petals', names='flowers',
title='Number of Petals in Flowers',
color_discrete_sequence=px.colors.sequential.Agsunset)
# Showing plot
fig.show()
```
![Pie Chart Colors-1](images/plotly-pie-color-1.png)
You can also set custom colors for each label by passing it as a dictionary(map) in `color_discrete_map`, like this:
```Python
import plotly.express as px
import pandas as pd
# Creating dataset
flowers = ['Rose','Tulip','Marigold','Sunflower','Daffodil']
petals = [11,9,17,4,7]
# Converting dataset to pandas DataFrame
dataset = {'flowers':flowers, 'petals':petals}
df = pd.DataFrame(dataset)
# Creating pie chart
fig = px.pie(df, values='petals', names='flowers',
title='Number of Petals in Flowers',
color='flowers',
color_discrete_map={'Rose':'red',
'Tulip':'magenta',
'Marigold':'green',
'Sunflower':'yellow',
'Daffodil':'royalblue'})
# Showing plot
fig.show()
```
![Pie Chart Colors-1](images/plotly-pie-color-2.png)
### Labeling Slices
You can use `fig.update_traces` to effectively control the properties of text being displayed on your figure, for example if we want both flower name , petal count and percentage in our slices, we can do it like this:
```Python
import plotly.express as px
import pandas as pd
# Creating dataset
flowers = ['Rose','Tulip','Marigold','Sunflower','Daffodil']
petals = [11,9,17,4,7]
# Converting dataset to pandas DataFrame
dataset = {'flowers':flowers, 'petals':petals}
df = pd.DataFrame(dataset)
# Creating pie chart
fig = px.pie(df, values='petals', names='flowers',
title='Number of Petals in Flowers')
# Updating text properties
fig.update_traces(textposition='inside', textinfo='label+value+percent')
# Showing plot
fig.show()
```
![Pie Labels](images/plotly-pie-labels.png)
### Pulling out a slice
To pull out a slice pass an array to parameter `pull` in `fig.update_traces` corresponding to the slices and amount to be pulled.
```Python
import plotly.express as px
import pandas as pd
# Creating dataset
flowers = ['Rose','Tulip','Marigold','Sunflower','Daffodil']
petals = [11,9,17,4,7]
# Converting dataset to pandas DataFrame
dataset = {'flowers':flowers, 'petals':petals}
df = pd.DataFrame(dataset)
# Creating pie chart
fig = px.pie(df, values='petals', names='flowers',
title='Number of Petals in Flowers')
# Updating text properties
fig.update_traces(textposition='inside', textinfo='label+value')
# Pulling out slice
fig.update_traces(pull=[0,0,0,0.2,0])
# Showing plot
fig.show()
```
![Slice Pull](images/plotly-pie-pull.png)
### Pattern Fills
You can also add patterns (hatches), in addition to colors in pie charts.
```Python
import plotly.express as px
import pandas as pd
# Creating dataset
flowers = ['Rose','Tulip','Marigold','Sunflower','Daffodil']
petals = [11,9,17,4,7]
# Converting dataset to pandas DataFrame
dataset = {'flowers':flowers, 'petals':petals}
df = pd.DataFrame(dataset)
# Creating pie chart
fig = px.pie(df, values='petals', names='flowers',
title='Number of Petals in Flowers')
# Updating text properties
fig.update_traces(textposition='outside', textinfo='label+value')
# Adding pattern fills
fig.update_traces(marker=dict(pattern=dict(shape=[".", "/", "+", "-","+"])))
# Showing plot
fig.show()
```
![Pattern Fills Pie Chart](images/plotly-pie-patterns.png)