<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      使用ScottPlot庫在.NET WinForms中快速實現大型數據集的交互式顯示

      前言

      在.NET應用開發中數據集的交互式顯示是一個非常常見的功能,如需要創建折線圖、柱狀圖、餅圖、散點圖等不同類型的圖表將數據呈現出來,幫助人們更好地理解數據、發現規律,并支持決策和溝通。本文我們將一起來學習一下如何使用ScottPlot庫在.NET WinForms中快速實現大型數據集的交互式顯示。

      ScottPlot類庫介紹

      ScottPlot是一個免費、開源(采用MIT許可證)的強大.NET交互式繪圖庫,能夠輕松地實現大型數據集的交互式顯示。使用幾行代碼即可快速創建折線圖、柱狀圖、餅圖、散點圖等不同類型的圖表。

      ScottPlot類庫支持平臺和框架

      Console Application、WinForms、WPF、Avalonia、Blazor、WinUI等多個平臺和框架。

      ScottPlot類庫源代碼

      新建WinForms項目

      新建一個名為ScottPlotWinFormsExercise的項目。

      安裝ScottPlot.WinForms包

      搜索ScottPlot.WinForms包安裝:

      折線圖實現

      創建名為:LineChart窗體。

      FormsPlot (ScottPlot.WinForms)從工具箱拖到窗體中:

      輸入以下代碼:

          public partial class LineChart : Form
          {
              public LineChart()
              {
                  double[] dataX = GetRandomNum(20).Distinct().OrderByDescending(x => x).ToArray();
                  double[] dataY = GetRandomNum(19).Distinct().OrderByDescending(x => x).ToArray();
                  formsPlot1.Plot.Add.Scatter(dataX, dataY);
                  formsPlot1.Refresh();
              }

              public double[] GetRandomNum(int length)
              {
                  double[] getDate = new double[length];
                  Random random = new Random(); //創建一個Random實例
                  for (int i = 0; i < length; i++)
                  {
                      getDate[i] = random.Next(1, 100); //使用同一個Random實例生成隨機數
                  }
                  return getDate;
              }
          }

      運行效果展示:

      柱狀圖實現

      創建名為:BarChart窗體。

      FormsPlot (ScottPlot.WinForms)從工具箱拖到窗體中:

      輸入以下代碼:

          public partial class BarChart : Form
          {
              public BarChart()
              {
                  double[] values = { 5, 10, 7, 13, 22, 18, 33, 16 };
                  formsPlot1.Plot.Add.Bars(values);
                  formsPlot1.Refresh();
              }
          }

      運行效果展示:

      餅圖實現

      創建名為:PieChart窗體。

      FormsPlot (ScottPlot.WinForms)從工具箱拖到窗體中:

      輸入以下代碼:

          public partial class PieChart : Form
          {
              public PieChart()
              {
                  double[] values = { 3, 2, 8, 4, 8, 10 };
                  formsPlot1.Plot.Add.Pie(values);
                  formsPlot1.Refresh();
              }
          }

      運行效果展示:

      散點圖實現

      創建名為:ScatterChart窗體。

      FormsPlot (ScottPlot.WinForms)從工具箱拖到窗體中:

      輸入以下代碼:

          public partial class ScatterChart : Form
          {
              public ScatterChart()
              {
                  //從原始數據開始
                  double[] xs = Generate.Consecutive(100);
                  double[] ys = Generate.NoisyExponential(100);

                  //對數據進行對數縮放,并處理負值
                  double[] logYs = ys.Select(Math.Log10).ToArray();

                  //將對數縮放的數據添加到繪圖中
                  var sp = formsPlot1.Plot.Add.Scatter(xs, logYs);
                  sp.LineWidth = 0;

                  //創建一個次要刻度生成器,用于放置對數分布的次要刻度
                  ScottPlot.TickGenerators.LogMinorTickGenerator minorTickGen = new();

                  //創建一個數值刻度生成器,使用自定義的次要刻度生成器
                  ScottPlot.TickGenerators.NumericAutomatic tickGen = new();
                  tickGen.MinorTickGenerator = minorTickGen;

                  //創建一個自定義刻度格式化程序,用于設置每個刻度的標簽文本
                  static string LogTickLabelFormatter(double y) => $"{Math.Pow(10, y):N0}";

                  //告訴我們的主要刻度生成器僅顯示整數的主要刻度
                  tickGen.IntegerTicksOnly = true;

                  //告訴我們的自定義刻度生成器使用新的標簽格式化程序
                  tickGen.LabelFormatter = LogTickLabelFormatter;

                  //告訴左軸使用我們的自定義刻度生成器
                  formsPlot1.Plot.Axes.Left.TickGenerator = tickGen;

                  //顯示次要刻度的網格線
                  var grid = formsPlot1.Plot.GetDefaultGrid();
                  grid.MajorLineStyle.Color = Colors.Black.WithOpacity(.15);
                  grid.MinorLineStyle.Color = Colors.Black.WithOpacity(.05);
                  grid.MinorLineStyle.Width = 1;

                  formsPlot1.Refresh();
              }
          }

      運行效果展示:

      項目演示入口

              private void Btn_ScatterChart_Click(object sender, EventArgs e)
              {
                  ScatterChart formScatterChart = new ScatterChart();
                  // 顯示目標窗體
                  formScatterChart.Show();
              }

              private void Btn_PieChart_Click(object sender, EventArgs e)
              {
                  PieChart formPieChart = new PieChart();
                  // 顯示目標窗體
                  formPieChart.Show();
              }

              private void Btn_BarChart_Click(object sender, EventArgs e)
              {
                  BarChart formbarChart = new BarChart();
                  // 顯示目標窗體
                  formbarChart.Show();
              }

              private void Btn_LineChart_Click(object sender, EventArgs e)
              {
                  LineChart formLineChart = new LineChart();
                  // 顯示目標窗體
                  formLineChart.Show();
              }

      項目源碼地址

      更多項目實用功能和特性歡迎前往項目開源地址查看??,別忘了給項目一個Star支持??。

      優秀項目和框架精選

      該項目已收錄到C#/.NET/.NET Core優秀項目和框架精選中,關注優秀項目和框架精選能讓你及時了解C#、.NET和.NET Core領域的最新動態和最佳實踐,提高開發工作效率和質量。坑已挖,歡迎大家踴躍提交PR推薦或自薦(讓優秀的項目和框架不被埋沒??)。

      DotNetGuide技術社區交流群

      • DotNetGuide技術社區是一個面向.NET開發者的開源技術社區,旨在為開發者們提供全面的C#/.NET/.NET Core相關學習資料、技術分享和咨詢、項目推薦、招聘資訊和解決問題的平臺。
      • 在這個社區中,開發者們可以分享自己的技術文章、項目經驗、遇到的疑難技術問題以及解決方案,并且還有機會結識志同道合的開發者。
      • 我們致力于構建一個積極向上、和諧友善的.NET技術交流平臺,為廣大.NET開發者帶來更多的價值和成長機會。

      歡迎加入DotNetGuide技術社區微信交流群??

      posted @ 2024-03-14 08:30  追逐時光者  閱讀(3276)  評論(10)    收藏  舉報
      主站蜘蛛池模板: 中文字幕一区二区久久综合 | 日韩av天堂综合网久久| 亚洲高清日韩专区精品| gogogo高清在线观看视频中文| 国产成人午夜在线视频极速观看| 国产精品久久久久久人妻精品动漫| 骚虎视频在线观看| 日本一区三区高清视频| 免费无码高潮流白浆视频| 久久人人爽人人爽人人片av| 日本一区二区三区东京热| 91精品国产午夜福利| 欧美一区二区| 亚洲一区二区三级av| 美乳丰满人妻无码视频| 亚洲国产精品嫩草影院久久| 国精品无码一区二区三区左线| 国产乱久久亚洲国产精品| 国产精品不卡一二三区| 欧美老熟妇喷水| 撩起胸让我的?蹭来蹭去| 国产精品第一区亚洲精品| 国产99视频精品免费视频76| 色综合久久精品中文字幕| 人人澡人人妻人人爽人人蜜桃| 国产午夜福利精品视频| 漂亮人妻被强中文字幕久久| 九九在线精品国产| 在线天堂最新版资源| 在线观看免费人成视频色| 亚洲av本道一区二区| 亚洲情A成黄在线观看动漫尤物 | 国产一级毛片高清完整视频版| 2018年亚洲欧美在线v| 国产精品综合在线免费看| 日产国产精品亚洲系列| 欧美成人精品三级网站| 91精品国产综合久蜜臀| 一本大道无码av天堂| 白丝乳交内射一二三区| 四虎国产精品免费久久|