Charts Novacode线型图类型

Charts Novacode线型图类型,charts,linechart,novacode-docx,Charts,Linechart,Novacode Docx,我有一个代码实现了Novacode.LineChart。默认情况下显示的折线图类型如下: 但我不想要这种类型的图表,我想要没有点的图表,比如: 这是我创建图表的代码: LineChart c = new LineChart(); c.AddLegend(ChartLegendPosition.Bottom, false); c.Grouping = Grouping.Stacked; 有人知道我如何隐藏这些点并只显示线吗?谢谢大家 当我搜索完全相同的功能时,您的问题出现了

我有一个代码实现了
Novacode.LineChart
。默认情况下显示的折线图类型如下:

但我不想要这种类型的图表,我想要没有点的图表,比如:

这是我创建图表的代码:

   LineChart c = new LineChart();
   c.AddLegend(ChartLegendPosition.Bottom, false);
   c.Grouping = Grouping.Stacked;

有人知道我如何隐藏这些点并只显示线吗?谢谢大家

当我搜索完全相同的功能时,您的问题出现了。可能有点晚了,但我希望它对其他需要此功能的人有用

我所谓的答案只不过是几行肮脏且难以管理的黑客代码,所以除非你不是急需,否则我建议你不要这样做

我也不知道这是否是一种认可的方法,但我更喜欢一步一步地编写解决方案,这样可以帮助您掌握概念并使用更好的方法

在我意识到我无法使用DocX创建没有标记的折线图之后,我想知道实际输出和期望输出之间的区别。因此,在我手动编辑图表以获得预期结果后,我用折线图保存了一份.docx文件的副本

您可能已经知道,.docx是一种容器格式,基本上由几个不同的文件夹和文件组成。您可以使用.zip存档提取器打开它。我使用7-Zip完成此任务,并在/word/charts/chart1.xml的位置找到了图表文件,但这可能因文件而异,但您可以很容易地找到它

比较两个chart1.xml文件,区别在于,没有标记的文件有一个额外的xml标记,并且有一个额外的属性


我不得不以某种方式将这段代码添加到图表中。我将这些代码添加到DocX提供的示例代码中。您可以通过以下方式进行跟进:

这就是乐趣的开始。简单的第一部分

使用System.Xml;
使用System.Xml.Linq;
使用Xceed.Words.NET;
//创建一个折线图。
var line_chart=新线形图();
//创建数据。
var placeholder data=ChartData.GenerateRandomDataForLinechart();
//创建和添加系列
var Series_1=新系列(“带有占位符数据的随机图表”);
系列_1.绑定(占位符数据,“X轴”、“Y轴”);
折线图。添加系列(系列1);
//创建新的XmlDocument对象并克隆实际的图表XML
XmlDocument XMLWithNewTags=新的XmlDocument();
LoadXml(line_chart.Xml.ToString());
我已经习惯了,这一点很重要,因为你不能只是把标记添加到某个地方,然后期望它工作。我为什么要这样说?因为我在一条随机线上附加了标记标记,并希望它能工作。天真的

//使用正确的XPath位置和别名设置命名空间管理器
XmlNamespaceManager NSMngr=新的XmlNamespaceManager(XMLWithNewTags.NameTable);
字符串XPathQuery=“/c:chartSpace/c:chart/c:plotArea/c:lineChart/c:ser”;
字符串xmlns=”http://schemas.openxmlformats.org/drawingml/2006/chart";
NSMngr.AddNamespace(“c”,xmlns);
XmlNode NewNode=XMLWithNewTags.SelectSingleNode(XPathQuery,NSMngr);
现在,在新创建的具有指定名称空间的XML文档对象上创建必要的标记

xmlementsymbol=XMLWithNewTags.CreateElement(“c”,“Symbol”,xmlns);
Symbol.SetAttribute(“val”、“none”);
xmlement Marker=XMLWithNewTags.CreateElement(“c”,“Marker”,xmlns);
标记子(符号);
AppendChild(标记);
我们应该将最新更改的内容复制到实际的XML对象。但面向对象的是,它被定义为私有对象,因此是只读对象,这是可以理解的。这就是我想的“好吧,我已经摆弄够了。我最好找另一个图书馆”,但后来因为种种原因决定继续

已下载DocX repo,将行更改为

get;设置
重新编译,将Xceed.Words.NET.dll复制到projectfolder/packagesprojectfolder/projectname/bin/Debug文件夹,最后完成最后几行

//将最新更改的内容复制到实际的XML对象
line_chart.Xml=XDocument.Parse(XMLWithNewTags.InnerXml);
//在文档中插入图表
文件。插入图表(折线图);
//将此文档保存到磁盘。
document.Save();

值得吗?我不确定,但在工作中我学到了一些东西。这个答案中可能有很多糟糕的编程实践,所以如果你看到了,请告诉我。对不起,我的英语不好。

当我搜索完全相同的功能时,您的问题出现了。可能有点晚了,但我希望它对其他需要此功能的人有用

我所谓的答案只不过是几行肮脏且难以管理的黑客代码,所以除非你不是急需,否则我建议你不要这样做

我也不知道这是否是一种认可的方法,但我更喜欢一步一步地编写解决方案,这样可以帮助您掌握概念并使用更好的方法

在我意识到我无法使用DocX创建没有标记的折线图之后,我想知道实际输出和期望输出之间的区别。因此,在我手动编辑图表以获得预期结果后,我用折线图保存了一份.docx文件的副本

您可能已经知道,.docx是一种容器格式,基本上由几个不同的文件夹和文件组成。您可以使用.zip存档提取器打开它。我使用7-Zip完成此任务,并在/word/charts/chart1.xml的位置找到了图表文件,但这可能因文件而异,但您可以很容易地找到它

比较两个chart1.xml文件,区别在于,没有标记的文件有一个额外的xml标记,并且有一个额外的属性


我不得不以某种方式将这段代码添加到图表中。我把这些加在一起算了