Qt能否绘制二维三坐标曲线（双Y轴）。。就是左右Y坐标各代表简易坐标的X，Y。横坐标是时间。 10C

2个回答

https://www.jianshu.com/p/2c584fa2e469

public void CreateChart( ZedGraphControl zgc )
{
GraphPane myPane = zgc.GraphPane;

// Set the titles and axis labels
myPane.Title.Text = "Demonstration of Multi Y Graph";
myPane.XAxis.Title.Text = "Time, s";
myPane.YAxis.Title.Text = "Velocity, m/s";
myPane.Y2Axis.Title.Text = "Acceleration, m/s2";

// Make up some data points based on the Sine function
PointPairList vList = new PointPairList();
PointPairList aList = new PointPairList();
PointPairList dList = new PointPairList();
PointPairList eList = new PointPairList();

// Fabricate some data values
for ( int i=0; i<30; i++ )
{
double time = (double) i;
double acceleration = 2.0;
double velocity = acceleration * time;
double distance = acceleration * time * time / 2.0;
double energy = 100.0 * velocity * velocity / 2.0;
}

// Generate a red curve with diamond symbols, and "Velocity" in the legend
vList, Color.Red, SymbolType.Diamond );
// Fill the symbols with white
myCurve.Symbol.Fill = new Fill( Color.White );

// Generate a blue curve with circle symbols, and "Acceleration" in the legend
aList, Color.Blue, SymbolType.Circle );
// Fill the symbols with white
myCurve.Symbol.Fill = new Fill( Color.White );
// Associate this curve with the Y2 axis
myCurve.IsY2Axis = true;

// Generate a green curve with square symbols, and "Distance" in the legend
dList, Color.Green, SymbolType.Square );
// Fill the symbols with white
myCurve.Symbol.Fill = new Fill( Color.White );
// Associate this curve with the second Y axis
myCurve.YAxisIndex = 1;

// Generate a Black curve with triangle symbols, and "Energy" in the legend
eList, Color.Black, SymbolType.Triangle );
// Fill the symbols with white
myCurve.Symbol.Fill = new Fill( Color.White );
// Associate this curve with the Y2 axis
myCurve.IsY2Axis = true;
// Associate this curve with the second Y2 axis
myCurve.YAxisIndex = 1;

// Show the x axis grid
myPane.XAxis.MajorGrid.IsVisible = true;

// Make the Y axis scale red
myPane.YAxis.Scale.FontSpec.FontColor = Color.Red;
myPane.YAxis.Title.FontSpec.FontColor = Color.Red;
// turn off the opposite tics so the Y tics don't show up on the Y2 axis
myPane.YAxis.MajorTic.IsOpposite = false;
myPane.YAxis.MinorTic.IsOpposite = false;
// Don't display the Y zero line
myPane.YAxis.MajorGrid.IsZeroLine = false;
// Align the Y axis labels so they are flush to the axis
myPane.YAxis.Scale.Align = AlignP.Inside;
myPane.YAxis.Scale.Max = 100;

// Enable the Y2 axis display
myPane.Y2Axis.IsVisible = true;
// Make the Y2 axis scale blue
myPane.Y2Axis.Scale.FontSpec.FontColor = Color.Blue;
myPane.Y2Axis.Title.FontSpec.FontColor = Color.Blue;
// turn off the opposite tics so the Y2 tics don't show up on the Y axis
myPane.Y2Axis.MajorTic.IsOpposite = false;
myPane.Y2Axis.MinorTic.IsOpposite = false;
// Display the Y2 axis grid lines
myPane.Y2Axis.MajorGrid.IsVisible = true;
// Align the Y2 axis labels so they are flush to the axis
myPane.Y2Axis.Scale.Align = AlignP.Inside;
myPane.Y2Axis.Scale.Min = 1.5;
myPane.Y2Axis.Scale.Max = 3;

// Create a second Y Axis, green
YAxis yAxis3 = new YAxis( "Distance, m" );
yAxis3.Scale.FontSpec.FontColor = Color.Green;
yAxis3.Title.FontSpec.FontColor = Color.Green;
yAxis3.Color = Color.Green;
// turn off the opposite tics so the Y2 tics don't show up on the Y axis
yAxis3.MajorTic.IsInside = false;
yAxis3.MinorTic.IsInside = false;
yAxis3.MajorTic.IsOpposite = false;
yAxis3.MinorTic.IsOpposite = false;
// Align the Y2 axis labels so they are flush to the axis
yAxis3.Scale.Align = AlignP.Inside;

Y2Axis yAxis4 = new Y2Axis( "Energy" );
yAxis4.IsVisible = true;
// turn off the opposite tics so the Y2 tics don't show up on the Y axis
yAxis4.MajorTic.IsInside = false;
yAxis4.MinorTic.IsInside = false;
yAxis4.MajorTic.IsOpposite = false;
yAxis4.MinorTic.IsOpposite = false;
// Align the Y2 axis labels so they are flush to the axis
yAxis4.Scale.Align = AlignP.Inside;
yAxis4.Type = AxisType.Log;
yAxis4.Scale.Min = 100;

// Fill the axis background with a gradient
myPane.Chart.Fill = new Fill( Color.White, Color.LightGoldenrodYellow, 45.0f );

zgc.AxisChange();
}

