绘制开始结束时隙 - matplotlib python
Plot start-end time slots - matplotlib python
我正在尝试绘制时间段。我有两个 'start' 和 'end' 点的 ndarrays。
我想把它画成图形上的块。请记住,块不是连续的,并且插槽之间存在间隙。
到目前为止,我一直在尝试使用补丁:
for x_1 , x_2 in zip(s_data['begin'].values ,s_data['end'].values):
ax1.add_patch(Rectangle((x_1,0),x_2-x_1,0.5))
plt.show()
但它只给我半个蓝色的数字。
虽然我想要这样的东西
方法正确。您只需要缩放轴,使完整的图在其范围内。
import matplotlib.pyplot as plt
import pandas as pd
df = pd.DataFrame({"begin": [1,4,6,9], "end" : [3,5,8,12]})
fig, ax = plt.subplots()
for x_1 , x_2 in zip(df['begin'].values ,df['end'].values):
ax.add_patch(plt.Rectangle((x_1,0),x_2-x_1,0.5))
ax.autoscale()
ax.set_ylim(-2,2)
plt.show()
值得注意的是,matplotlib有一个函数broken_barh
,可以简化此类图表的创建
import matplotlib.pyplot as plt
import pandas as pd
df = pd.DataFrame({"begin": [1,4,6,9], "end" : [3,5,8,12]})
fig, ax = plt.subplots()
ax.broken_barh(list(zip(df["begin"].values, (df["end"] - df["begin"]).values)), (0, 0.5))
ax.set_ylim(-2,2)
plt.show()
给出同上图
我正在尝试绘制时间段。我有两个 'start' 和 'end' 点的 ndarrays。 我想把它画成图形上的块。请记住,块不是连续的,并且插槽之间存在间隙。
到目前为止,我一直在尝试使用补丁:
for x_1 , x_2 in zip(s_data['begin'].values ,s_data['end'].values):
ax1.add_patch(Rectangle((x_1,0),x_2-x_1,0.5))
plt.show()
但它只给我半个蓝色的数字。
虽然我想要这样的东西
方法正确。您只需要缩放轴,使完整的图在其范围内。
import matplotlib.pyplot as plt
import pandas as pd
df = pd.DataFrame({"begin": [1,4,6,9], "end" : [3,5,8,12]})
fig, ax = plt.subplots()
for x_1 , x_2 in zip(df['begin'].values ,df['end'].values):
ax.add_patch(plt.Rectangle((x_1,0),x_2-x_1,0.5))
ax.autoscale()
ax.set_ylim(-2,2)
plt.show()
值得注意的是,matplotlib有一个函数broken_barh
,可以简化此类图表的创建
import matplotlib.pyplot as plt
import pandas as pd
df = pd.DataFrame({"begin": [1,4,6,9], "end" : [3,5,8,12]})
fig, ax = plt.subplots()
ax.broken_barh(list(zip(df["begin"].values, (df["end"] - df["begin"]).values)), (0, 0.5))
ax.set_ylim(-2,2)
plt.show()
给出同上图