我有这个ZedGraph控制代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using ZedGraph;
using Extracting_Frames;
namespace Lightnings_Extractor
{
public partial class Histogram_Graphs : Form
{
public long[] histogram;
public Histogram_Graphs()
{
InitializeComponent();
histogram = Form1.GetHistogramValue;
this.DoubleBuffered = true;
CreateGraph_GradientByZBars(zedGraphControl1);
}
private void Histogram_Graphs_Load(object sender, EventArgs e)
{
}
private void CreateGraph_GradientByZBars(ZedGraphControl z1)
{
GraphPane myPane = z1.GraphPane;
myPane.Title.Text = "Demonstration of Multi-Colored Bars with a Single BarItem";
myPane.XAxis.Title.Text = "Bar Number";
myPane.YAxis.Title.Text = "Value";
PointPairList list = new PointPairList();
Random rand = new Random();
for (int i = 0; i < histogram.Length; i++)
{
double x = (double)i + 1;
//double y = (double)i + 1;//rand.NextDouble() * 1000;
double z = i / 4.0;
list.Add(x, histogram[i], z);
}
BarItem myCurve = myPane.AddBar("Multi-Colored Bars", list, Color.Blue);
Color[] colors = { Color.Red, Color.Yellow, Color.Green, Color.Blue, Color.Purple };
myCurve.Bar.Fill = new Fill(colors);
myCurve.Bar.Fill.Type = FillType.GradientByZ;
myCurve.Bar.Fill.RangeMin = 0;
myCurve.Bar.Fill.RangeMax = 4;
myPane.Chart.Fill = new Fill(Color.White, Color.FromArgb(220, 220, 255), 45);
myPane.Fill = new Fill(Color.White, Color.FromArgb(255, 255, 225), 45);
// Tell ZedGraph to calculate the axis ranges
z1.AxisChange();
}
}
}
问题出在循环中:
for (int i = 0; i < histogram.Length; i++)
{
double x = (double)i + 1;
//double y = (double)i + 1;//rand.NextDouble() * 1000;
double z = i / 4.0;
list.Add(x, histogram[i], z);
}
Befote Y是随机的。现在我想使用直方图列表中的值。 所以例如在index [0]中有一个数字:34118然后在索引1 1521索引[2] 522 列表中有256个索引。
当我看到图表时,看到吟游诗人的身高很短。
在图表的开头,我看到一条线非常高,但所有下一条线都非常短。 在Y轴上,我看到侧面编号从0到40开始,在x轴上我看到从0到300的数字。
在轴Y上,我应该看到直方图中从0到最高值的数字,我想在轴X上我应该看到从0到256.
这里很乱。
我该如何解决?
感谢。
答案 0 :(得分:1)
您的代码中没有错误。您的图表准确地绘制了histogram[]
数组中的值。
您提到您的数组包含以下值:
histogram[0] = 34118
histogram[1] = 1521
histogram[2] = 522
...
如果您检查截图,则图表是正确的。绘制的第一个条形图非常高,其他剩余值(符合您的预期)接近1x10 ^ 3条带。您的histogram[]
数组可能是使用错误的数据初始化的,或者是索引[0]
的错误数据。
我只能从代码和数据的这一侧提供关于histogram[0]
处的值的重要性的推测,但是您可能正在接收一个数组,其中包含索引中所有剩余数据的总和{ {1}}。
作为对期望的快速检查,如果您将循环更改为从索引[0]
而不是[1]
开始,您将看到正在使用的绘图控件将对所有其他值正确执行预计接近1x10 ^ 3频段,您应检查填充[0]
数组的数据源,以查看该第一个数据点是否相关或是否已设置为错误值。
histogram