# Ticks with integer numbers only (instead of fractional values)

I am looking to make a scatter plot some values with x values that can only be integers (1,2,3…).

By default, Julia will sometimes use x ticks that are integers values, or sometimes as floats, depending on the range of x-values:

``````using Plots

n_data = 14
x = collect(1:n_data)
y = rand(n_data)

scatter(x, y)
``````

Taking n_data = 10, I get x ticks at (2,4,6,…) as I wish to obtain but with n_data = 14 I obtain fractional values of (2.5,5,7,5,…).

How can I force Julia to only display integers values as x ticks?

It would be nice if you could force ints/only use the x values specified, but I don’t know of a way. This works though

``````scatter(x, y, xticks = x)
``````
1 Like

One trick can be this one:

``````julia> x = 14*rand(20);

julia> function int_ticks(x; step=1)
imin = floor(Int, minimum(x))
imax = ceil(Int, maximum(x))
return range(imin, imax, step=step)
end
int_ticks (generic function with 2 methods)

julia> scatter(x, rand(20), xticks=int_ticks(x; step=2))

``````

or, to be sure that the extrema of the ticks appear:

``````julia> scatter(x, rand(20), xticks=int_ticks(x; step=2), xlims=extrema(int_ticks(x)))`
``````

Then you get: In other words, you can set anything to be the `xticks`, so you can do that by hand, such as `xticks=0:2:14`.

2 Likes