Заполненные панели ошибок в matplotlib (прямоугольники)

Можно ли сделать такой сюжет в matplotlib? Я забочусь только о красных прямоугольниках, кресты легко сделать сerrorbar.

Ответы на вопрос(2)

Решение Вопроса

к несчастью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()

 tmdavison16 июн. 2016 г., 17:31
@tcaswell: конечно. Я думаю, что я сделал это (вexamples/statistics), но я новичок в Git, поэтому, пожалуйста, дайте мне знать, если я сделал что-то не так :)
 tacaswell16 июн. 2016 г., 16:47
Можете ли вы представить это в качестве примера в документах mpl?

Рисовать квадраты действительно легкоmatplotlib.patchesНапример:

import matplotlib.pyplot as pl
import matplotlib.patches

pl.figure()
ax = pl.gca()
ax.add_patch(
   matplotlib.patches.Rectangle(
       (1.0, 1.0), # x, y
       2.0,        # width
       2.0,        # height
       color='r', alpha=0.5
   ) )
ax.set_aspect(1)

pl.xlim(0,4)
pl.ylim(0,4)

 Bart16 июн. 2016 г., 10:12
Ах, вот так. Извините, тогда я неверно истолковал ваш вопрос
 Bart16 июн. 2016 г., 10:13
Тогда я бы просто написал небольшую функцию-обертку дляpl.errorbar автоматизировать комбинацию ошибки бар + прямоугольник
 Ruggero Turra16 июн. 2016 г., 10:11
нарисовать один квадрат действительно легко ... Я надеялся, что был более простой метод, так сказатьerrorbar: "рисовать прямоугольники"

Ваш ответ на вопрос