ZedGraph 用图表线平滑移动 Y2Axis

2023-12-11

在回答我的问题时“ZedGraph 自定义图表”我有每秒插入数据的图表,现在我有其他问题:

  1. 如何用图表线平滑地向下移动Y2轴(DateTime类型)并在图表中始终只显示最后30分钟?

  2. 如何格式化 Y2Axis 标签“HH:mm”以获得 10:05、10:10、10:15、...、10:30?

感谢帮助!

UPD1: Thanks kmp! I try your code - its good, but with issue: when I started I see this: enter image description here When after few minutes I see this picture: enter image description here

我对图表区域进行了“压缩”,但我希望始终静态显示最后 30 分钟的数据,并缓慢向下移动旧数据,而无需缩放或用轴“包装”图表。我希望你能理解我。

UPD2: Yet another issue - labels of Y2Axis haven't fixed values. For example now: enter image description here

And after few seconds: enter image description here


从最简单的开始 - 格式化标签可以像这样完成:

myPane.Y2Axis.Scale.Format = "HH:mm";

您可以执行此操作的一种方法(感觉有点不稳定,但我会让您决定)是在超出阈值(在本例中超过 30 分钟)时简单地将点从曲线中删除。这样,当图表重新绘制时,轴将相应更新。

我觉得采用比例最小值可能是比这更好的方法,但如果失败了,您可以简单地在添加点时维护一个队列,如下所示,然后在它们超出阈值时将其删除:

private Queue<DateTime> axisTimes;

private static readonly Random rnd = new Random();

private void button1_Click(object sender, EventArgs e)
{
    GraphPane myPane = zg1.GraphPane;

    myPane.XAxis.IsVisible = false;

    myPane.X2Axis.IsVisible = true;
    myPane.X2Axis.MajorGrid.IsVisible = true;
    myPane.X2Axis.Scale.Min = 0;
    myPane.X2Axis.Scale.Max = 600;

    myPane.YAxis.IsVisible = false;

    myPane.Y2Axis.IsVisible = true;
    myPane.Y2Axis.Scale.MajorUnit = DateUnit.Minute;
    myPane.Y2Axis.Scale.MinorUnit = DateUnit.Second;
    myPane.Y2Axis.Scale.Format = "HH:mm";
    myPane.Y2Axis.Type = AxisType.DateAsOrdinal;

    LineItem myCurve = myPane.AddCurve("Alpha",
                                  new PointPairList(),
                                  Color.Red,
                                  SymbolType.None);

    myCurve.Symbol.Fill = new Fill(Color.White);
    myCurve.IsX2Axis = true;
    myCurve.IsY2Axis = true;

    myPane.Chart.Fill = new Fill(Color.White, Color.LightGray, 45.0f);
    zg1.IsShowPointValues = true;

    axisTimes = new Queue<DateTime>();

    var t = new System.Windows.Forms.Timer();
    t.Interval = 1000;
    t.Tick += ShowData;

    Thread.Sleep(100);

    t.Start();
}

