Qwt中坐标轴的设置
来源:互联网 发布:物流信息软件 编辑:程序博客网 时间:2024/04/29 02:17
1自定义坐标轴
x轴设置为系统时间(分钟,秒数)代码如下
class TimeScaleDraw: public QwtScaleDraw //自画坐标轴
{
public:
TimeScaleDraw()
{
}
virtual QwtText label( double v ) const //重绘坐标轴 刻度值
{
QDateTime dt;
dt.setTime_t((int)v); //获取时间
return dt.toString("mm:ss"); //转变为字符串 分秒 在刻度为最长的位置显示值
}
};
setAxisScaleDraw(QwtPlot::xBottom,new TimeScaleDraw());setAxisScale(QwtPlot::xBottom, QDateTime::currentDateTime().toTime_t() - 10, QDateTime::currentDateTime().toTime_t()); //标尺范围
y轴设置为只让某些数值显示
class VScaleDraw: public QwtScaleDraw //自画坐标轴
{
public:
VScaleDraw()
{
}
virtual QwtText label( double v ) const //重绘坐标轴 刻度值
{
return QwtText( QString::number( v/10 ) ); //默认的 大刻度的时候 才会显示
}
};
setAxisScaleDraw(QwtPlot::yLeft,new VScaleDraw()); //不能与自动伸缩同时使用setAxisScale( QwtPlot::yLeft, 0.0, 100.0 );
y轴坐标显示的刻度值就不是0-100而是0-10之间
2 坐标轴间隔的设置
x轴设置的范围
setAxisScale( QwtPlot::yBottom, 0.0, 100.0 );
设置x轴显示的最大间隔数最多为10,将范围分为了10个大间隔,也就是显示x轴长刻度值的时候为0;10;20;30;40;50;60;70;80;90;100
setAxisMaxMajor( QwtPlot::xBottom, 10 );
将上述x轴的每个大间隔设置为显示最多5个小间隔,也就是将长刻度值0与10之间分为了5个小间隔: 0 2 4 6 8 10 其中2\4\6\8为短刻度值
setAxisMaxMinor( QwtPlot::xBottom, 5 );
上述中的显示的间隔数都得到了是最多,坐标轴的值由于某种原因(缩放操作,动态增长等)会导致对应的大小间隔发生变化。
3 坐标轴中长\短刻度的设置
设置Y坐标轴的长\短刻度,注设置MajorTick的数值,就会显示自定义坐标轴设置显示的刻度值
void datadisplay::setaxis_tick()
{
QList<double> ticks[QwtScaleDiv::NTickTypes];
ticks[QwtScaleDiv::MajorTick] << 0 << 10 ; //0和10处显示长刻度,坐标轴也只显示0与10
for( int i = 1; i < 10; i++)ticks[QwtScaleDiv::MajorTick] << i;//1-9显示短刻度
QwtScaleDiv scaleDiv(
ticks[QwtScaleDiv::MajorTick].first(),
ticks[QwtScaleDiv::MajorTick].last(),
ticks );
setAxisScaleDiv(QwtPlot::yLeft, scaleDiv);
}
4 设置坐标轴自动伸缩
设置Y坐标轴自动伸缩。根据绘图数据自动控制Y坐标轴。
setAxisAutoScale(QwtPlot::yLeft, true);
注如果是自定义坐标轴,便不能使用坐标轴自动伸缩
5 设置坐标轴中刻度的样式
void datadisplay::set_tick_style()
{
for ( int i = 0; i < QwtPlot::axisCnt; i++ ) //遍历轴
{
QwtScaleWidget *scaleWidget = axisWidget( i ); //0是yleft 2是xbottom axisCnt是枚举型 F2一下就知道 四个轴对应的数值
if ( scaleWidget )
scaleWidget->setMargin( 0 ); //设置刻度值与坐标轴的间隔
QwtScaleDraw *scaleDraw = axisScaleDraw( i );
if ( scaleDraw )
scaleDraw->enableComponent( QwtAbstractScaleDraw:: Backbone, false ); //设置刻度值样式 true表示禁用 false表示可用
}
//设置对齐画布、坐标轴、刻度
plotLayout()->setAlignCanvasToScales( true );
}
1 0
- Qwt中坐标轴的设置
- QWT坐标轴的设置
- Qwt中删除坐标轴之间的空隙
- 在MATLAB中设置坐标轴的函数
- Qwt 自定义坐标轴tick
- 设置坐标轴的步长?
- matlab坐标轴的设置
- 坐标轴范围的设置
- MATLAB中坐标轴设置自己想要的文字
- 关于Dev Express中chartControl控件设置坐标轴的范围
- Matlab绘图坐标轴的设置
- 设置坐标轴
- Matlab中 plot 绘图坐标轴设置
- Qwt中picker(拾取器)显示设置
- gnuplot 设置坐标轴名称的位置
- matlb中如何设置坐标轴的参数以及进行绘图的如何进行注释
- Matlab中绘制带箭头的坐标轴
- Qt中对坐标轴的相关操作
- java多线程下载文件
- Android RadioGroup和RadioButton案例及详解
- 字符串与数字转换-C语言
- 【KMP+矩阵加速】BZOJ1009[HNOI2008]GT考试
- Java面试题集(86-115)
- Qwt中坐标轴的设置
- Wireshark与设备解析字节不一致问题
- Java面试题集(116-135)
- Java面试题集(136-150)
- 第三天笔记,今天听的有点晕,幸好公司年会,我们放3天假,所以慢慢复习吧
- [MySQL]调整MySQL参数提高写入速度
- Java面试题集(151-180)
- Android定制RadioButton样式三种实现方法
- POJ 3159 Candies