问题标签 [qchart]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1860 浏览

python - 如何将 QChart 坐标映射到 QChartView 点?

我想在QChart中制作一个橡皮筋窗口,但是我不知道如何将QChart的坐标映射到QChartView。

eg (0, 0) 是一个QChart 坐标,在QChartView 中可能是(10, 10),怎么转换呢?我已经看到在 QChartView 的轴系中获取鼠标坐标 的答案

但它似乎与我的要求相反。

mapToPosition用来获取原点的坐标,但似乎它不起作用。

0 投票
0 回答
842 浏览

c++ - QLineSeries 通过 x 值获取图表呈现的函数值

例如,我有一个QChartQLineSeries一些点。图表绘制了这些点之间的线,但是我如何在没有点的地方访问值YX即如果我有例如点(0,0)(10,10)我如何Y从图表中获取值X=5(Y 也必须是 5)?

更新:

我想那个情节代表数学函数,即一个X正好有一个Y

0 投票
1 回答
647 浏览

c++ - Qt:具有分类角轴的 QPolarChart

我想用附图中所示的一些文本替换 QPolarChart 中角轴的度数(例如,而不是 90.0 ->“Cat 1”)。我尝试了 QCategoryAxis 但在这种情况下,类别出现在轴之间(例如,在 90 到 180 度之间)。

现在我使用以下代码来创建极坐标图:

极坐标图

0 投票
0 回答
234 浏览

c++ - 如何更改 QStackedBarSeries 中单个 QBarSet 的宽度?

我正在尝试创建一个马赛克情节系列以包含在小部件中。

QStackedBarSeries似乎是最好的起点,但我无法更改其中单个条的宽度。(如果有更好/更简单的起点,请纠正我!)

我挖掘了QBarSet以查看是否可以将其子类化以缩放其宽度,但似乎图形是在 QStackedBarSeries 中完成的。我唯一的选择是子类QAbstractBarSeries以使条形宽度可定制吗?

谢谢!

0 投票
1 回答
1437 浏览

c++ - Qt中如何隐藏QBarCategoryAxis中的一些类别

QBarCategoryAxis创建图表时,我没有找到隐藏某些类别的方法。如果我没有为轴指定类别,默认情况下类别将是从 1 到QBarSet大小。如果我指定类别,我怎么能只显示轴中的一些类别。例如:如何只显示第一个和最后一个类别以及中间的类别QBarCategoryAxis

编辑:
目前我得到的是这样的:在此处输入图像描述

我有一个QBarSet有 6 个元素。而且我没有设置类别文本,所以默认情况下这些类别文本是从1到6。我想要显示一些类别文本,比如只显示1、3、6和其余的文本(2 , 4, 5) 被隐藏。

我为什么要这样做?
因为当QBarSet元素比较多的时候,当我自己指定类别文本时,通常我需要最大化窗口,这样我才能看到在axisX中显示的所有类别文本。但我只希望图表具有固定大小,所以对于文本,我只希望显示其中的一部分。
顺便说一句,如果一个条形集有很多元素,这将是看起来的样子,并且在我最大化窗口之前,下面的文本不会完全显示。 编辑2:在此处输入图像描述

这就是我想要的图表看起来像:在此处输入图像描述

如您所见,在 x 轴下方,它只有 5 个文本。

0 投票
2 回答
917 浏览

qt - 使用橡皮筋选择在 QChartView 中选择 QLineSeries

我有一个 QChart,上面有许多 QLineSeries。

我创建了自己的图表类CPlotView,从 QChartView 派生并覆盖了 mousePressEvent、mouseMoveEvent 和 mouseReleaseEvent,如下所示。

