混合图形
matplotlib中实现混合图形的基本原理非常简单,就是多个图形元素的直接叠加。
ax1 = sns.kdeplot(ccss.s3)
# 使用seaborn生成叠加图
ax1 = sns.kdeplot(ccss.s3)
sns.histplot(data = ccss, x = 's3', stat = 'density', ax = ax1)
# 混合使用seaborn和matplotlib生成叠加图
ax1 = sns.kdeplot(ccss.s3)
ax1.hist(ccss.s3, density = True)
# 进一步的简化写法
sns.kdeplot(ccss.s3).hist(ccss.s3, density = True)
双轴图
使用pandas实现
matplotlib中可以直接设置双轴图,但更简便的方法是直接使用pandas.plot()中相应的功能实现。
# 只使用第二y轴
ccss.plot.kde(y = 'index1', secondary_y = True)
# 同时使用双轴,并指定使用第二y轴的变量
ccss.loc[:,['index1', 's3']].plot.kde()
# 同时使用双轴,并指定使用第二y轴的变量
ccss.loc[:,['index1', 's3']].plot.kde(secondary_y = 's3')
用matplotlib实现
Axes.twinx():建立一个新的Axes对象,该对象拥有独立的y轴,且该轴位于右侧。x轴则不可见(共用原有对象的x轴)
# 建立一个空白双轴图
plt.gca().twinx()
# 设置第一y轴对应的图形
ccss.index1.plot.kde(label = 'index1')
plt.gca().set_ylabel('$Index1$')
# 设置第二y轴对应的图形
ax2 = plt.gca().twinx()
sns.kdeplot(ccss.s3, legend = None, ax = ax2)
ax2.set_ylabel('$S3$')