private void ShowData(object sender, EventArgs e)
{
    var t = (System.Windows.Forms.Timer) sender;
    t.Enabled = false;

    int x = rnd.Next(500, 600);
    var y = new XDate(DateTime.Now);

    var myCurve = zg1.GraphPane.CurveList[0];

    if (axisTimes.Any())
    {             
        // Remove any points that go beyond our time threshold
        while ((((DateTime)y) - axisTimes.Peek()).TotalMinutes > 30)
        {
            myCurve.RemovePoint(0);
            axisTimes.Dequeue();

            if (!axisTimes.Any())
            {
                break;
            }
        }
    }

    // Add the new point and store the datetime that it was added in
    // our own queue
    axisTimes.Enqueue(y);
    myCurve.AddPoint(x, y);

    zg1.AxisChange();
    zg1.Invalidate();

    t.Enabled = true;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ZedGraph 用图表线平滑移动 Y2Axis 的相关文章

  • C++ 模板中的名称查找

    我有一些 C 代码 如果没有 fpermissive 选项 就无法再编译 这是我无法分享的专有代码 但我认为我已经能够提取一个简单的测试用例来演示该问题 这是 g 的输出 template eg cpp In instantiation o
  • asp.net c# 将数据集中的数据转换为电子邮件正文?

    从数据集到电子邮件正文的最佳方式是什么 我有一个 net 控制台应用程序 用于根据存储过程的结果发送电子邮件通知 并且想知道如何最好地从 SQL 数据转到电子邮件正文 带有颜色和字体的 html 正文是最好的 但纯文本也可以 thanks
  • 我们如何将数据从一个打开的表单传递到另一个打开的表单?

    winform中如何将数据从一个窗体传递到另一个打开的窗体 在 Windows 应用程序中 一个窗体打开另一个窗体 当我在父表单中输入一些数据时 这些数据将立即反映在另一个子表单中 这将如何发生 取决于你想要多花哨 最简单的方法就是直接调用
  • 避免集合已修改错误

    Issue 我有以下代码 foreach var ItemA in GenericListInstanceB ItemA MethodThatCouldRemoveAnyItemInGenericListInstanceB 显然我得到一个错
  • 使用静态类型代替变量

    当您的项目不使用命名空间时 有什么方法可以告诉编译器使用静态类型而不是变量吗 例如 我有一个名为 User 的类 它具有各种静态和非静态方法 假设调用了其中一个静态方法GetUser 我想称之为User GetUser 方法来自一个方法 该
  • 使用 Selenium for C# 登录 Facebook

    我一直在使用 Selenium C 框架并尝试进行 facebook 登录 但没有任何运气 这是我到目前为止得到的 基于这篇文章 使用 Selenium 测试 Facebook Connect 应用程序 https stackoverflo
  • 将列表(对象)转换为列表(字符串)

    有没有办法转换List of Object to a List of String 在 c 或 vb net 中而不迭代所有项目 幕后迭代很好 我只想要简洁的代码 Update 最好的方法可能就是进行新的选择 myList Select f
  • Entity Framework 4.1 RC:Code First EntityTypeConfiguration 继承问题

    我尝试使用通用的 EntityTypeConfiguration 类来配置所有实体的主键 以便每个派生的配置类不会重复自身 我的所有实体都实现一个公共接口 IEntity 它表示每个实体必须有一个 int 类型的 Id 属性 我的配置基类如
  • 正则表达式删除某些字符周围不需要的空格

    我正在尝试从 JavaScript 文件中删除一些不需要的空格 并在将文件发送到客户端之前使用 C 和 Regex 组合文件 我有一个JavascriptHandler处理 js 文件 效果很好 这是我用来 打包 JavaScript 的函
  • Azure 2012 年 10 月 SDK 损坏 UseDevelopmentStorage=true

    有人尝试过使用 usedevelopmentstorage true 连接字符串的 2012 年 10 月 Azure sdk 吗 CloudStorageAccount Parse UseDevelopmentStorage true 抛
  • C++ 中的 Java ArrayList [重复]

    这个问题在这里已经有答案了 在Java中我可以做 List
  • 使用成员作为实现者来实现接口

    我有实现 IA 的 A 类 现在我需要创建也应该实现 IA 的类 B B 类有 A 类的实例作为成员 有什么方法可以定义A的实例实现B类中的IA吗 interfase IA void method1 void method2 void me
  • 在 ncurses 中使用退格键

    我设置了一个简单的 ncurses 程序 它使用 getch 一次读取一个字符并将它们复制到缓冲区中 我遇到的问题是检测到按下退格键 这是相关代码 while buffer i c getch EOF i if c n break else
  • 简单的文档管理系统和API [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Active Directory UserPrincipal.Current.GetGroups() 返回本地组而不是 Web 服务器上的组

    以下内容在我的本地开发盒上效果很好 但是 当我将其移动到网络服务器时 它失败了 甚至不会记录错误 public static List
  • System.diagnostics.process 进程在托管后无法在 IIS 上运行?

    我正在尝试从网络应用程序安装 exe 当我在本地运行应用程序 从 asp 开发服务器 时 它安装正确 但当我托管在 IIS 上时 它不起作用 我在asp net页面的Page load方法上编写了这段代码 想要在客户端计算机上安装Test
  • win32 API 和 .NET 框架之间的选择

    我必须开发一个适用于 Windows 的应用程序 该应用程序将能够通过网络摄像头识别手势来控制鼠标 我将使用 vc 2008 进行开发 但我很困惑是使用 NET 框架还是核心 win32 API 性能对于我的应用程序非常重要 根据 Ivor
  • double 类型的静态类成员的常量表达式初始值设定项

    在 C 11 和 C 14 中 为什么我需要constexpr在下面的代码片段中 class Foo static constexpr double X 0 75 而这会产生编译器错误 class Foo static const doub
  • 如何将 Metro 应用部署到桌面?

    我正在尝试将我的 C 应用程序部署到我的 Windows 8 Metro 桌面 我可以在 bin 文件夹中看到部署的文件 但是当我尝试打开它们时 出现以下错误 该应用程序只能在 AppContainer 的上下文中运行 我检查了属性上下文菜
  • 如何向 ItemsControl 中的 WPF 按钮添加相同的命令

    如何将命令添加到 wpf 按钮 该按钮是ItemsControl并正在修改ItemsSource itself 这是我的 XAML

随机推荐

  • KeyCloak 忘记密码 电子邮件链接

    我们正在使用 keycloak 实现身份验证 特别针对忘记密码选项 当用户单击 忘记密码 选项并提供用户名时 系统将向其 ID 发送一封电子邮件 其中包含重置密码的链接 我的问题具体在链接上 通过电子邮件发送的链接如下所示 https au
  • 如何使用 JavaScript 和 FastAPI 上传多个文件?

    我遵循 FastAPI 文档 我试图将用 js 编写的客户端文件发送到用 FastAPI 编写的服务器 My HTML
  • 使用 Spring LDAP Repository 的多个 LDAP 存储库

    我想使用 Spring LDAP 设置多个 LDAP 存储库 我的目标是同时创建或更新所有存储库中的对象 我使用 LdapRepository Spring 接口 我认为目前这是不可能的 我想知道我是否可以创建自己的 LdapReposit
  • 你在 Java 中推荐哪些 HTML 解析库 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 我想解析一些 HTML 以
  • 本地主机、Php artisan 服务和 homestead 的优点/缺点

    我是 Laravel 的新手 我很困惑将使用哪个环境来创建带有数据库集成 MYSQL 的应用程序 Wamp 本地主机 PHP工匠 家园 每种环境的优点 缺点是什么 谢谢 虽然这个问题是基于意见的 但我的回答将基于我的经验 WAMP 本地主机
  • ZooKeeper 快照文件足以恢复状态吗?

    我正在了解 ZooKeeper 并查看备份 ZooKeeper 中存储的数据的选项 ZooKeeper写入两个数据文件 快照和事务日志 人们经常提到快照是 模糊的 需要在它们上重放事务日志以获得最新状态 对于观察者来说 没有事务日志被保存到
  • 如何从 Python 函数外部停止执行该函数?

    所以我有一个我使用的库 在我的一个函数中 我调用该库中的一个函数 这恰好需要很长时间 现在 同时我有另一个线程在运行 我在其中检查不同的条件 我想要的是 如果满足条件 我想取消库函数的执行 现在我正在检查函数开始时的条件 但是如果在库函数运
  • C# 中用于基于平台导入的预处理器指令

    在 C 中查找预处理器指令 用于根据可执行文件是 64 位还是 32 位导入 dll if WIN64 DllImport ZLIB64 dll CallingConvention CallingConvention Cdecl else
  • 如何设置 ASP.NET Core Identity cookie 的路径

    我有一个 ASP NET Core MVC 应用程序 它还托管一个 API 该站点使用身份默认值 因此当您登录时会设置 cookie API 已配置为使用 JWT Bearer 身份验证 我还有一个单独的 ASP Net Core MVC
  • 当服务器和客户端在同一台机器上时监听广播

    花了大半夜的时间后 我还没能成功 这是我正在做的事情 这是一种由一个参与者主持并由其他玩家加入的网络游戏 主持人本人也充当玩家 用户点击 Host 按钮开始在UDP上做广告 其他用户可以查看所有可用主机的列表并选择其中一台加入 作为初学者
  • HTTPERR 日志:Request_Cancelled(对 WCF 服务进行故障排除时)

    我正在尝试解决访问 WCF 自托管服务的 WCF 客户端上的 连接被远程主机强制关闭 错误 我正在查看服务端计算机上 System32 LogFiles HTTPERR 中的 httperr 日志 每次在客户端上看到该错误时 我都会在日志中
  • 图形中的凸包 - Mathematica

    尝试使用计算几何包中的平面图绘制凸包 但在图形中使用时不起作用 关于如何使用 Graphics 绘制 ConvexHull 有什么想法吗 Needs ComputationalGeometry pts RandomReal 0 10 60
  • 如何在xtable的align参数中设置列宽和文本对齐方式?

    我想保留我设置的列的宽度align的论证xtable我想将所有数字列向右对齐 其他数字列向左对齐 标题向中间对齐 我找到了一些使用直接写入表格的解决方案rnw文件 但我想从文件加载数据 因为我的表很大 并且可以在创建knitr文档期间发生变
  • 按日期排序的两侧条形图

    我正在尝试创建一个双面条形图 如下所示这个答案 但我想按日期对条形进行排序 并将 x 轴标签更改为其他值 不是日期 我的数据集如下所示 date rival goals misses 1 2015 07 19 2 1 2 2015 07 2
  • grunt-express-server 与 contrib-watch

    我正在尝试同时使用两者grunt express server and grunt contrib watch然而 一旦我的快递服务器启动 它似乎就不再进行任何观看或重新加载 我有服务器设置在后台生成 我的项目在这里 https githu
  • Lua elseif 无法正常工作

    当我尝试使用elseif 它不起作用 在下面的代码中 无论用户输入哪个数字 唯一运行的代码是 if 语句下的代码 io write do you want to convert from celsius to farenheit 1 or
  • 绑定到列表框,但只显示选定的元素?

    我有一个绑定到 ListBox 的对象集合 但实际上我只想显示所选元素 而不是整个集合 解决这个问题的最佳方法是什么 使用不同的控件 我想我可以做一个 Visibility ValueConverter 来检查 IsSelected 属性
  • 获取php中的referrer URL(包括参数)

    是否有任何 HTTP 标头可供我使用网络服务器 服务器端脚本来获取整个引荐来源网址 包括查询字符串等 您应该能够从 SERVER HTTP REFERER 变量中获取它
  • 使用 Flutter API 加密读取 PEM 文件

    import package encrypt encrypt dart import package encrypt encrypt io dart import dart io import package pointycastle as
  • ZedGraph 用图表线平滑移动 Y2Axis

    在回答我的问题时 ZedGraph 自定义图表 我有每秒插入数据的图表 现在我有其他问题 如何用图表线平滑地向下移动Y2轴 DateTime类型 并在图表中始终只显示最后30分钟 如何格式化 Y2Axis 标签 HH mm 以获得 10 0