setting point sizes when using Gadfly in Julia
Asked Answered
S

2

7

In my attempts to practice Julia, I've made a program which draws a bifurcation diagram. My code is as follows:

function bifur(x0,y0,a=1.3,b=0.4,n=1000,m=10000)
    i,x,y=1,x0,y0
    while i < n && abs(x) < m
        x,y = a - x^2 + y, b * x
        i += 1
    end
    if abs(x) < m
        return x
    else
        return 1000
    end
end
la = Float64[];
lx = Float64[];
for a=0:400
    for j = 1:1000
        x0 = rand()
        y0 = rand()
        x = bifur(x0,y0,a/100)
        if x != 1000
            push!(la,a/100) 
            push!(lx,x)
        end
    end
end
using Gadfly
myplot = Gadfly.plot( x=la, y=lx , Scale.x_discrete, Scale.y_continuous, Geom.point)
draw(PNG("myplot.png",10inch,8inch),myplot)

The output I get is this image: enter image description here

In order to make my plot look more like this: enter image description here I need to be able to set point sizes to as small as one pixel. Then by increasing the iteration length I should be able to get a better bifurcation diagram. Does anyone know how to set the point sizes in Gadfly diagrams in Julia?

Steel answered 3/9, 2014 at 9:39 Comment(3)
Have you tried changing the default_point_size in the Theme defaults?Coriss
Also do you know how to set the plot range by hand?Steel
Have a look at the Scale params. Also wondering if you can set ymin and/or ymax, etc.Coriss
C
6

[Just to encapsulate the comments as an answer...]

Gadfly's Theme defaults can be changed. In particular, point_size is probably what you are looking for.

For changing the automatic plot scale/range settings, have a look at Gadfly's Scale params.

Coriss answered 3/9, 2014 at 9:39 Comment(3)
@Cokes: Thanks! Links are fixed now.Coriss
Links are broken again and I think Gadfly has changed some of these options. gadflyjl.org/stable/man/themesSteel
@Steel I've marked the answer as "community wiki". Please feel free to update this answer or to provide a new one. I'm not currently using Gadfly.Coriss
L
1

If changing Theme values seems like too much, you can do it in the plot call directly. You need to provide an array of the same size as your x and y.

using Gadfly

x = rand(10)
y = rand(10)

p = plot(x=x, y=y, size=fill(2px, length(x)))
Limoli answered 14/9, 2023 at 12:41 Comment(0)

© 2022 - 2025 — McMap. All rights reserved.