Q:

Bubble Chart по цвету и размеру

Помоги пожалуйста создать Bubble Chart, примерно как на картинке:

Их необходимо разместить по цвету и размеру согласно значениям данных.

A:

можно попытаться использовать "log scale" для оси X, чтобы сгладить выбросы:
import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_excel(r"D:\download\10лет.xlsx")

figsize = (18,6)
cmap_name = "rainbow"
cm = plt.cm.get_cmap(cmap_name)
x = df["Population size (millions)"]
y = df["Epedemic intensity, V"]
sz = df["Population size (millions)"].mul(200).astype(int)

# sc = plt.scatter(x, y, c=y, vmin=0, vmax=1, s=sz, cmap=cm, alpha=0.75, edgecolors="dimgrey")
ax = df.plot.scatter(
    "Population size (millions)", "Epedemic intensity, V",
    c=y, vmin=0, vmax=1, s=sz, cmap=cm, alpha=0.75, edgecolors="darkgrey",
    figsize=figsize)
plt.xscale("log")
# plt.colorbar(sc)
plt.subplots_adjust()

A:

с разбивкой цветов на 7 квантилей:
import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_excel(r"D:\download\10лет.xlsx")

figsize = (18,6)
x = df["Population size (millions)"]
y = df["Epedemic intensity, V"]
sz = df["Population size (millions)"].mul(200).astype(int)

bins = [0, .073, .109, .161, .185, .234, .296, 1000]
labels = ["purple", "indigo", "green", "yellow", "gold", "orange", "red"]
col = pd.cut(y, bins=bins, labels=labels, include_lowest=True)

ax = df.plot.scatter(
    "Population size (millions)", "Epedemic intensity, V",
    c=col, s=sz, alpha=0.75, edgecolors="darkgrey",
    figsize=figsize)
plt.xscale("log")
plt.subplots_adjust()

