我在一个绘图立方体中绘制多个曲面。但我不能让他们拥有相同的颜色条。我已经定义了一个ILColorbar并将它们添加到曲面,但它绘制了两个不同数字的颜色条。两个表面是否可以具有相同的颜色条?此外,如何在彩条(标题,标签)中添加文字?非常感谢你。这是一个例子:
private void ilPanel1_Load(object sender, EventArgs e)
{
var scene = new ILScene();
// add a new plot cube
var pc = scene.Add(new ILPlotCube());
pc.TwoDMode = false;
// Create Data
ILArray<float> A = ILSpecialData.torus(0.75f, .25f);
ILArray<float> B = ILSpecialData.torus(3.0f, .65f);
// Add the surface
var sf1 = new ILSurface(A);
var sf2 = new ILSurface(B);
pc.Add(sf1);
pc.Add(sf2);
sf1.Colormap = Colormaps.Jet;
sf2.Colormap = Colormaps.Jet;
var cb = new ILColorbar();
sf1.Add(cb);
sf2.Add(cb);
ilPanel1.Scene = scene;
}
答案 0 :(得分:2)
让他们使用相同的DataRange
。我在曲面上使用UpdateColormapped()
来提供相同的Tuple<float,float>
。这告诉他们使用colormap中的哪些颜色。由于某些原因,我无法使用相应的ILSurface
构造函数。这可能是个错误? (在这种情况下,有人应该提出问题吗?)
颜色栏的修改方式与任何其他对象一样:您可以按常规方式添加新的形状/标签。使用Padding
属性,为标签腾出更多空间:
private void ilPanel1_Load(object sender, EventArgs e) {
var scene = new ILScene();
// add a new plot cube
var pc = scene.Add(new ILPlotCube(twoDMode:false));
// Create Data
ILArray<float> A = ILSpecialData.torus(0.75f, .25f);
ILArray<float> B = ILSpecialData.torus(3.0f, .65f);
// Add the surfaces
var cdr = Tuple.Create<float,float>(-0.6f, 0.6f);
var sf1 = new ILSurface(0);
var sf2 = new ILSurface(0);
// provide the same datarange to both surfaces
sf1.UpdateColormapped(A, dataRange: cdr);
sf2.UpdateColormapped(B, dataRange: cdr);
pc.Add(sf1);
pc.Add(sf2);
sf1.Colormap = Colormaps.Jet;
sf2.Colormap = Colormaps.Jet;
var cb = new ILColorbar() {
Padding = new SizeF(10,30),
Children = {
new ILLabel("Title") {
Position = new Vector3(.5f,.1f,0),
Anchor = new PointF(.5f,.7f),
Font = new Font(DefaultFont, FontStyle.Bold)
},
new ILLabel("Label") {
Position = new Vector3(.12f,.5f,0),
Rotation = -Math.PI / 2,
}
}
};
sf1.Add(cb);
ilPanel1.Scene = scene;
}
您可能已经意识到,您根本不必使用情节立方体?如果我们在scene.Camera
下方添加圆环,我们会得到一个没有扭曲的圆环: