问题标签 [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.
python - 如何将 QChart 坐标映射到 QChartView 点?
我想在QChart中制作一个橡皮筋窗口,但是我不知道如何将QChart的坐标映射到QChartView。
eg (0, 0) 是一个QChart 坐标,在QChartView 中可能是(10, 10),怎么转换呢?我已经看到在 QChartView 的轴系中获取鼠标坐标 的答案
但它似乎与我的要求相反。
我mapToPosition
用来获取原点的坐标,但似乎它不起作用。
c++ - QLineSeries 通过 x 值获取图表呈现的函数值
例如,我有一个QChart
与QLineSeries
一些点。图表绘制了这些点之间的线,但是我如何在没有点的地方访问值Y
,X
即如果我有例如点(0,0)
,(10,10)
我如何Y
从图表中获取值X=5
(Y 也必须是 5)?
更新:
我想那个情节代表数学函数,即一个X
正好有一个Y
。
c++ - 如何更改 QStackedBarSeries 中单个 QBarSet 的宽度?
我正在尝试创建一个马赛克情节系列以包含在小部件中。
QStackedBarSeries似乎是最好的起点,但我无法更改其中单个条的宽度。(如果有更好/更简单的起点,请纠正我!)
我挖掘了QBarSet以查看是否可以将其子类化以缩放其宽度,但似乎图形是在 QStackedBarSeries 中完成的。我唯一的选择是子类QAbstractBarSeries以使条形宽度可定制吗?
谢谢!
c++ - Qt中如何隐藏QBarCategoryAxis中的一些类别
QBarCategoryAxis
创建图表时,我没有找到隐藏某些类别的方法。如果我没有为轴指定类别,默认情况下类别将是从 1 到QBarSet
大小。如果我指定类别,我怎么能只显示轴中的一些类别。例如:如何只显示第一个和最后一个类别以及中间的类别QBarCategoryAxis
?
编辑:
目前我得到的是这样的:
我有一个QBarSet
有 6 个元素。而且我没有设置类别文本,所以默认情况下这些类别文本是从1到6。我想要显示一些类别文本,比如只显示1、3、6和其余的文本(2 , 4, 5) 被隐藏。
我为什么要这样做?
因为当QBarSet
元素比较多的时候,当我自己指定类别文本时,通常我需要最大化窗口,这样我才能看到在axisX中显示的所有类别文本。但我只希望图表具有固定大小,所以对于文本,我只希望显示其中的一部分。
顺便说一句,如果一个条形集有很多元素,这将是看起来的样子,并且在我最大化窗口之前,下面的文本不会完全显示。
编辑2:
这就是我想要的图表看起来像:
如您所见,在 x 轴下方,它只有 5 个文本。
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_cast
由QGraphicsView::items
a返回的内容QLineSeries
,但这没有用。我忍不住想我让这比它应该的更复杂。
UPDATE1:我还尝试捕获在橡皮筋选择期间鼠标悬停在数据系列上时触发的信号:
但是当橡皮筋拖动时信号不会触发(也许当鼠标左键按下时它不会触发?)。:(
更新 2:我尝试在 mouseReleaseEvent() 调用中设置 selectionArea ,并且再次,有些返回为选中状态,远少于 call QGraphicsView::items()
,但据我所知不是我的系列:
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. :/
c++ - QChart 实时性能
我正在将 QChart 用于应用程序。应用程序需要实时显示一些数据。图表中将有一个图表和24 个系列。每个通道的数据速率为400pts。
我使用另一个线程来接收和处理接收到的数据,并将处理后的数据发送到插槽以添加数据以更新图表系列。
我参考了https://doc.qt.io/qt-5/qtcharts-audio-example.html。就我而言,每个系列限制为 2000 个点,如果系列中的点数小于 2000,则将新点添加到系列中,如果系列中的点数超过 2000,则删除第一个点,将其余数据向左移动并在最后添加新点。这将使图表看起来像从右向左移动。
为了获得良好的性能,我还使用了series->replace()
and series->setUseOpenGL(true)
。
我的问题是应用程序在启动时很快就会被冻结。我尝试删除更新图表的代码,一切看起来都很好。谁能帮助我如何提高更新图表的性能?
谢谢!
qt - QCharts 右侧的第二个 Y 轴
我想在 aValueAxis
的右侧放置第二个ChartView
。文档指出“轴可以放置在图表的下方、上方、左侧或右侧。”
但是,我在 , 的文档中找不到任何属性AbstractAxis
,ValueAxis
或者ChartView
与此相符。只有 的alignment
属性AbstractAxis
引起了我的注意,但是它是 const 并且不能在 QML 中修改:
Invalid property assignment: "alignment" is a read-only property
我可以看到在Multiple Axes Example中有一种 C++ 方法来设置对齐方式,但我正在寻找一种 QtQuick 方式来设置对齐方式。我在这里错过了什么吗?