% XY graph of data and estimates
function XYPlotEsts(req, propName)

    % Initialize arrays
    dflag = false; eflag = false;
    data = []; ests = [];

    % Retrieve all entities property values
    for ent = req.entities

        % Search for matching property
        for prp = ent.props

            % Check for matching name
            if prp.name == propName
    
                % Check for estimate, single datum
                if prp.status == "Estimated"
                    eflag = ~isempty(prp.data);
                    if eflag 
                        est = prp.data(1).value;
                    end
                end

                % Check for datum, single datum
                if prp.status == "Active"
                    dflag = ~isempty(prp.data);
                    if dflag 
                        dtm = prp.data(1).value;
                    end
                end

                % Check for datum and estimate
                if (dflag && eflag)
                    data(end+1) = dtm;
                    ests(end+1) = est;
                    break;
                end

            % End property
            end

        % End properties
        end

        % Reset values
        dflag = false;
        eflag = false;

    % End entities
    end

    % Generate graph
    plot(data, ests, ".")
    hold on
        
    % Modify display
    fontsize(16, "points")
    xlabel("Data Values")
    ylabel("Estimates")
    title(propName)
    grid on

    % Calculate limits
    d1 = min([data, ests]);
    d2 = max([data, ests]);
    diag = [d1 d2];
    xlim([d1, d2])
    ylim([d1, d2])

    % Add dialog line
    plot(diag, diag, "-")

    % Reset options
    hold off

end