/** * Constructs a title using the unicode methods of the UnitLabel * @param workspace The workspace containing the Y title information * @param plottingDistribution If true, the Y axis has been divided by the bin * width */ void PlotAxis::titleFromYData(const Mantid::API::MatrixWorkspace &workspace, const bool plottingDistribution) { // The workspace can have a custom label so we should use that as a // preference. // The workspace.YUnitLabel does some mangling of the string if the user set // no // custom label. See MatrixWorkspace::YUnitLabel const std::string customLabel = workspace.YUnitLabel(); const std::string yunit = workspace.YUnit(); if ((yunit == customLabel) || (customLabel.find("per") != std::string::npos)) { m_title = QString::fromStdString(yunit); if (plottingDistribution && workspace.axes() > 0 && workspace.getAxis(0)->unit()) { const auto xunit = workspace.getAxis(0)->unit(); const auto lbl = xunit->label(); if (!lbl.utf8().empty()) { m_title += " (" + QString::fromStdWString(lbl.utf8()) + ")" + QString::fromWCharArray(L"\u207b\u00b9"); } } } else { m_title = QString::fromStdString(customLabel); } }
/** * @param workspace A reference to the workspace object that this data refers to */ void QwtWorkspaceBinData::init(const Mantid::API::MatrixWorkspace &workspace) { if(workspace.axes() != 2) { std::ostringstream os; os << "QwtWorkspaceBinData(): Workspace must have two axes, found " << workspace.axes(); throw std::invalid_argument(os.str()); } // Check binIndex is valid if(static_cast<size_t>(m_binIndex) >= workspace.blocksize()) { std::ostringstream os; os << "QwtWorkspaceBinData(): Index out of range. index=" << m_binIndex << ", nvalues=" << workspace.blocksize(); throw std::out_of_range(os.str()); } // Fill vectors of data const size_t nhist = workspace.getNumberHistograms(); auto* vertAxis = workspace.getAxis(1); //supplies X values m_X.resize(nhist); m_Y.resize(nhist); m_E.resize(nhist); for(size_t i = 0; i < nhist; ++i) { m_X[i] = vertAxis->getValue(i); m_Y[i] = workspace.readY(i)[m_binIndex]; m_E[i] = workspace.readE(i)[m_binIndex]; } // meta data m_xTitle = MantidQt::API::PlotAxis(workspace, 1).title(); m_yTitle = MantidQt::API::PlotAxis(workspace).title(); }