[英]How to remove black border generated in CharDirector ContourLayer?
我有一段生成圖像的代碼。 我將適當的預期數據傳遞給此方法,並且它按預期生成圖像(除了1件事之外)。
ContourLayer layer = c.addContourLayer(dataX, dataY, zData);
double[] myColorScale = {-2,0x000000,0.0,0x00ffff,minval, 0xFFD700, maxval}; //this line creates the issue
// set the color scale, with underflow color 0x0000ff and overflow color 0xff0000
layer.colorAxis().setColorScale(myColorScale, 0x00ffff, 0xFF6347);
在您的代碼中,黑色表示-2 <x <0。(請注意零值不是黑色。)青色表示0 <= x <minval,並且x <-2(下溢顏色)。
黑環可能是因為此時的摘要值降到了0以下(例如-0.0000000001)。 我不知道您的數據是什么,但是我可以想到兩種可能性:
(a)中心附近的數據大於0(例如x = 10),而圖表邊界處的數據是較大的負值(例如x = -99)。 這兩個值均為青色。 但是,從x = 10到x = -99,必須存在-2 <x <0的區域,以便該區域為黑色。 這會導致黑圈。 要檢查是否是問題的原因,請使用其他下溢顏色(例如0x0000ff),這樣我們就可以查看邊界處的青色是否是由於下溢引起的。 如果這實際上是問題的原因,並且您只想用青色人工填充外部區域,則可以使用0 <= x <minval之間的值,也可以將繪圖區域的背景色設置為青色。
(b)在您的配色方案中,零值為青色。 如果使用樣條曲線插值,則樣條曲線可能會下沖。 因此,即使最小數據點為0,某些插值區域也可能降至0以下(例如-0.00001),並且在您的着色方案中它們將變為黑色。 我已附上一張圖片,以解釋樣條線為什么會超調或下沖。 要測試是否是問題的原因,請嘗試將插值方法設置為雙線性,以查看是否存在任何差異:
layer.setSmoothInterpolation(false);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.