How to create a categorical bubble plot in Python?
Categorical Bubble Plot
import numpy as np import matplotlib.pyplot as plt import pandas as pd df = pd.DataFrame({'Company1':['Chemist', 'Scientist', 'Worker', 'Accountant', 'Programmer', 'Chemist', 'Scientist', 'Worker', 'Statistician', 'Programmer', 'Chemist', 'Accountant', 'Statistician', 'Scientist', 'Accountant', 'Chemist', 'Scientist', 'Statistician', 'Statistician', 'Programmer'], 'Company2':['Programmer', 'Statistician', 'Scientist', 'Statistician', 'Worker', 'Chemist', 'Accountant', 'Accountant', 'Statistician', 'Chemist', 'Programmer', 'Scientist', 'Scientist', 'Accountant', 'Programmer', 'Chemist', 'Accountant', 'Scientist', 'Scientist', 'Worker'], 'Count':[53, 15, 1, 2, 4, 22, 6, 1, 15, 15, 1, 1, 2, 2, 4, 4, 22, 22, 6, 6] }) # Create padding column from values for circles that are neither too small nor too large df["padd"] = 2.5 * (df.Count - df.Count.min()) / (df.Count.max() - df.Count.min()) + 0.5 fig = plt.figure() # Prepare the axes for the plot - you can also order your categories at this step s = plt.scatter(sorted(df.Company1.unique()), sorted(df.Company2.unique(), reverse = True), s = 0) s.remove # Plot data row-wise as text with circle radius according to Count for row in df.itertuples(): bbox_props = dict(boxstyle = "circle, pad = {}".format(row.padd), fc = "w", ec = "b", lw = 2) plt.annotate(str(row.Count), xy = (row.Company1, row.Company2), bbox = bbox_props, ha="center", va="center", zorder = 2, clip_on = True) # Plot grid behind markers plt.grid(ls = "--", zorder = 1) # Take care of long labels fig.autofmt_xdate() plt.tight_layout() plt.show()
The following is the output that will be obtained:
2018-11-25T13:08:24+05:30
2018-11-25T13:08:24+05:30
Amit Arora
Amit Arora
Python Programming Tutorial
Python
Practical Solution