Skip to content

unrelated println statement leads to blank plot #559

@StephenVavasis

Description

@StephenVavasis

I encountered a strange bug in PyPlot that a println statement in a certain place in my code causes a plot to come out completely blank. Below is a stripped-down version of my code. If I include the code as is, then it makes three plots, but the third plot window is empty. However, if I comment out the println statement on l. 23, then the third plot appears as expected. This is Julia version 1.8.2, PyPlot was just installed today (2022-10-16), python version (according to Pyplot) is 3.9.12, matplotlib version (according to the error message when I type hold(true) at the REPL) is 3.5.2, and the platform is Windows 10.

module driver_ppbug
using LinearAlgebra
using PyPlot


function admm1(a)
    n = size(a,2)
    clusterID = vcat(ones(Int(n/2)),2*ones(Int(n/2)))
    itcount = 1
    return clusterID, itcount
end
    

function find_k_largest_clusters(clusterID, k1)
    return vcat([[1,2,3,4], [5,6,7]], [[i] for i = 8 : length(clusterID)])
end

function plotresult(a, clusterID)
    n = size(a,2)
    colors1 = "rgbcmky"
    mxcolor = length(colors1)
    result = find_k_largest_clusters(clusterID, mxcolor)
    println("result lens = ", [length(q) for q in result])
    plotted = [false for i = 1 : n]
    for i = 1 : mxcolor
        if length(result[i]) > 1
            plot(a[1,result[i]], a[2,result[i]], "*" * colors1[[i]])
        else
            break
        end
       plotted[result[i]] .= true
    end
    plot(a[1, .!plotted], a[2, .!plotted], "." * colors1[[mxcolor]])
    axis("equal")
    nothing
end    


function gm_generator(n)
    a = hcat(collect(1.0:1.0:n), sin.(1.0:1.0:n))'
    compID = vcat(ones(Int(n/2)), 2*ones(Int(n/2)))
    weight = ones(n)
    return a, compID, weight
end


function mxgau(n, sigma, lambdascale1, lambdascale2)
    a, compID, weight = gm_generator(n)
    sub1 = findall(compID .== 1)
    sub2 = findall(compID .== 2)
    close("all")
    figure(1)
    plot(a[1,sub1], a[2,sub1], "*r")
    plot(a[1,sub2], a[2,sub2], "*g")
    axis("equal")
    figure(2)
    plot(a[1,:], a[2,:], "*k")
    axis("equal")
    clusterID, itcount1 = admm1(a)
    figure(3)
    plotresult(a, clusterID)
    println("itcount1 = ", itcount1)
    nothing
end

mxgau(20, .3, .3, .1)

end

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions