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ǔ)言實(shí)現(xiàn)影院售票管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)影院售票管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-08-08C++實(shí)現(xiàn)LeetCode(51.N皇后問(wèn)題)
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(51.N皇后問(wèn)題),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07淺析C++調(diào)用Java的Jar包(帶參數(shù))問(wèn)題
這篇文章主要介紹了C++調(diào)用Java的Jar包(帶參數(shù))問(wèn)題,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-11-11C語(yǔ)言從猜數(shù)字游戲中理解數(shù)據(jù)結(jié)構(gòu)
猜數(shù)字是興起于英國(guó)的益智類小游戲,起源于20世紀(jì)中期,一般由兩個(gè)人或多人玩,也可以由一個(gè)人和電腦玩。游戲規(guī)則為一方出數(shù)字,一方猜,今天我們來(lái)用這個(gè)游戲案例理解數(shù)據(jù)結(jié)構(gòu)2022-04-04