LiveCharts WPF 中单独着色的数据点

2023-12-29

我正在使用 Live Charts WPF 来绘制一些图表。为了使每个栏具有不同的颜色,我添加了多个系列,但它没有显示x-axis所有系列的标签。为什么?

senderChart.Series = new SeriesCollection();
    int i = 0;
   var ax = new Axis
   {
       Separator = new LiveCharts.Wpf.Separator()
       {
           Step = 1
       },
       Labels = dateValues,
       ShowLabels = true
   };
   senderChart.AxisX.Add(ax);
    foreach (var val in dataValues)
    {
        senderChart.Series.Add(new ColumnSeries
        {
            DataLabels = true,
            Title = dateValues[i],
            Values = new ChartValues<double>{val},
        });
        i++;
    }  

我还尝试了几乎所有不同的将系列分配给图表的方法,但仍然得到相同的结果。


您有 20 个系列,但每个系列只有一个数据点,这就是为什么您只获得一个标签。仅使用单个系列将更接近 LiveCharts 的预期用途。然后,您可以通过引入来控制条形颜色mapper https://lvcharts.net/App/documentation/beta/wpf/LiveCharts-Configurations-Mappers (更多信息 https://lvcharts.net/App/examples/v1/wpf/Types%20and%20Configuration).

这是一个例子:

//create the mapper
var dapperMapper = new CartesianMapper<double>()
    //the data point will be displayed at the position of its index on the X axis
    .X((value, index) => index)
    //the data point will have a Y value of its value (your double) aka the column height
    .Y((value) => value)
    //pass any Func to determine the fill color according to value and index
    //in this case, all columns over 3 height will be pink
    //in your case, you want this to depend on the index
    .Fill((value, index) => (value > 3.0 ? Brushes.HotPink : Brushes.YellowGreen));

//assign the mapper globally (!)
LiveCharts.Charting.For<double>(dapperMapper, SeriesOrientation.Horizontal);

这样,您就可以使用每月一个值的单个系列。你可以有你的填充Func像这样,它循环显示 12 种颜色。

这是一个完整的示例,其中的名字与您的名字相近:

public partial class MainWindow : Window
{
    public SeriesCollection senderChart { get; set; }
    public double[] dataValues = { 1, 7, 4, 8, 3, 12, 4, 3, 2, 21, 4, 2, 7, 3, 23, 34, 5, 47, 2, 3, 45, 58, 3, 4 };
    public string[] dateValues = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
                                 , "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };

    public MainWindow()
    {
        var doubleMapperWithMonthColors = new LiveCharts.Configurations.CartesianMapper<double>()
            .X((value, index) => index)
            .Y((value) => value)
            .Fill((v, i) =>
            {
                switch (i % 12)
                {
                    case  0: return Brushes.LightBlue; //january
                    case  1: return Brushes.LightCoral; //february
                    case  2: return Brushes.PaleGoldenrod; //march
                    case  3: return Brushes.OrangeRed; //april
                    case  4: return Brushes.BlueViolet; //may
                    case  5: return Brushes.Chocolate; //june
                    case  6: return Brushes.PaleVioletRed; //july
                    case  7: return Brushes.CornflowerBlue; //august
                    case  8: return Brushes.Orchid; //september
                    case  9: return Brushes.Thistle; //october
                    case 10: return Brushes.BlanchedAlmond; //november
                    case 11: return Brushes.YellowGreen; //december 
                    default: return Brushes.Red;
                }
            });

        LiveCharts.Charting.For<double>(doubleMapperWithMonthColors, SeriesOrientation.Horizontal);



        senderChart = new SeriesCollection();

        var columnSeries = new ColumnSeries() { Values = new ChartValues<double>(), DataLabels = true, Title = "Appointments" };
        var labels = this.dateValues;

        foreach (var val in dataValues)
        {
            columnSeries.Values.Add(val);
        }

        this.senderChart.Add(columnSeries);

        DataContext = this;
    }
}

XAML:

