# Plotting a raster image

**URL:** <https://discourse.julialang.org/t/plotting-a-raster-image/83796>\
**Category:** General Usage\
**Tags:** question, plotting\
**Created:** [July 5, 2022, 8:29pm UTC](https://discourse.julialang.org/t/plotting-a-raster-image/83796 "2022-07-05T20:29:14Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![\_stla](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/_stla/32/35613_2.png) [@\_stla](https://discourse.julialang.org/u/_stla)\
**Post date:** [July 5, 2022, 8:29pm UTC](https://discourse.julialang.org/t/plotting-a-raster-image/83796/1 "2022-07-05T20:29:14Z")

</div>

Hello,

Is there a Julia package to plot a raster image pixel by pixel? I mean I have a complex function `f`, say on a square, and for each point `z` of the square I want to plot `f(z)` as a color (with my own color mapping). Example (made with R):

 ![zeta](https://global.discourse-cdn.com/julialang/original/3X/d/1/d1a8615dccad8f4f9ab736bb08c75a3c7b7f7e9b.png)

---

<div class="post-metadata">

**Author:** ![contradict](https://avatars.discourse-cdn.com/v4/letter/c/ac91a4/32.png) [@contradict](https://discourse.julialang.org/u/contradict)\
**Post date:** [July 5, 2022, 8:53pm UTC](https://discourse.julialang.org/t/plotting-a-raster-image/83796/2 "2022-07-05T20:53:25Z")

</div>

```julia
using Images

# Construct the array of complex values.
z = (1:-0.01:-1) .* im .+ (-1:0.01:1)';

# Define the function z->RGB on each point
f(z) = RGB(abs(imag(z)), abs(angle(z)), abs(z))

# Broadcast the function.
image = f.(z)

```

---

<div class="post-metadata">

**Author:** ![\_stla](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/_stla/32/35613_2.png) [@\_stla](https://discourse.julialang.org/u/_stla)\
**Post date:** [July 5, 2022, 8:55pm UTC](https://discourse.julialang.org/t/plotting-a-raster-image/83796/3 "2022-07-05T20:55:48Z")

</div>

Thanks. And then one has to do `plot(image)`?

---

<div class="post-metadata">

**Author:** ![contradict](https://avatars.discourse-cdn.com/v4/letter/c/ac91a4/32.png) [@contradict](https://discourse.julialang.org/u/contradict)\
**Post date:** [July 5, 2022, 9:02pm UTC](https://discourse.julialang.org/t/plotting-a-raster-image/83796/4 "2022-07-05T21:02:39Z")

</div>

I think if you are using VSCode it will automatically display. I have [ImageInTerminal](https://github.com/JuliaImages/ImageInTerminal.jl) installed, so I get a preview in the terminal. `Images.jl` exports `imshow`. You could also use one of the plotting packages, [Makie](https://makie.juliaplots.org/stable/examples/plotting_functions/image/) or [Plots](https://docs.juliaplots.org/stable/input_data/#Images).

---

<div class="post-metadata">

**Author:** ![ronubi](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ronubi/32/4085_2.png) [@ronubi](https://discourse.julialang.org/u/ronubi)\
**Post date:** [July 5, 2022, 9:32pm UTC](https://discourse.julialang.org/t/plotting-a-raster-image/83796/5 "2022-07-05T21:32:23Z")

</div>

FYI (may not be what you want), but `Plots.heatmap()` is a straightforward way to render (real) values of a 2-D array with a selectable (or definable) colormap. It’s similar to `imagesc()` in _Matlab_.

---

<div class="post-metadata">

**Author:** ![\_stla](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/_stla/32/35613_2.png) [@\_stla](https://discourse.julialang.org/u/_stla)\
**Post date:** [July 6, 2022, 7:14am UTC](https://discourse.julialang.org/t/plotting-a-raster-image/83796/6 "2022-07-06T07:14:33Z")

</div>

Thanks, this works. With Atom & Juno this also automatically plots the image. But there’s nothing to save it.

---

<div class="post-metadata">

**Author:** ![\_stla](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/_stla/32/35613_2.png) [@\_stla](https://discourse.julialang.org/u/_stla)\
**Post date:** [July 6, 2022, 10:28am UTC](https://discourse.julialang.org/t/plotting-a-raster-image/83796/7 "2022-07-06T10:28:01Z")

</div>

> [@\_stla](#):
>
> But there’s nothing to save it.

`Images.save("myimage.png", image)` is fine, but how to specify the width and the height in pixels?

---

<div class="post-metadata">

**Author:** ![empet](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/empet/32/221303_2.png) [@empet](https://discourse.julialang.org/u/empet)\
**Post date:** [July 6, 2022, 10:38am UTC](https://discourse.julialang.org/t/plotting-a-raster-image/83796/8 "2022-07-06T10:38:48Z")

</div>

To save the image at some resolution, resize it:

```julia
imgr = imresize(image, (m,n))
save("resized-image.png", imgr)

```

---

<div class="post-metadata">

**Author:** ![\_stla](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/_stla/32/35613_2.png) [@\_stla](https://discourse.julialang.org/u/_stla)\
**Post date:** [July 6, 2022, 10:53am UTC](https://discourse.julialang.org/t/plotting-a-raster-image/83796/9 "2022-07-06T10:53:19Z")

</div>

Thanks. In view of your avatar, it seems you like elliptic/modular functions. Here is one:

 ![zeta](https://global.discourse-cdn.com/julialang/original/3X/2/c/2cacd9b9c9ac77cbe22bf4c33cf0bedc92ad8e7c.jpeg)

Very fast with Julia, as usual.
