如何在海洋条形图上添加点?

时间:2019-01-29 15:15:02

标签: python matplotlib plot seaborn

如何将点放在seaborn条形图上?以下代码生成条形图。

import matplotlib.pyplot as plt
import seaborn
import matplotlib
matplotlib.use('TkAgg')
seaborn.set_context('talk')

data_df = pandas.DataFrame([3, 1, 2, 4], index=['a', 'b', 'c', 'd']).transpose()
points_df = pandas.DataFrame([3.5, 0.5, 1.75, 4.25], index=['a', 'b', 'c', 'd']).transpose()
plt.figure()
seaborn.barplot(data=data_df)

plt.show()

enter image description here

现在如何在points_df中添加数据作为该图上的红点?

2 个答案:

答案 0 :(得分:1)

您可以使用pointplot中的seaborn通过join=False并使用zorder将红点绘制在前面。此处的关键是定义轴实例ax并将其传递到两个图。

import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
import matplotlib
matplotlib.use('TkAgg')
seaborn.set_context('talk')

fig, ax = plt.subplots()

data_df = pd.DataFrame([3, 1, 2, 4], index=['a', 'b', 'c', 'd']).transpose()
points_df = pd.DataFrame([3.5, 0.5, 1.75, 4.25], index=['a', 'b', 'c', 'd']).transpose()
sns.barplot(data=data_df, ax=ax, zorder=0)
sns.pointplot(data=points_df, join=False, color='red', ax=ax, zorder=1)

enter image description here

答案 1 :(得分:1)

这是您要寻找的吗?

zorder

由于某种原因,我不得不更改点的#ifdef DO_LOG #include <iostream> #define LOG std::cerr #else class nullstr {}; template<typename T> nullstr operator<<(nullstr s, T const&) { return s; } #define LOG if (false) nullstr() #endif ,否则某些点会隐藏在条形图后面

enter image description here