<Window x:Class="WpfApp1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:lvc="clr-namespace:LiveCharts.Wpf;assembly=LiveCharts.Wpf"
        Title="MainWindow" Height="400" Width="900">
        <lvc:CartesianChart Series="{Binding senderChart}" Margin="48, 48, 48, 24">
            <lvc:CartesianChart.AxisX>
                <lvc:Axis Labels="{Binding Labels}">
                    <lvc:Axis.Separator>
                        <lvc:Separator Step="1" Stroke="{x:Null}"/>
                    </lvc:Axis.Separator>
                </lvc:Axis>
            </lvc:CartesianChart.AxisX>
        </lvc:CartesianChart>
</Window>

Result: Result

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

LiveCharts WPF 中单独着色的数据点 的相关文章

  • Web 客户端和 Expect100Continue

    使用 WebClient C NET 时设置 Expect100Continue 的最佳方法是什么 我有下面的代码 我仍然在标题中看到 100 continue 愚蠢的 apache 仍然抱怨 505 错误 string url http
  • 用于检查类是否具有运算符/成员的 C++ 类型特征[重复]

    这个问题在这里已经有答案了 可能的重复 是否可以编写一个 C 模板来检查函数是否存在 https stackoverflow com questions 257288 is it possible to write a c template
  • 查找c中结构元素的偏移量

    struct a struct b int i float j x struct c int k float l y z 谁能解释一下如何找到偏移量int k这样我们就可以找到地址int i Use offsetof 找到从开始处的偏移量z
  • Asp.NET WebApi 中类似文件名称的路由

    是否可以在 ASP NET Web API 路由配置中添加一条路由 以允许处理看起来有点像文件名的 URL 我尝试添加以下条目WebApiConfig Register 但这不起作用 使用 URIapi foo 0de7ebfa 3a55
  • 使用实体框架模型输入安全密钥

    这是我今天的完美想法 Entity Framework 中的强类型 ID 动机 比较 ModelTypeA ID 和 ModelTypeB ID 总是 至少几乎 错误 为什么编译时不处理它 如果您使用每个请求示例 DbContext 那么很
  • 堆栈溢出:堆栈空间中重复的临时分配?

    struct MemBlock char mem 1024 MemBlock operator const MemBlock b const return MemBlock global void foo int step 0 if ste
  • 带动态元素的 WPF 启动屏幕。如何?

    我是 WPF 新手 我需要一些帮助 我有一个加载缓慢的 WPF 应用程序 因此我显示启动屏幕作为权宜之计 但是 我希望能够在每次运行时更改屏幕 并在文本区域中显示不同的引言 这是一个生产力应用程序 所以我将使用非愚蠢但激励性的引言 当然 如
  • 将多个表映射到实体框架中的单个实体类

    我正在开发一个旧数据库 该数据库有 2 个具有 1 1 关系的表 目前 我为每个定义的表定义了一种类型 1Test 1Result 我想将这些特定的表合并到一个类中 当前的类型如下所示 public class Result public
  • while 循环中的 scanf

    在这段代码中 scanf只工作一次 我究竟做错了什么 include
  • 如何在整个 ASP .NET MVC 应用程序中需要授权

    我创建的应用程序中 除了启用登录的操作之外的每个操作都应该超出未登录用户的限制 我应该添加 Authorize 每个班级标题前的注释 像这儿 namespace WebApplication2 Controllers Authorize p
  • 什么时候虚拟继承是一个好的设计? [复制]

    这个问题在这里已经有答案了 EDIT3 请务必在回答之前清楚地了解我要问的内容 有 EDIT2 和很多评论 有 或曾经 有很多答案清楚地表明了对问题的误解 我知道这也是我的错 对此感到抱歉 嗨 我查看了有关虚拟继承的问题 class B p
  • 覆盖子类中的字段或属性

    我有一个抽象基类 我想声明一个字段或属性 该字段或属性在从该父类继承的每个类中具有不同的值 我想在基类中定义它 以便我可以在基类方法中引用它 例如覆盖 ToString 来表示 此对象的类型为 property field 我有三种方法可以
  • 对现有视频添加水印

    我正在寻找一种用 C 在视频上加水印的方法 就像在上面写文字一样 图片或文字标签 我该怎么做 谢谢 您可以使用 Nreco 视频转换器 代码看起来像 NReco VideoConverter FFMpegConverter wrap new
  • cmake 将标头包含到每个源文件中

    其实我有一个简单的问题 但找不到答案 也许你可以给我指一个副本 所以 问题是 是否可以告诉 cmake 指示编译器在每个源文件的开头自动包含一些头文件 这样就不需要放置 include foo h 了 谢谢 CMake 没有针对此特定用例的
  • C# 成员变量继承

    我对 C 有点陌生 但我在编程方面有相当广泛的背景 我想做的事情 为游戏定义不同的 MapTiles 我已经像这样定义了 MapTile 基类 public class MapTile public Texture2D texture pu
  • 基于 OpenCV 边缘的物体检测 C++

    我有一个应用程序 我必须检测场景中某些项目的存在 这些项目可以旋转并稍微缩放 更大或更小 我尝试过使用关键点检测器 但它们不够快且不够准确 因此 我决定首先使用 Canny 或更快的边缘检测算法 检测模板和搜索区域中的边缘 然后匹配边缘以查
  • 测试用例执行完成后,无论是否通过,如何将测试用例结果保存在变量中?

    我正在使用 NUNIT 在 Visual Studio 中使用 Selenium WebDriver 测试用例的代码是 我想在执行测试用例后立即在变量中记录测试用例通过或失败的情况 我怎样才能实现这一点 NUnit 假设您使用 NUnit
  • C# 模拟VolumeMute按下

    我得到以下代码来模拟音量静音按键 DllImport coredll dll SetLastError true static extern void keybd event byte bVk byte bScan int dwFlags
  • Windows 和 Linux 上的线程

    我在互联网上看到过在 Windows 上使用 C 制作多线程应用程序的教程 以及在 Linux 上执行相同操作的其他教程 但不能同时用于两者 是否存在即使在 Linux 或 Windows 上编译也能工作的函数 您需要使用一个包含两者的实现
  • 如何在文本框中插入图像

    有没有办法在文本框中插入图像 我正在开发一个聊天应用程序 我想用图标图像更改值 等 但我找不到如何在文本框中插入图像 Thanks 如果您使用 RichTextBox 进行聊天 请查看Paste http msdn microsoft co

