开源 企业版 高校版 私有云 模力方舟 AI 队友
代码拉取完成,页面将自动刷新
捐赠
捐赠前请先登录
扫描微信二维码支付
取消
支付完成
支付提示
将跳转至支付宝完成支付
确定
取消
1 Star 0 Fork 17

MsBin/UpperComputer

forked from 张杰sc/UpperComputer
加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
已有帐号? 立即登录
文件
master
分支 (1)
master
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
项目仓库所选许可证以仓库主分支所使用许可证为准
master
分支 (1)
master
克隆/下载
克隆/下载
提示
下载代码请复制以下命令到终端执行
为确保你提交的代码身份被 Gitee 正确识别,请执行以下命令完成配置
初次使用 SSH 协议进行代码克隆、推送等操作时,需按下述提示完成 SSH 配置
1 生成 RSA 密钥
2 获取 RSA 公钥内容,并配置到 SSH公钥
在 Gitee 上使用 SVN,请访问 使用指南
使用 HTTPS 协议时,命令行会出现如下账号密码验证步骤。基于安全考虑,Gitee 建议 配置并使用私人令牌 替代登录密码进行克隆、推送等操作
Username for 'https://gitee.com': userName
Password for 'https://userName@gitee.com': # 私人令牌
master
分支 (1)
master
upper-computer
/
Customplot
/
spectrumplotwrap.cpp
upper-computer
/
Customplot
/
spectrumplotwrap.cpp
spectrumplotwrap.cpp 5.58 KB
一键复制 编辑 原始数据 按行查看 历史
张杰sc 提交于 2024年07月22日 19:24 +08:00 . first init
#include <algorithm>
#include <QDebug>
#include "spectrumplotwrap.h"
#include "DialogCustomPlot.h"
#include "spectrumplotwrap.h"
SpectrumPlotWrap::SpectrumPlotWrap(QCustomPlot *plot, QSettings *set)
{
_plot=plot;
_set=set;
_plot->setInteractions(QCP::iRangeDrag | QCP::iRangeZoom | QCP::iSelectAxes |
QCP::iSelectLegend | QCP::iSelectPlottables);
_plot->yAxis->setRange(-100,30000);
//"波长[nm]", "强度"
_plot->xAxis->setLabel("波长[nm]");
_plot->yAxis->setLabel("强度");
_title = new QCPTextElement(_plot, "光谱", QFont("sans", 12, QFont::Bold));
_title->setVisible(true);
_plot->plotLayout()->insertRow(0);
_plot->plotLayout()->addElement(0,0,_title);
connect(_plot,&QCustomPlot::mouseDoubleClick,this,&SpectrumPlotWrap::ShowInitDialog);
_lockAxis=false;
_upper=2000;
GetPlotConfig(_lockAxis,_upper);
connect(_plot, SIGNAL(mousePress(QMouseEvent*)), this, SLOT(mousePress()));
connect(_plot, SIGNAL(mouseWheel(QWheelEvent*)), this, SLOT(mouseWheel()));
}
void SpectrumPlotWrap::mousePress()
{
// if an axis is selected, only allow the direction of that axis to be dragged
// if no axis is selected, both directions may be dragged
if (_plot->xAxis->selectedParts().testFlag(QCPAxis::spAxis))
_plot->axisRect()->setRangeDrag(_plot->xAxis->orientation());
else if (_plot->yAxis->selectedParts().testFlag(QCPAxis::spAxis))
_plot->axisRect()->setRangeDrag(_plot->yAxis->orientation());
else
_plot->axisRect()->setRangeDrag(Qt::Horizontal|Qt::Vertical);
}
void SpectrumPlotWrap::mouseWheel()
{
// if an axis is selected, only allow the direction of that axis to be zoomed
// if no axis is selected, both directions may be zoomed
if (_plot->xAxis->selectedParts().testFlag(QCPAxis::spAxis))
_plot->axisRect()->setRangeZoom(_plot->xAxis->orientation());
else if (_plot->yAxis->selectedParts().testFlag(QCPAxis::spAxis))
_plot->axisRect()->setRangeZoom(_plot->yAxis->orientation());
else
_plot->axisRect()->setRangeZoom(Qt::Horizontal|Qt::Vertical);
}
void SpectrumPlotWrap::ShowInitDialog()
{
DialogCustomPlot dialog(_lockAxis,_upper);
dialog.exec();
SetPlotConfig(_lockAxis,_upper);
}
void SpectrumPlotWrap::SetXYLabel(QString xLabel, QString yLabel)
{
_plot->xAxis->setLabel(xLabel);
_plot->yAxis->setLabel(yLabel);
}
void SpectrumPlotWrap::SetGraph(QStringList names)
{
_plot->clearGraphs();
for(int i=0;i<names.count();i++)
{
QPen pen;
double period = 2 * M_PI;
double red = qSin(i * 0.5 + 1.2) * 127 + 128;
double green = qSin(i * 0.5 + 0.0) * 127 + 128;
double blue = qSin(i * 0.3 + 1.5) * 127 + 128;
pen.setColor(QColor(static_cast<int>(red), static_cast<int>(green), static_cast<int>(blue)));
// pen.setColor(QColor(qSin(i*0.5+1.2)*160+80, qSin(i*0.3+0)*80+80, qSin(i*0.3+1.5)*80+80));
pen.setWidthF(0.8);
_plot->addGraph();
_plot->graph()->setPen(pen); // 曲线的颜色
_plot->graph()->setName(names.at(i));
}
_plot->legend->setVisible(true);
_plot->axisRect()->insetLayout()->setInsetAlignment(0,Qt::AlignBottom|Qt::AlignRight);
}
void SpectrumPlotWrap::SetColors(QList<QColor> colors)
{
for(int i=0;i<colors.count();i++)
{
QPen pen;
pen.setColor(colors.at(i));
pen.setWidthF(0.8);
_plot->graph(i)->setPen(pen);
}
}
int SpectrumPlotWrap::GraphCount()
{
return _plot->graphCount();
}
void SpectrumPlotWrap::Plot(const QList<QPointF> &item,int index)
{
QVector<double> x,y;
x.clear();
y.clear();
foreach (auto p, item) {
x.append(p.x());
y.append(p.y());
}
_plot->graph(index)->setData(x,y,true);
_plot->xAxis->rescale();
if(_lockAxis)
{
_plot->yAxis->setRangeUpper(_upper);
}
else
{
_plot->yAxis->rescale();
}
_plot->replot();
}
void SpectrumPlotWrap::plotXY(const QList<double> &x, const QList<double> &y, int index, const QString &lineType)
{
QCPGraph *graph = _plot->graph(index);
if(graph==nullptr)
{
qDebug()<<__FUNCTION__<<__LINE__;
}
qDebug()<<__FUNCTION__<<__LINE__<<graph;
if (lineType == "p") {
graph->setScatterStyle(QCPScatterStyle(QCPScatterStyle::ssDisc, 5));
graph->setLineStyle(QCPGraph::lsNone);
} else {
graph->setLineStyle(QCPGraph::lsLine);
}
qDebug()<<__FUNCTION__<<__LINE__;
graph->setData(x.toVector(), y.toVector());
double maxy=*std::max_element(y.begin(), y.end());
_plot->yAxis->setRange(-(maxy) * 0.1, (maxy) * 1.1);
_plot->xAxis->rescale();
_plot->replot();
}
void SpectrumPlotWrap::Clear(int index)
{
_plot->graph(index)->setData(QVector<double>(),QVector<double>());
_plot->replot();
}
void SpectrumPlotWrap::Plot(const QList<QList<QPointF> > &items)
{
for(int row=0;row<_plot->graphCount();row++)
{
Plot(items.at(row),row);
}
}
void SpectrumPlotWrap::SetTitle(QString title)
{
_title->setText(title);
_plot->replot();
}
void SpectrumPlotWrap::SetPlotConfig(bool lockAxis,double upper)
{
if(_set==nullptr)
{
return;
}
QSettings *set=_set;
set->beginGroup("PlotConfig");
set->setValue("LockAxis",lockAxis);
set->setValue("Upper",upper);
set->endGroup();
}
void SpectrumPlotWrap::GetPlotConfig(bool &lockAxis,double &upper)
{
if(_set==nullptr)
{
return;
}
QSettings *set=_set;
set->beginGroup("PlotConfig");
lockAxis=set->value("LockAxis",false).toBool();
upper=set->value("Upper",2000.0).toDouble();
set->endGroup();
}
Loading...
举报
举报成功
我们将于2个工作日内通过站内信反馈结果给你!
请认真填写举报原因,尽可能描述详细。
请选择举报类型
取消
发送
误判申诉

此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。

如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。

取消
提交

发行版

暂无发行版

贡献者

全部

近期动态

不能加载更多了
编辑仓库简介
简介内容
主页
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/MsBin/upper-computer.git
git@gitee.com:MsBin/upper-computer.git
MsBin
upper-computer
UpperComputer
master
点此查找更多帮助

搜索帮助

评论
仓库举报
回到顶部
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册

AltStyle によって変換されたページ (->オリジナル) /