Qt圖形圖像開(kāi)發(fā)之曲線圖表模塊QChart庫(kù)坐標(biāo)軸和數(shù)據(jù)不對(duì)應(yīng)、密集的散點(diǎn)圖無(wú)法顯示問(wèn)題解決方法
QChart坐標(biāo)軸和數(shù)據(jù)不對(duì)應(yīng)問(wèn)題描述:
lineseries->append(4, 10); lineseries->append(5, 8); Chart->addSeries(lineseries); // 將 series 添加至圖表中 axisX->setRange(0, 15);//設(shè)置X的顯示范圍 axisY->setRange(-20, 20); lineChart->setAxisX(axisX);//把軸添加到圖表中 lineChart->setAxisY(axisY);
結(jié)果發(fā)現(xiàn),數(shù)據(jù)系列中的點(diǎn)(4,10)在坐標(biāo)系中的坐標(biāo)不是(4,10)
原因在于,軸和數(shù)據(jù)系列沒(méi)有連接。
一個(gè)圖表QChart中可以有多個(gè)數(shù)據(jù)系列(也即一個(gè)圖表中可以有多條曲線,甚至可以同時(shí)包含散點(diǎn)圖和折線),每個(gè)數(shù)據(jù)系列都必須與兩個(gè)坐標(biāo)軸相連接。
連接方法有兩種:
(1)在給圖表設(shè)置軸時(shí),順便與數(shù)據(jù)系列相連
lineChart->setAxisX(axisX, lineseries);//把軸添加到圖表中,同時(shí)把數(shù)據(jù)系列與這個(gè)軸相連
lineChart->setAxisY(axisY, lineseries);//
(2)單獨(dú)的語(yǔ)句把數(shù)據(jù)系列和軸相連(只有series已經(jīng)被添加進(jìn)chart之后,再執(zhí)行attachAxis才能有效)
lineseries->attachAxis(axisX);
lineseries->attachAxis(axisY);
密集的散點(diǎn)圖無(wú)法顯示問(wèn)題描述
如下圖所示:一個(gè)由1000個(gè)point組成的QScatterSeries,密集的部分顯示不出來(lái),只有放大之后才能看清。
更惡劣的情況是,把chartView縮小之后,最后只能看見(jiàn)最后一個(gè)點(diǎn)。

原因分析:QT繪制圖形時(shí),會(huì)用到QBrush和QPen,QPen用于繪制輪廓,QBrush用于繪制填充,默認(rèn)情況下,QScatterSeries繪制散點(diǎn)時(shí),用的QPen的顏色是白色的,也即繪出的散點(diǎn),帶白色邊框,圖像縮小之后,白色邊框把填充的紅色給遮擋住了。把散點(diǎn)放大之后,就能明白我說(shuō)的意思了
如下圖:

解決方法:給QScatterSeries設(shè)置QPen的粗細(xì)為0,或者透明,或者不使用QPen,均可解決這一問(wèn)題,示例代碼如下:
QScatterSeries scatterSeries; scatterSeries.setMarkerSize(25);//設(shè)置點(diǎn)的大?。▎挝唬合袼?cái)?shù)) scatterSeries.setMarkerShape(QScatterSeries::MarkerShapeCircle);//點(diǎn)的形狀:方形/圓形/自己用pen畫(huà) //方法1,設(shè)置畫(huà)筆的粗細(xì)為0 QPen pen; pen.setWidth(0); cntScatterSeries.setPen(pen); //方法2:把畫(huà)筆的顏色設(shè)置為透明 ScatterSeries.setPen(QPen(Qt::transparent)); //方法3:不使用畫(huà)筆(只用QBrush填充點(diǎn),) ScatterSeries.setPen(QPen(Qt::NoPen));//畫(huà)出的點(diǎn)不帶輪廓
效果如下:已經(jīng)沒(méi)有輪廓了,這樣即使把圖像縮小也不會(huì)被白色輪廓給遮擋住了

本文主要介紹了Qt曲線圖表模塊QChart庫(kù)坐標(biāo)軸和數(shù)據(jù)不對(duì)應(yīng)、密集的散點(diǎn)圖無(wú)法顯示問(wèn)題解決方法,更多關(guān)于Qt曲線圖表模塊QChart庫(kù)的知識(shí)請(qǐng)查看下面的相關(guān)鏈接
- 基于PyQt5制作一個(gè)數(shù)據(jù)圖表生成器
- Qt繪制圖表的實(shí)現(xiàn)
- Qt QChart 創(chuàng)建圖表的實(shí)現(xiàn)方法
- Qt圖形圖像開(kāi)發(fā)之曲線圖表模塊QChart庫(kù)一個(gè)chart中顯示兩條曲線詳細(xì)方法與實(shí)例
- Qt圖形圖像開(kāi)發(fā)曲線圖表模塊QChart庫(kù)縮放/平移詳細(xì)方法與實(shí)例
- Qt圖形圖像開(kāi)發(fā)之曲線圖表模塊QChart庫(kù)讀取/設(shè)置X軸的顯示區(qū)間
- Qt圖形圖像開(kāi)發(fā)曲線圖表模塊QChart庫(kù)基本用法、各個(gè)類之間的關(guān)系說(shuō)明
- Qt圖形圖像開(kāi)發(fā)之曲線圖表庫(kù)QChart編譯安裝詳細(xì)方法與使用實(shí)例
- Qt實(shí)現(xiàn)簡(jiǎn)單折線圖表
相關(guān)文章
C語(yǔ)言詳細(xì)分析講解struct與union使用方法
最近開(kāi)始自學(xué)C語(yǔ)言,從最基礎(chǔ)部分的開(kāi)始學(xué)起。今天看書(shū)的時(shí)候注意到了struct和union似乎很像,除了名字不同,看起來(lái)幾乎沒(méi)有區(qū)別。<BR>既然C中定義了struct和union兩個(gè)關(guān)鍵字,那么它們肯定是有區(qū)別的,在查了一些資料之后我來(lái)總結(jié)一下他們的使用2022-04-04
基于一個(gè)簡(jiǎn)單定長(zhǎng)內(nèi)存池的實(shí)現(xiàn)方法詳解
本篇文章對(duì)一個(gè)簡(jiǎn)單定長(zhǎng)內(nèi)存池的實(shí)現(xiàn)方法進(jìn)行了詳細(xì)的分析介紹。需要的朋友參考下2013-05-05
講解C++的do while循環(huán)和循環(huán)語(yǔ)句的嵌套使用方法
這篇文章主要介紹了講解C++的do while循環(huán)和循環(huán)語(yǔ)句的嵌套使用方法,是C++入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-09-09
linux c語(yǔ)言操作數(shù)據(jù)庫(kù)(連接sqlite數(shù)據(jù)庫(kù))
linux下c語(yǔ)言操作sqlite數(shù)據(jù)庫(kù)實(shí)例方法,大家參考使用吧2013-12-12
C 語(yǔ)言基礎(chǔ)教程(我的C之旅開(kāi)始了)[六]
C 語(yǔ)言基礎(chǔ)教程(我的C之旅開(kāi)始了)[六]...2007-02-02
虛函數(shù)表-C++多態(tài)的實(shí)現(xiàn)原理解析
這篇文章主要介紹了虛函數(shù)表-C++多態(tài)的實(shí)現(xiàn)原理,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-02-02
基于C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單掃雷游戲
這篇文章主要為大家詳細(xì)介紹了基于C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單掃雷游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-11-11

