我正在 Octave 中在另一个之上创建一个直方图。
hold on;
hist(normalData(:, column), 10, 1, "facecolor", "g");
hist(anomalousData(:, column), 10, 1, "facecolor", "r");
hold off;
如您所见,存在重叠,红色数据掩盖了一些绿色数据。有没有解决的办法?也许通过在重叠部分混合颜色?
您的问题还有很长的路要走。不幸的是,透明度“facealpha”的绘图属性不适用于 hist() 函数。
下面的代码显示了我的工作。默认的图形工具包可能是fltk,所以改成gnuplot。
clear all
graphics_toolkit("gnuplot")
A = randn(1000,1);
B = randn(1000,1)+2;
仍然使用 hist 来计算分布
[y1 x1] = hist(A,10);
[y2 x2] = hist(B,10);
现在我们要将 hist 数据转换为允许透明度的绘图格式。
[ys1 xs1] = stairs(y1, x1);
[ys2 xs2] = stairs(y2, x2);
xs1 = [xs1(1); xs1; xs1(end)]; xs2 = [xs2(1); xs2; xs2(end)];
ys1 = [0; ys1; 0]; ys2 = [0; ys2; 0];
使用填充函数绘制数据
clf
hold on;
h1=fill(xs1,ys1,"red");
h2=fill(xs2,ys2,"green");
将透明度更改为所需的级别。
set(h1,'facealpha',0.5);
set(h2,'facealpha',0.5);
hold off;
如果我有更多的声誉,我会发布一张图片。
我在网上找到了一个非常简单的方法来做到这一点(这不是我的,我真的不知道这是否允许),网页是这样的
代码是这样的
hist(data1);
hold on;
hist(data2);
hist(data3);
h = findobj(gca,’Type’,’patch’);
display(h)
set(h(1),’FaceColor’,’r’,’EdgeColor’,’k’);
set(h(2),’FaceColor’,’g’,’EdgeColor’,’k’);
set(h(2),’FaceColor’,’b’,’EdgeColor’,’k’);