如何修改Matplotlib直方图的输出以创建新的修改直方图(不丢失同步)

2024-09-28 21:57:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我是python新手,我想知道如何计算直方图,并修改输出以创建不同的图形。你知道吗

现在我显示的直方图中有两个数据集(失败和成功)

enter image description here

我想做的是,将两个柱状图条转换成成功率的百分比度量

这是生成这个图形的代码。。。你知道吗

def GetCol(inData, col=None, equals=None):
    if( equals is not None ):
        sub_index = inData[col] == equals
        return inData[sub_index]

    elif( col is not None ):
        return inData[col]

    else:
        return inData   

# Creates and returns a fig with histogram comparies col values - using cols shared by success and failed features
def GetHistogram_Success_Vs_Failure(success, failed, binCount=20, xlbl='', ylbl=''):
    fig, (ax1) = plt.subplots(1, 1)

    n, bins, patches = ax1.hist([failed, success], bins=binCount, align='left', color=['red','blue'], label=['Stopouts','Winners'])    

    ax1.set_xlabel(xlbl, fontsize=18)
    ax1.set_ylabel(ylbl, fontsize=18)
    ax1.legend(loc='upper right')   

    return fig, ax1

# get the data
data = pd.read_csv("D:\\python\\Quant testing\\Candle Body Experiment\\CandleBodySignal_EA.csv")

#replace spaces with '_' and all to lower case
data.columns = [col.replace(' ', '_') for col in data.columns]

success = GetCol(data, "Closed_In_Favor", 1)
fail = GetCol(data, "Closed_In_Favor", 0)

title = "AUDUSD 6 Hour Data 2015-2018"

measureAtCol = "Candle_Body_As_ATR(100)_PCT"
colLabel = "Candle Body Percentage of ATR"

fig, ax1 = GetHistogram_Success_Vs_Failure(success[measureAtCol], fail[measureAtCol], 80, colLabel, "Num Trades")

plt.xlim(xmin=-20, xmax = 300)
tick_spacing = 20
ax1.xaxis.set_major_locator(ticker.MultipleLocator(tick_spacing))
plt.xticks(fontsize=12)
plt.yticks(fontsize=12)
plt.title(title)
plt.show()

我知道我们可以利用直方图的返回值

fig, (ax1, ax2) = plt.subplots(2, 1)

n, bins, patches = ax1.hist([failed, success], bins=binCount, align='left', color=['red','blue'], label=['Stopouts','Winners'])

#try play with the histogram outputs
successSpread = n[0] - n[1]
ax2.plot(successSpread)

如何将修改后的数据保存在x轴的上下文中?你知道吗

你可以想象,如果我成功绘制Spread,数据将与原始直方图“不同步”,因为它缺少x数据点。你知道吗

非常感谢!你知道吗


Tags: 数据nonedatareturnfigpltcol直方图
1条回答
网友
1楼 · 发布于 2024-09-28 21:57:58

看起来你根本不想画直方图。相反,您希望使用两个直方图的值并计算出与之不同的值。你知道吗

bins = np.linspace(min(success.min(),failure.min()), max(success.max(),failure.max()), binCount)
nsuccess, _ = np.histogram(success, bins=bins)
nfail, _ = np.histogram(failure, bins=bins)

chance = nsuccess/(nsuccess+nfail)
plt.bar(bins[:-1], chance)

相关问题 更多 >