QChart多个图布局使坐标轴对齐的方法
总体思路
Qt的QChart中并没有提供改变坐标原点位置的接口,因此无法简单的移动坐标原点。但是在多个图表需要在多个View中布局,同时显示多个数据进行对比,而坐标的单位和值会导致原点无法对齐严重影响美观和可视化问题。
虽然无法直接修改坐标原点位置,但是还是有办法保证布局中原点对齐,这里以两个水平分割的图表布局举例,主要思路如下:
1. 截取resizeEvent事件. 2. 获取两个QChartView中的QChart的Margins值和ploatArea的宽度. 3. 计算两个ploatArea的宽度差. 4. 在resizeEvent事件中通过设置Margins来使的两个QChart的左边margins相等就可以达到Y轴对齐了. 5. 同理可以调整X轴.
主要代码
margin_k = self.k_view.chart().margins() margin_v = self.v_view.chart().margins() width_k = self.k_view.chart().plotArea().width() width_v = self.v_view.chart().plotArea().width() sub = width_k - width_v if sub > 0: self.k_view.chart().setMargins(QMargins(margin_k.left() + sub, margin_k.top(), margin_k.right(), margin_k.bottom())) else: self.v_view.chart().setMargins(QMargins(margin_v.left() - sub, margin_v.top(), margin_v.right(), margin_v.bottom()))
效果预览