C# 来自.Net图表的意外行为
我正在尝试创建.Net图表(Windows.Forms)并将其导出到C# 来自.Net图表的意外行为,c#,.net,winforms,charts,mschart,C#,.net,Winforms,Charts,Mschart,我正在尝试创建.Net图表(Windows.Forms)并将其导出到.jpeg文件 下面是它的代码 public void ExportRouteGraphToJpeg(string nameOfChart, int xMax, int yMax, int xMin, int yMin ) { var chartForExport = new Chart(); chartForExport.Series.Clear(); var xVsYSeries = new Ser
.jpeg
文件
下面是它的代码
public void ExportRouteGraphToJpeg(string nameOfChart, int xMax, int yMax, int xMin, int yMin )
{
var chartForExport = new Chart();
chartForExport.Series.Clear();
var xVsYSeries = new Series
{
Name = "XvsY",
Color = Color.Blue,
IsVisibleInLegend = false,
IsXValueIndexed = true,
ChartType = SeriesChartType.Point,
MarkerSize = 6,
MarkerColor = Color.Blue
};
for (var i = 0; i < xValue.Length; i++)
{
xVsYSeries.Points.AddXY(xValue[i], yValue[i]);
}
chartForExport.Series.Add(xVsYSeries);
// Chart Area Definition
var chartArea = new ChartArea
{
Name = "SupportPoints",
AxisX =
{
Title = "X Co-ordinate [cm]",
ArrowStyle = AxisArrowStyle.Triangle,
Maximum = xMax + 100,
Minimum = xMin - 100
},
AxisY =
{
Title = "Y Co-ordinate [cm]",
ArrowStyle = AxisArrowStyle.Triangle,
Maximum = yMax + 100,
Minimum = yMin - 100
}
};
chartForExport.ChartAreas.Add(chartArea);
chartForExport.Location = new Point(0, 50);
chartForExport.TabIndex = 0;
chartForExport.Name = "ChartRoute";
chartForExport.SaveImage(nameOfChart + ".jpeg", ChartImageFormat.Jpeg);
}
public void ExportRouteGraphToJpeg(字符串名为chart,int-xMax,int-yMax,int-xMin,int-yMin)
{
var chartForExport=新图表();
chartForExport.Series.Clear();
var xVsYSeries=新系列
{
Name=“XvsY”,
颜色=颜色。蓝色,
IsVisibleInLegend=false,
IsXValueIndexed=true,
ChartType=系列ChartType.Point,
MarkerSize=6,
MarkerColor=Color.Blue
};
对于(变量i=0;i
我得到的输出如下所示(对于xValue=1000、2000、3000、4000的5个点,对于yValue也是如此)
当我删除AxisX和AxisY的Maximum=yMax+100,Minimum=yMin-100
时,我得到了所需的输出。请看下面
有什么建议说明为什么会发生这种情况吗 使用一些第三方图表,如high chart,示例如下
DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Bar Chart</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script src="http://code.jquery.com/jquery-1.9.1.js" type="text/javascript"></script>
<script src="http://code.highcharts.com/highcharts.js" type="text/javascript"></script>
<script src="http://code.highcharts.com/modules/exporting.js" type="text/javascript"></script>
<script type="text/javascript">
$(function() {
$('#container').highcharts({
chart: {
type: 'bar'
},
title: {
text: 'MyFruit database info'
},
xAxis: {
categories: ['Records', 'Fragmentation', 'Users']
},
yAxis: {
title: {
text: 'Values'
}
},
series: [
{
name: 'MyFruit_Sites',
data: [10, 50, 4]
}, {
name: 'MyFruit_Devices',
data: [500, 80, 3]
}
]
});
// the button handler
$('#button').click(function () {
var chart = $('#container').highcharts();
chart.addSeries({
name: 'MyFruit_Users',
data: [30, 60, 4]
});
});
});
</script>
</head>
<body>
<div id="container" style="min-width: 400px; height: 400px; margin: 0 auto"></div>
<button id="button" class="autocompare">Add series</button>
</body>
</html>
DOCTYPE html PUBLIC“-//W3C//DTD html 4.01//EN”http://www.w3.org/TR/html4/strict.dtd">
条形图
$(函数(){
$(“#容器”)。高图({
图表:{
类型:'bar'
},
标题:{
文本:“我的水果数据库信息”
},
xAxis:{
类别:[“记录”、“碎片”、“用户”]
},
亚克斯:{
标题:{
文本:“值”
}
},
系列:[
{
名称:“MyFruit_网站”,
数据:[10,50,4]
}, {
名称:“MyFruit_设备”,
数据:[500,80,3]
}
]
});
//按钮处理程序
$(“#按钮”)。单击(函数(){
var chart=$(“#容器”).highcharts();
chart.addSeries({
名称:“MyFruit_用户”,
数据:[30,60,4]
});
});
});
添加系列
从序列定义中删除isxvalueindex=true
这不是答案,也不是用c#抱歉,但你在这里帮不了忙。我在问一个问题,但你回答的是一些你知道的问题,而不是问题的答案。第一次输出是否仅在保存到jpg文件或在表单上显示时发生?@LeiYang我不使用表单,我只使用表单汇编作为控制台应用程序。你能给出一个工作示例吗
xValue
和yValue
不编译,我想复制并试用。@LeiYang,请找到'xValue=new[]{1000,2000,3000,4000,5000}的值;yValue=new[]{1000,2000,3000,4000,5000};xMax=xValue.Max();yMax=yValue.Max();xMin=xValue.Min();yMin=yValue.Min()`我注意到默认值最大值
和最小值
都是NaNWell,问题不是它为什么有效,而是它为什么会打破图表。如果查看属性文档,它会告诉您,当您将其设置为true时,它会忽略点X值并使用其索引。此外,如果手动将最小值设置为0(零),您将看到所有点“堆叠”,接近X=0。底线是:如果要使用某些属性,您应该知道使用的原因以及它对图表的影响。图表
对象在属性中有无数属性,很容易在你面前爆炸…:O)