您可以使用twinx()
方法与seaborn一起创建单独的y轴,一个用于线图,另一个用于条形图。要控制绘图的样式(seaborn的默认样式为darkgrid),可以使用set_style
方法并指定首选主题。如果将style = None
设置为白色背景而没有网格线,则会重置。您还可以尝试whitegrid
。如果您想进一步自定义网格线,可以在轴级别上使用ax2.grid(False)
。
import matplotlib
import matplotlib.pyplot as plt
import seaborn as sns
matplotlib.rc_file_defaults()
ax1 = sns.set_style(style=None, rc=None )
fig, ax1 = plt.subplots(figsize=(12,6))
sns.lineplot(data = df['y_var_1'], marker='o', sort = False, ax=ax1)
ax2 = ax1.twinx()
sns.barplot(data = df, x='x_var', y='y_var_2', alpha=0.5, ax=ax2)
ax2.plot()
? - kommradHomer您需要移除第二个坐标轴的网格线。请在代码中添加 ax2.grid(False)
。但是第二个坐标轴的y刻度线将不会与第一个y轴的刻度线对齐,就像这样:
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
import pandas as pd
fig = plt.figure()
ax1 = fig.add_subplot(111)
ax1.plot(pd.Series(np.random.uniform(0,1,size=10)), color='g')
ax2 = ax1.twinx()
ax2.plot(pd.Series(np.random.uniform(0,17,size=10)), color='r')
ax2.grid(False)
plt.show()