SciProgCentre/plotly.kt

FillColor of Shape is defined as val

Closed this issue · 5 comments

I am trying out to add a Shape in a scatter plot, and the fillcolor property is defined as val. I suppose it could be changed and, probably, it should be var instead?

Thank you very much!

@Joseph-Hui Color is an accessor. It is used not as color = "red" but as color("red") (for example here). It is done this way to be able to accept different types of color definition (like strings, numbers and number sets).

The shape example is here. The example is a bit outdated, but it should give you the general idea. shape is an extension function on Plot. Or you can use layout.figure function. It could look like this:

Plotly.plot{
  scatter{
  }
  shape{
   //use it here
  }
  layout{
    figure{
       //or use it here with the same effect for more classic Plotly behavior
    }
  }
}

Since layout block is inside plot, you can use shape in it as well. It is a bit confusing; we could probably fix it in the next major release.

Thanks @SPC-code, I learn something new. I try the following to show a blue rectangle. The red line is shown, but not the blue rectangle shape. What could be the problem?

        scatter {
            x(1, 2, 3, 4)
//            y(12, 5, 2, 12)
            y0 = 12.asValue()
            dy = 0
            mode = ScatterMode.`lines+markers`
            type = TraceType.scatter
            // hoverinfo = "none"
            marker {
                color("red")
            }
        }
        shape {
            type = ShapeType.rect
            xref = "x"
            yref = "y"
            fillcolor("blue")
            opacity = 0.3

            y0 = Value.of(9)
            y1 = Value.of(15)
            x0 = Value.of(0)
            x1 = Value.of(6)
            line {
                color("red")
                dash = Dash.dash
            } 

        }
        layout {
            title = "Line and Scatter Plot"
        }
    }

@Joseph-Hui it seems like this is a bug. It generates an element instead of array. The workaround is to add additional empty shape block. like shape{}. We will fix it in the next release.

Thanks @SPC-code! It works! However, I want to set xref = "paper". In that case, if I add an empty shape{} block, it will show a blank shape at the "negative infinity of x". My workaround of your workaround is to add two identical shape blocks.

I've opened a separate issue for the bug: #97. I will close this issue as resolved.