说有两个数据集:一个大的“背景”集和一个更小的“前景”集。前景集来自背景,但可能要小得多。
我有兴趣以有序的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)
为什么这种方法行不通?什么是更好的方法?
答案 0 :(得分:1)
Seaborn 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)