尝试使用Matplotlib在条形图上绘制线图

OPa*_*ker 2 python plot matplotlib

我正在尝试使用MatPlotLib在条形图上绘制线图.到目前为止,我已经显示了两个图,但是我无法获得具有不同比例的辅助y轴.当我尝试在其中放入另一个时,会覆盖原始比例.我的代码如下

def hridef_base(x):
if x == 1:

    deltatlapexit = ExitSummary['Avg tLap'] - ExitSummary2['Avg tLap']

    plt.figure()
    index = (EntrySummary.index + 1)
    barwidth = 0.2

    plt.ylim(0.0, 65.0)
    plt.bar(index-barwidth, EntrySummary['Avg FRH'], barwidth, color='r', yerr=EntrySummary['FRH StDev'], ecolor='k', label='Entry')
    plt.bar(index, ApexSummary['Avg FRH'], barwidth, color='#4169E1', yerr=ApexSummary['FRH StDev'], ecolor='k', label='Apex')
    plt.bar(index+barwidth, ExitSummary['Avg FRH'], barwidth, color='#32CD32', yerr=ExitSummary['FRH StDev'], ecolor='k', label='Exit')

    plt.plot(index, deltatlapexit, color='k', label='Entry')

    plt.xlabel('Turn Number')
    plt.ylabel('Average FRideH')
    plt.title('Average FRideH for Baseline setup')
    plt.xticks(index)
    plt.legend()

else:
    print "Baseline FRideH Not Selected"
Run Code Online (Sandbox Code Playgroud)

有关此事的任何建议值得赞赏,但请告诉我该做什么,而不是发布网站链接.我需要明白为什么我无法做到这一点.

先感谢您.如果我错过了什么,请评论.

UPDATE

由于下面的评论,图表现在有两个单独的y轴.条形数据的y标签如何跳到右边,如果我尝试绘制y-label线,我会得到一个属性错误.

def hridef_base(x):
if x == 1:

    deltatlapexit = ExitSummary['Avg tLap'] - ExitSummary2['Avg tLap']

    fig, axis1 = subplots()
    index = (EntrySummary.index + 1)
    barwidth = 0.2

    axis1.ylim(0.0, 65.0)
    axis1.bar(index-barwidth, EntrySummary['Avg FRH'], barwidth, color='r', yerr=EntrySummary['FRH StDev'], ecolor='k', label='Entry')
    axis1.bar(index, ApexSummary['Avg FRH'], barwidth, color='#4169E1', yerr=ApexSummary['FRH StDev'], ecolor='k', label='Apex')
    axis1.bar(index+barwidth, ExitSummary['Avg FRH'], barwidth, color='#32CD32', yerr=ExitSummary['FRH StDev'], ecolor='k', label='Exit')

    axis2 = axis1.twinx()
    axis2.set_ylim(-10.0, 10.0)
    axis2.plot(index, deltatlapexit, color='k', label='tDelta')

    axis1.xlabel('Turn Number')
    axis1.ylabel('Average FRideH')
    axis2.set_ylabel('tDelta')
    axis1.title('Average FRideH for Baseline setup')
    axis1.xticks(index)
    axis1.legend()
    axis2.legend()

else:
    print "Baseline FRideH Not Selected"
Run Code Online (Sandbox Code Playgroud)

我会插入一张图片,但我需要10个代表点......

我收到的错误是:NameError:未定义全局名称'subplots'

小智 6

我没有您的数据,但是使用matplotlib中的条形图示例,这是一个带条形图和线图的示例,带有独立缩放的y轴:

从matplotlib导入pyplot作为plt import numpy as np

plt.figure()          
N = 5
menMeans = (20, 35, 30, 35, 27)
menStd = (2, 3, 4, 1, 2)
width = 0.35       # the width of the bars
womenMeans = (25, 32, 34, 20, 25)
womenStd = (3, 5, 2, 3, 3)    
ind = np.arange(N)
plt.ylim(0.0, 65.0)
plt.bar(ind, menMeans, width, color='r', yerr=menStd, label='Men means')
plt.bar(ind+width, womenMeans, width, color='y', yerr=womenStd, label='Women means')
plt.ylabel('Bar plot')      

x = np.linspace(0, N)
y = np.sin(x)
axes2 = plt.twinx()
axes2.plot(x, y, color='k', label='Sine')
axes2.set_ylim(-1, 1)
axes2.set_ylabel('Line plot')

plt.show()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述