随机推荐

  • HtmlUnit 和片段标识

    我目前想知道如何处理片段标识 我想要从中获取信息的链接包含片段标识 看起来 HtmlUnit 正在丢弃我的 url 的 db4mj 因此加载原始 url 有谁知道处理片段身份的方法吗 如果需要 我可以发布示例代码来进一步解释 EDIT 由于
  • 在 Redux Thunk 中使用 getState 是一个好的实践吗?

    我在其他问题中看到了关于是否使用的相互矛盾的 或者对我来说只是令人困惑的 答案getState在一个动作中是可以接受的 也可以是不可以接受的 我已经好几次看到它被称为反模式 对我来说 它似乎工作得很好 但如果我们不使用的话 这样做的最佳实践
  • 如何在 Java AWT 和/或 Swing 中更改光标图像?

    I m making a simple graphics editor i e a paint program I am not planning on anything fancy but I do want my program to
  • Laravel 返回带有旧输入的页面进行验证

    对于更新个人资料页面 我使用路线作为 Route get editdriver data DriverController EditDriver 在我使用验证后的控制器中 return Redirect to editdriver data
  • 如何使用 JavaScript 只允许字母数字字符

    一直在玩 JavaScript 我想做的就是只允许密码字段中的某些字符 a z A Z 和 0 9
  • HTML 阻止空格键滚动页面

    我正在使用代码 window onkeydown function e return e keyCode 32 这正是我想要的 当按下空格键时停止页面滚动 但是 它也会阻止用户在文本框中键入空格 有没有办法在打字时防止空格键滚动并保留空格键
  • .NET DDD 示例 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 您使用哪些 Python 重构工具? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我有很多类想要重命名 其中一些名称很小 并且该名称在其他类名称中重复使用 我不希望更改该名称 其中大部分
  • GitHub Action:如何在 docker 容器内运行命令

    今天刚开始学习CI CD 今天不知道 docker 之前是什么 我能够通过我的 Unity 项目在 CircleCI 上运行 CD 所有运行命令都发生在 docker 容器内 version 2 1 executors unity dock
  • 修复 HTML 视频元素的黑色矩形

    我正在实施 WebRTC 视频聊天 我想实现以下案例 默认情况下 视频元素通过 CSS 具有背景图像 如果没有视频输入 则用户会看到他 或对话者 的头像 No video expected result No video actual re
  • 如何设置 Angular Timepicker 的最短时间和最长时间?

    有没有办法为 Angular 的引导时间选择器设置最短时间和最长时间 使用 Angular 的 Datepicker 设置支持最小和最大日期 我想知道 Timepicker 是否允许类似的功能 查看中的设置Timepicker 的 Angu
  • 如何在 EF Code First 中创建/更新 LastModified 字段

    我想添加一个列 用于在将记录保存到磁盘时存储当前的日期时间 实现这一目标的最佳方法是什么 我知道这不是一个非常复杂的问题 但我想知道 EF 是否有任何最佳实践或任何功能可以简化任务 例如 有没有什么方法可以将该字段的逻辑包含在表类中 以便在
  • Java EE DAO / DTO(数据传输对象)设计模式

    目前 我正在为我的工作项目使用 struts2 框架 在设计我的 DAO 类时 我心中有一个改进设计模式的问题 在我的搜索功能上 我有3种搜索 使用一个参数和另一个参数进行搜索 使用多个参数进行搜索 不带参数搜索 我的问题是 做DAO方法最
  • 如何查询 Sphinx 精确匹配的短语?

    Sphinx 似乎正在逐字搜索文档 我不知道如何在文档中搜索确切的短语 我试过SPH MATCH ALL SPH MATCH PHRASE但所有人都逐字搜索文档 我在我的 PHP 应用程序中使用它 如何查询 Sphinx 以匹配精确的字符串
  • 如何制作“空”RSS 提要

    我对 RSS 提要不太熟悉 但我可以使用 PHP 动态创建提要 而且效果很好 我的问题是 有时提要没有任何项目 我将提要项目的期限限制为 60 天 有时在这段时间内什么也没有发生 我期望发生的是我根本不会有任何
  • 如何在同一台服务器上托管两个公开端口 80 的 Docker 容器

    我有 2 个网站 客户端需要在端口 80 上连接到 每个网站都在自己的容器中运行 我想在同一台 Docker 主机上运行这两个容器 据我所知 80端口只能在主机上暴露一次 存在哪些具有最小开销 管理的解决方案 允许我在同一主机上简单地运行两
  • 从实体框架类获取默认sql值

    我使用的是 T4 模板 对中提出的模板稍加修改this https stackoverflow com a 15936878 1641172答案是从我的 EF POCO 生成打字稿接口 EF Core POCO 首先生成数据库 并且某些数据
  • React TestUtils,如何模拟文档mouseMove?

    我想用TestUtils Simulate mouseMove on the document 我有一个组件Dragger这增加了一个mouseMove事件侦听器document 这是一个不完整的版本 Dragger js use stri
  • 从 readr::read_csv 中读取的数据中删除属性

    readr read csv添加编辑数据时不会更新的属性 例如 library tidyverse df lt read csv A B C na 1 x nb 1 y nc 1 z Remove columns with only one
  • LiveCharts WPF 中单独着色的数据点

    我正在使用 Live Charts WPF 来绘制一些图表 为了使每个栏具有不同的颜色 我添加了多个系列 但它没有显示x axis所有系列的标签 为什么 senderChart Series new SeriesCollection int