画伪彩图不是很方便

画伪彩图不是很方便。

本来MATLAB代码是(我精简过):

figure;
h=pcolor(xvec,yvec,zmat);
set(h,'edgecolor','none','facecolor','interp');
colorbar;
grid on;
set(gcf,'position',[10,10,1500,1000])
ylim([-3 3]);

AI换成Julia代码是:

using Plots

heatmap(
        xvec, yvec, zmat,
        color=:viridis, grid=false, cbar=true
        )
plot!(xlims=(0, 2), ylims=(-3, 3), size=(1500, 1000))

但是它会报错:

ERROR: MethodError: no method matching ty_heatmap(::Vector{Float64}, ::Vector{Float64}, ::Matrix{Float64}; color=:viridis, grid=false, cbar=true)
Closest candidates are:
  ty_heatmap(::PyCall.PyObject, ::Any, ::Any; cmap, xlabel, ylabel, colorvariable, colormethod, norm, annot, rotation, fmt, kwargs...) at C:\Users\Public\TongYuan\.julia\dev\TyPlot\src\Image Plots\ty_heatmap.jl:78
  ty_heatmap(::Any, ::Any; cmap, xlabel, ylabel, xvalues, yvalues, colorvariable, colormethod, norm, annot, rotation, fmt, kwargs...) at C:\Users\Public\TongYuan\.julia\dev\TyPlot\src\Image Plots\ty_heatmap.jl:165
  ty_heatmap(::PyCall.PyObject, ::Vector; cmap, xlabel, ylabel, xvalues, yvalues, norm, annot, rotation, fmt, kwargs...) at C:\Users\Public\TongYuan\.julia\dev\TyPlot\src\Image Plots\ty_heatmap.jl:20
  ...

我希望能有MATLAB那样interp的功能。Syslab官方的pcolor说明文档没有这种说明。

f = figure();

xvec = [1 2 3; 1 2 3; 1 2 3];

yvec = xvec';

zmat = [3 4 5; 1 2 5; 5 5 5];

h=pcolor(xvec,yvec,zmat);

colorbar(h);

grid("on");

ylim([-3 3]);

可以使用上述例子进行绘制伪彩图,暂时还不支持interp功能

你好,我的数据比较多。网格非常明显。

下面是设置了h.set_edgecolor("none");之后的:
image
这种网格有没有办法去掉?

再讲一个可能的bug:
绘图界面上面的Colorbar按钮,可以关掉这个例子中的colorbar,但是开不了。只有colorbar(h);可以打开。

# 关闭网格或者不调用grid("on"),绘图默认不显示网格
grid("off");

图形界面按钮还没有支持pcolor的绘图对象,确实是个遗漏,需要补充一下

你好,我的

grid("off");

控制的实际上是图上的黑线,而不是白线。
image
白线是因为我设置了h.set_edgecolor("none"),否则白色部分默认为下图的黑色。

image

这里似乎有两种不同的网格需要控制。

grid("off");控制的是刻度上引出的网格线
pcolor绘图本身的区域块是存在黑线的分割,看上去你的h.set_edgecolor("none") 实际生效了,右边黄色区域显示是没有问题的。

1 个赞

例如:

h.set_edgecolor("none") 可以将pcolor对象边颜色默认设置为透明色