在多对点之间填充

时间:2019-05-10 13:46:28

标签: python pandas matplotlib plotly

如果我运行以下代码:

import pandas as pd
import matplotlib.pyplot as plt

df = pd.DataFrame({'start': [0, 3, 7], 'end': [1, 4, 8]})

fig, ax = plt.subplots()
for i in df.index:
    ax.fill_betweenx([0, 1], df.loc[i, 'start'], df.loc[i, 'end'], color='red')

我得到了如下输出: enter image description here

我编写的代码的问题在于,如果我有一个巨大的数据框,那么遍历所有行将花费很长时间。

是否有更快的方法来获得相同的输出?

欢迎使用matplotlib或解决方案。

1 个答案:

答案 0 :(得分:1)

如果您使用fill_between代替fill_betweenx,则可以

boundaries = df[['start', 'end', 'end']].to_numpy().ravel()

ax.fill_between(
    boundaries,
    np.zeros(len(boundaries)),
    np.ones(len(boundaries)),
    where=np.tile([True, True, False], len(df)),
    color='red'
)