关于3D Surface Chart Z轴刻度范围调节问题。
你好!在3D Surface Chart中,,我的代码设置的Z轴范围是30~40,为什么在图上Z轴显示的却是0~38呢? 以下是我的部分代码。for (int i = 3; i < lines.Length; i++)
{
string[] values = lines.Split(',');
for (int j = 1; j < values.Length; j++)
{
if (string.IsNullOrEmpty(values.Trim()))
{
z = -999.0f;
}
else
{
if (double.Parse(values.Trim()) < 5 ||
double.Parse(values.Trim()) > 50)
{
z = -999.0f;
}
else
{
//-1.00N
if (values.Trim().IndexOf('N') > 0)
{
z = -999.0f;
}
else
{
z = double.Parse(values.Trim());
}
}
}
}
}
Chart3DAxis za = c1Chart3D1.ChartArea.AxisZ;
za.Max = 40;
za.Min = 30;
za.UnitMajor = 2;
za.UnitMinor = 1;
Chart3DDataSetGrid griddata = null;
griddata = new Chart3DDataSetGrid(1, 1, 1, 1, z);
griddata.Hole = -999.0f;
c1Chart3D1.ChartGroups.ChartData.SetGrid = griddata; 回复 1楼SAEUSER001的帖子
你好,请问你是否设置了AutoMax 和 AutoMin属性?
当这两个属性是True的时候图表自动计算轴的范围。
而且Max、Min的取值必须在自动计算出的范围里取值。这个自动计算的值是根据图表数据算出来的。 回复 2楼Alice的帖子
你好,我已经设置以下属性为false啊!但是还是无法调节, 如果Z轴刻度范围无法调节的话,很难看出数据趋势。附上测试代码及用ChartDirector作出的3D Surface图,谢谢!
za.AutoMax = false;
za.AutoMin = false;
za.AutoMinor = false;
za.AutoMajor = false; 回复 3楼SAEUSER001的帖子
你好。
你的代码示例我已经测试过了,的确存在你所说的问题。
该问题已经提交到产品组,如果有反馈我再通知你。 回复 3楼SAEUSER001的帖子
你好,这是产品的设计,Max/Min不能设置在数据的最小值到最大值之间。
如果轴的Min值设置大于你数据的最小值,或是Max值设置小于你数据的最大值,都会重置为默认值。 回复 5楼Alice的帖子
你好, 这个我也试个啊,也是不行滴,另外Z轴的刻度值无法格式化成我想要保留的小数点后2位数。
1) 绘图前置 35~50之外的数据为Hole 数据。
if (double.Parse(values.Trim()) < 35 ||
double.Parse(values.Trim()) > 50)
{
z = -999.0f;
}
......
griddata.Hole = -999.0f;
2) Z 轴的设置如下。
za.Max = 60;
za.Min = 30; 回复 6楼SAEUSER001的帖子
你好。
第一个问题:Z轴刻度值的格式化可以用值注释来做。分别用AnnoFormat 和AnnoFormatString。比如代码参考:
za.AnnoFormat = FormatEnum.NumericManual;
za.AnnoFormatString = "##.00,";
有关值注释请看我们的中文帮助文档:http://www.gcpowertools.com.cn/docs/ComponentOne/WinFormChart/#!Documents/_146.htm
第二个问题:若是你采用35-50之外的数据为Hole,那么za.Max可以设置为60,za.Min可以设置为30.在我本机设置是没有问题的。
你可以用如下代码得到数据的Z轴的最大值和最小值:
Chart3DData d1 = c1Chart3D1.ChartGroups.ChartData;
d1.GetMax(AxisTypeEnum.AxisZ);
d1.GetMin(AxisTypeEnum.AxisZ));
然后你设置的c1Chart3d.ChartArea.AxisZ.Max/Min的值不能在上面的范围内。
注意:先要将数据写入C1Chart3d,然后才能设置C1chart3d.ChartArea.AxisZ的最大值和最小值。
否则一开始设置Max/Min,由于数据不存在C1Chart3d里,设置是不会起作用的。
打开你上次给我的sample,将下图的代码注掉,然后移到最后的设置,在我的机子是OK的。
我把你的Samle改了,然后发上来,你可以看看区别。
回复 7楼Alice的帖子
你好! 谢谢你的回复,ComponentOne 的3D chart数值的范围很大程度上决定了Z轴的刻度范围, 这是我对33~66范围内数据绘制的3D Surface图,效果还行,但是Legend条上的数值不知是否能格式化为保留小数点后2位? 回复 8楼SAEUSER001的帖子
另外一个问题是,窗体最大化或Resize一定大小(比如width:1145,Height:668)后图形无法显示, 我的显示器为4:3比例的17寸显示器,屏幕分辨率设置为1280X1204。 回复 9楼SAEUSER001的帖子
这两个问题暂时没找到解决方法。
现在反馈到产品组等待解决方案。
页:
[1]
2