我想分别实现橡皮筋缩放和橡皮筋选择,我可以根据可检查的 QPushButtons 选择要执行的操作(代码未显示,但它只是 CPlotView 的一个成员,它包含一个枚举值,它定义了它的“模式”(缩放或选择)

我现在可以使用缩放模式 - 单击“缩放”模式按钮,然后将绘图上的橡皮筋拖动到该区域。单击选择模式按钮会绘制橡皮筋,但不会缩放。我现在想在选择模式下选择橡皮筋中的所有数据系列。

mouseReleaseEvent选择模式下,我试图捕获QGraphicsItems橡皮筋矩形内的所有选择(我希望这是返回的内容QGraphicsView::items(PlotRubberBand->rect(), Qt::IntersectsItemShape);),但我不知道如何检测我的数据系列(我实际上混合了 QLineSeries 和QScatter 系列。

即使我没有将橡皮筋与我的任何数据相交,也会返回一些数据,因此它显然会返回场景中的其他一些QGraphicsItems项目。QGraphicsView::items(PlotRubberBand->rect(), Qt::IntersectsItemShape);

我尝试做 adynamic_castQGraphicsView::itemsa返回的内容QLineSeries,但这没有用。我忍不住想我让这比它应该的更复杂。

UPDATE1:我还尝试捕获在橡皮筋选择期间鼠标悬停在数据系列上时触发的信号:

但是当橡皮筋拖动时信号不会触发(也许当鼠标左键按下时它不会触发?)。:(

更新 2:我尝试在 mouseReleaseEvent() 调用中设置 selectionArea ,并且再次,有些返回为选中状态,远少于 call QGraphicsView::items(),但据我所知不是我的系列:

0 投票
1 回答
255 浏览

qt - 检测与选择矩形相交的所有 Qt 图表系列

我有一个 QChart,上面有许多 QLineSeries 和 QScatterSeries。我希望能够使用鼠标单击并拖动线条或框形并检测与该框相交的所有系列。

当我单击拖动时,我目前正在绘制一个 QGraphicsItem,我现在正在尝试检测该框中的哪些系列(请注意,框中可能没有实际的数据点,但可能有一段绘制的线之间插值2个数据系列点)。

我不想通过计算插值点并测试它们是否在我的选择框内来手动检测交叉点(我很确定 Qt 可以为我做到这一点),所以我尝试使用QGraphicsItem::shape()andQGraphicsItem::collidesWith()例程来检测碰撞。但是,我似乎无法获得 QLineSeries 的 QGraphicsItem 表示 - 这可能吗?

尝试使用 QPainterPath 会更好吗?在这种情况下我将如何使用它?

I also tried to use the hovered(const QPointF &, bool)signal of the data series, so I could record which series were hovered over when the selection box was dragged out, but this signal doesn't fire when the left mouse button is down for some reason. :/

0 投票
2 回答
4091 浏览

c++ - 如何在 qt 中更改一种 QBarSet 条/元素颜色?

我连接到一个插槽的hovered信号,当鼠标悬停在栏集上时QBarSet,它将改变颜色,并在鼠标离开时重置颜色。 代码片段如下所示:QBarSet

这些是悬停前和悬停时的照片: 在此处输入图像描述

在此处输入图像描述

如您所见,如果我将鼠标悬停在栏集上,所有这些栏集栏(元素)的颜色都变为红色。但是我想将鼠标悬停在栏集的特定栏(元素)上,并且该栏(元素)改变了它的颜色,其余的保持不变。

有没有办法做到这一点?

0 投票
1 回答
3793 浏览

c++ - QChart 实时性能

我正在将 QChart 用于应用程序。应用程序需要实时显示一些数据。图表中将有一个图表24 个系列。每个通道的数据速率为400pts

我使用另一个线程来接收和处理接收到的数据,并将处理后的数据发送到插槽以添加数据以更新图表系列。

我参考了https://doc.qt.io/qt-5/qtcharts-audio-example.html。就我而言,每个系列限制为 2000 个点,如果系列中的点数小于 2000,则将新点添加到系列中,如果系列中的点数超过 2000,则删除第一个点,将其余数据向左移动并在最后添加新点。这将使图表看起来像从右向左移动。

为了获得良好的性能,我还使用了series->replace()and series->setUseOpenGL(true)

我的问题是应用程序在启动时很快就会被冻结。我尝试删除更新图表的代码,一切看起来都很好。谁能帮助我如何提高更新图表的性能?

谢谢!

0 投票
1 回答
1691 浏览

qt - QCharts 右侧的第二个 Y 轴

我想在 aValueAxis的右侧放置第二个ChartView文档指出“轴可以放置在图表的下方、上方、左侧或右侧。”

但是,我在 , 的文档中找不到任何属性AbstractAxisValueAxis或者ChartView与此相符。只有 的alignment属性AbstractAxis引起了我的注意,但是它是 const 并且不能在 QML 中修改:

Invalid property assignment: "alignment" is a read-only property

我可以看到在Multiple Axes Example中有一种 C++ 方法来设置对齐方式,但我正在寻找一种 QtQuick 方式来设置对齐方式。我在这里错过了什么吗?