QT+VS 将竖直向上作为坐标轴的Y轴正方向，在绘制文本时文字倒过来了
1.QT+VS 将竖直向上作为坐标轴的Y轴正方向，在绘制文本时文字倒过来了 系统默认竖直向下为Y轴正方向，通过Setwindow改变了坐标系的坐标原点和坐标轴方向，但是在绘制文本时，文本的书写方向出现了翻转。 2.设置坐标代码： case CAD_POINT_LEFTBOTTOM: //原点位置—左下 painter.setWindow(0,height(),width(),-height()); break; 3.画圆和编号代码： struct Circle* c = Circle_head.next; int cc =CircleCount; while (c!=NULL) { QRectF rect(c->x - c->r,c->y - c->r,c->r*2,c->r*2); painter.drawEllipse(rect); //画圆 QPoint point(c->x + c->r,c->y + c->r*2); painter.drawText(point,QString::number(cc)); //编号 cc =cc - 1; c = c ->next; } 4.运行效果图： ![图片说明](https://img-ask.csdn.net/upload/201904/19/1555642379_278544.png) 5.不知道如何解决？
qt画坐标轴实时显示如何实现

Qt Qchart绘制的曲线怎么在鼠标点击时添加2条竖分割线来选取线段
Qt Qchart绘制的曲线怎么在鼠标点击时添加2条竖分割线来选取线段
qt中鼠标点击view获取点并将坐标转换为scene坐标之后在坐标处绘制item，位置发生偏移

QT中customplot插件绘制的坐标图怎么才能实现单独横向拉伸

Qt qchart绘制折线图时，如何根据x轴的值，在不同的区域设置不同背景色？
Qt qchart绘制折线图时，如何根据x轴的值，在不同的区域设置不同背景色？ 用setPlotAreaBackgroundBrush好像只能设置整个的背景色。
C语言怎么输出正弦曲线的坐标点

Qt的坐标怎样设置问题

QT 实现二维码扫描功能

Qt如何绘制梯形按钮？

qt 坐标系旋转一定角度后 QBrush填充效果变样了

qt 中图标显示不正常，是为啥？
QT3D场景中如何加载OpenGL画的实体?

qt eventFilter的问题
Qt输入框密码样式设置为*不成功，有人知道原因？

QT Qlabel *label 怎样在固定坐标处显示图片，setPixmap貌似不行，不想用paintEvent
Qlabel *label； label->setPixmap((QPixmap(":/img/xxx.png"))); 这样能显示一张图片，但是不能设置坐标。 paintEvent（）里可以设置坐标，但是这个事件一直在运行，我想在调用时再让他运行。
Qt QPainter 使用drawLines绘制有问题

Java学习的正确打开方式

linux系列之常用运维命令整理笔录

Vue + Spring Boot 项目实战（十四）：用户认证方案与完善的访问拦截

Python十大装B语法
Python 是一种代表简单思想的语言，其语法相对简单，很容易上手。不过，如果就此小视 Python 语法的精妙和深邃，那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点，并附上详细的实例代码。如能在实战中融会贯通、灵活使用，必将使代码更为精炼、高效，同时也会极大提升代码B格，使之看上去更老练，读起来更优雅。 1. for - else 什么？不是 if 和 else 才

2019年11月中国大陆编程语言排行榜
2019年11月2日，我统计了某招聘网站，获得有效程序员招聘数据9万条。针对招聘信息，提取编程语言关键字，并统计如下： 编程语言比例 rank pl_ percentage 1 java 33.62% 2 c/c++ 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7

SQL-小白最佳入门sql查询一

“狗屁不通文章生成器”登顶GitHub热榜，分分钟写出万字形式主义大作

IT界知名的程序员曾说：对于那些月薪三万以下，自称IT工程师的码农们，其实我们从来没有把他们归为我们IT工程师的队伍。他们虽然总是以IT工程师自居，但只是他们一厢情愿罢了。 此话一出，不知激起了多少(码农)程序员的愤怒，却又无可奈何，于是码农问程序员。 码农：你知道get和post请求到底有什么区别？ 程序员：你看这篇就知道了。 码农：你月薪三万了？ 程序员：嗯。 码农：你是怎么做到的? 程序员：
《程序人生》系列-这个程序员只用了20行代码就拿了冠军

11月8日，由中国信息通信研究院、中国通信标准化协会、中国互联网协会、可信区块链推进计划联合主办，科技行者协办的2019可信区块链峰会将在北京悠唐皇冠假日酒店开幕。 　　区块链技术被认为是继蒸汽机、电力、互联网之后，下一代颠覆性的核心技术。如果说蒸汽机释放了人类的生产力，电力解决了人类基本的生活需求，互联网彻底改变了信息传递的方式，区块链作为构造信任的技术有重要的价值。 　　1

【技巧总结】位运算装逼指南

《C++ Primer》学习笔记（六）：C++模块设计——函数

8年经验面试官详解 Java 面试秘诀
作者 | 胡书敏 责编 | 刘静 出品 | CSDN（ID：CSDNnews） 本人目前在一家知名外企担任架构师，而且最近八年来，在多家外企和互联网公司担任Java技术面试官，前后累计面试了有两三百位候选人。在本文里，就将结合本人的面试经验，针对Java初学者、Java初级开发和Java开发，给出若干准备简历和准备面试的建议。   Java程序员准备和投递简历的实

1.两种思维方式在求职面试中，经常会考察这种问题：北京有多少量特斯拉汽车？ 某胡同口的煎饼摊一年能卖出多少个煎饼？ 深圳有多少个产品经理？ 一辆公交车里能装下多少个乒乓球？ 一
so easy！ 10行代码写个"狗屁不通"文章生成器