import matplotlib.pylab as plt
import dclab

ds = dclab.new_dataset("data/example_traces.rtdc")
# event index to plot
idx = 8
# measuring time
samples = ds.config["fluorescence"]["samples per event"]
sample_rate = ds.config["fluorescence"]["sample rate"]
t = np.arange(samples) / sample_rate * 1e6

fig, axes = plt.subplots(nrows=3, sharex=True, sharey=True)

# fluorescence traces (colors manually chosen to represent filter set)
axes[0].plot(t, ds["trace"]["fl1_median"][idx], color="#16A422",
             label=ds.config["fluorescence"]["channel 1 name"])
axes[1].plot(t, ds["trace"]["fl2_median"][idx], color="#CE9720",
             label=ds.config["fluorescence"]["channel 2 name"])
axes[2].plot(t, ds["trace"]["fl3_median"][idx], color="#CE2026",
             label=ds.config["fluorescence"]["channel 3 name"])

# detected peak widths
axes[0].axvline(ds["fl1_pos"][idx] + ds["fl1_width"][idx]/2, color="gray")
axes[0].axvline(ds["fl1_pos"][idx] - ds["fl1_width"][idx]/2, color="gray")
axes[1].axvline(ds["fl2_pos"][idx] + ds["fl2_width"][idx]/2, color="gray")
axes[1].axvline(ds["fl2_pos"][idx] - ds["fl2_width"][idx]/2, color="gray")
axes[2].axvline(ds["fl3_pos"][idx] + ds["fl3_width"][idx]/2, color="gray")
axes[2].axvline(ds["fl3_pos"][idx] - ds["fl3_width"][idx]/2, color="gray")

# axes labels
axes[1].set_ylabel("fluorescence intensity [a.u.]")
axes[2].set_xlabel("time [µs]")

for ax in axes:
    ax.set_xlim(200, 350)
    ax.grid()
    ax.legend()

plt.show()