Наложение двух морских стволов разного размера - PullRequest
0 голосов
/ 10 января 2019

Скажем, есть два набора данных: большой набор "фон" и намного меньший набор "передний план". Набор переднего плана происходит от фона, но может быть намного меньше.

Мне интересно показать все фоновое распределение в упорядоченном sns.barplot, и на переднем плане установить более яркий контрастный цвет, чтобы привлечь внимание к этим образцам.

Лучшее решение, которое я смог найти, - это отобразить один график поверх другого, но в результате граф сжимается в меньшую область. Вот что я имею в виду:

import matplotlib.pyplot as plt
import seaborn

# Load the example car crash dataset
crashes = sns.load_dataset("car_crashes").sort_values("total", ascending=False)

# states of interest
txcahi = crashes[crashes['abbrev'].isin(['TX','CA','HI'])]

# Plot the total crashes
f, ax = plt.subplots(figsize=(10, 5))
plt.xticks(rotation=90, fontsize=10)
sns.barplot(y="total", x="abbrev", data=crashes, label="Total", color="lightgray")

# overlay special states onto gray plot as red bars
sns.barplot(y="total", x="abbrev", data=txcahi, label="Total", color="red")
sns.despine(left=True, bottom=True)

Эти данные дают: enter image description here

Но это должно выглядеть так (игнорировать стилистические различия): enter image description here

Почему этот подход не работает и что может быть лучше для этого?

1 Ответ

0 голосов
/ 10 января 2019

Морское побережье barplot просто строит свои данные n по значениям от 0 до n-1. Если вместо этого вы будете использовать график matplotlib bar, который учитывает единицы измерения (начиная с matplotlib 2.2 и далее), он будет работать как положено.

import matplotlib.pyplot as plt
import seaborn as sns

# Load the example car crash dataset
crashes = sns.load_dataset("car_crashes").sort_values("total", ascending=False)

# states of interest
txcahi = crashes[crashes['abbrev'].isin(['TX','CA','HI'])]

# Plot the total crashes
f, ax = plt.subplots(figsize=(10, 5))
plt.xticks(rotation=90, fontsize=10)

plt.bar(height="total", x="abbrev", data=crashes, label="Total", color="lightgray")
plt.bar(height="total", x="abbrev", data=txcahi, label="Total", color="red")

sns.despine(left=True, bottom=True)

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...