是否可以在matplotlib中进行这样的绘图?我只关心红色填充的矩形,使用errorbar
即可轻松完成十字。
最佳答案
不幸的是,errorbar
无法做到这一点,但是您可以根据自己的错误数据创建一个PatchCollection
,可以轻松地将其添加到轴中。请参阅此快速脚本,以获取有关如何执行此操作的示例。
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.collections import PatchCollection
from matplotlib.patches import Rectangle
# Number of data points
n=5
# Dummy data
x=np.arange(0,n,1)
y=np.random.rand(n)*5.
# Dummy errors (above and below)
xerr=np.random.rand(2,n)
yerr=np.random.rand(2,n)
# Create figure and axes
fig,ax = plt.subplots(1)
# Plot data points
ax.errorbar(x,y,xerr=xerr,yerr=yerr,fmt='None',ecolor='k')
# Function to plot error boxes
def makeErrorBoxes(xdata,ydata,xerror,yerror,fc='r',ec='None',alpha=0.5):
# Create list for all the error patches
errorboxes = []
# Loop over data points; create box from errors at each point
for xc,yc,xe,ye in zip(xdata,ydata,xerror.T,yerror.T):
rect = Rectangle((xc-xe[0],yc-ye[0]),xe.sum(),ye.sum())
errorboxes.append(rect)
# Create patch collection with specified colour/alpha
pc = PatchCollection(errorboxes,facecolor=fc,alpha=alpha,edgecolor=ec)
# Add collection to axes
ax.add_collection(pc)
# Call function to create error boxes
makeErrorBoxes(x,y,xerr,yerr)
# Add some space around the data points on the axes
ax.margins(0.1)
plt.show()
关于python - matplotlib中填充的误差线(矩形),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37852462/