如果我运行以下代码:
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')
我编写的代码的问题在于,如果我有一个巨大的数据框,那么遍历所有行将花费很长时间。
是否有更快的方法来获得相同的输出?
欢迎使用matplotlib或解决方案。
答案 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'
)