Matplotlib 朱莉娅:使用pgfplots软件包将矩阵绘制为图像

Matplotlib 朱莉娅:使用pgfplots软件包将矩阵绘制为图像,matplotlib,julia,pgf,Matplotlib,Julia,Pgf,从我的计算中,我得到了一个实数的二维数组。我想用它们做的是将它们绘制成一个图像,其中数组元素的值转换成一个颜色映射。到目前为止,我使用PyPlot软件包进行这种可视化。有了Pyplot,这很容易。使用灰色值的示例如下: using PyPlot test = rand(3,3); PyPlot.gray() imshow(test,interpolation="none") colorbar() 有没有办法做到这一点,但是使用PGFPlots包而不是PyPlot? 我已经尝试过使用Plot

从我的计算中,我得到了一个实数的二维数组。我想用它们做的是将它们绘制成一个图像,其中数组元素的值转换成一个颜色映射。到目前为止,我使用PyPlot软件包进行这种可视化。有了Pyplot,这很容易。使用灰色值的示例如下:

using PyPlot

test = rand(3,3);

PyPlot.gray()
imshow(test,interpolation="none")
colorbar()
有没有办法做到这一点,但是使用PGFPlots包而不是PyPlot?
我已经尝试过使用Plots.Image,但它不适用于数组而不是函数。有什么想法吗?

不确定在
PGFPlots
中是否有用于此的函数,但您可以通过创建一个新函数来绕过它:

function plot_matrix(my_matrix)
    n,m = collect(size(my_matrix)) .+ 1 .- 1e-10
    f(x,y) = my_matrix[Int(floor(x)), Int(floor(y))]
    Plots.Image(f, (1, m), (1, n))
 end
这将为您提供以下结果:

test = rand(3,3);
plot_matrix(test)

using Plots; pgfplots()
test = randn(3,3)
heatmap(test, c = :greys)
using Plots; pgfplots()
test = randn(3,3)
heatmap(test, c = :greys)