通过将绝对频率除以事件总数得到箱内事件的相对频率。
因此,您需要计算直方图,例如,与numpy的
hist, bins = np.histogram(x)
根据您是否然后通过事件的数量每一段内分裂,或总事件数就可以得到不同的地块。
从左手边的人可以轻松掌握例如在更长的时间内命中率更高(当然这对真实数据可能没有意义)。从右边的情节来看,你应该明白,对于中等时钟时间进行了更多的试验 - 如果只显示相对命中,那么根本没有看到。
from __future__ import division
import pandas as pd
import numpy as np; np.random.seed(2)
import matplotlib.pyplot as plt
t = np.random.rand(100)*24
hit = np.random.randint(0,2, size=100)
df = pd.DataFrame({"time":t, "hits":hit})
df_miss=df[df.hits == 0]
df_hits=df[df.hits == 1]
bins=np.arange(0,28,4)
hist_hits, bins_ = np.histogram(df_hits.time, bins=bins)
hist_miss, bins_ = np.histogram(df_miss.time, bins=bins)
rel_hits = hist_hits/(hist_hits+hist_miss)*100.
rel_miss = hist_miss/(hist_hits+hist_miss)*100.
rel_hits_n = hist_hits/np.sum(hist_hits+hist_miss)*100.
rel_miss_n = hist_miss/np.sum(hist_hits+hist_miss)*100.
fig , (ax, ax2) = plt.subplots(ncols=2, figsize=(7,3))
ax.bar(bins[:-1], rel_hits, width=4,
color="mediumseagreen", align="edge", ec="k")
ax.bar(bins[:-1], rel_miss, bottom=rel_hits, width=4,
color="tomato", align="edge", ec="k")
ax.set_xticks(bins)
ax.set_ylabel("relative hits and misses [%]")
ax2.bar(bins[:-1], rel_hits_n, width=4,
color="mediumseagreen", align="edge", ec="k", label="hit")
ax2.bar(bins[:-1], rel_miss_n, bottom=rel_hits_n, width=4,
color="tomato", align="edge", ec="k", label="miss")
ax2.set_xticks(bins)
ax2.set_ylabel("normalized hits and misses [%]")
plt.legend()
plt.tight_layout()
plt.show()
后的一些数据。 – Serenity
@serenity在这里你去 – badhairdude