Txantiloi:Graph:Pi Montecarlo

Grafiko hau ezin da une honetan ikusi, software arazo bat dela eta. Lanean ari gara ahalik eta lasterren grafikoak berriro erakutsi ahal izateko.


<graph>

{
    "version": 2,
    "description": "Estimating the value of π via random sampling methods.",
    "width": "900",
    "padding": 5,
    "height": 380,
    "data": [
        {
            "name": "random_data",
            "transform": [
                {
                    "type": "sequence",
                    "start": 1,
                    "stop": 5001
                },
                {
                    "type": "formula",
                    "as": "x",
                    "expr": "random()"
                },
                {
                    "type": "formula",
                    "as": "y",
                    "expr": "random()"
                },
                {
                    "type": "filter",
                    "expr": "datum.data <= num_points"
                }
            ]
        },
        {
            "name": "pi_estimates",
            "source": "random_data",
            "transform": [
                {
                    "type": "formula",
                    "as": "is_inside",
                    "expr": "(datum.x * datum.x + datum.y * datum.y) < 1"
                },
                {
                    "type": "window",
                    "fields": [
                        "is_inside"
                    ],
                    "ops": [
                        "sum"
                    ],
                    "as": [
                        "num_inside"
                    ]
                },
                {
                    "type": "formula",
                    "as": "estimate",
                    "expr": "4 * datum.num_inside / datum.data"
                }
            ]
        },
        {
            "name": "pi_estimate",
            "source": "pi_estimates",
            "transform": [
                {
                    "type": "filter",
                    "expr": "datum.data == num_points"
                },
                {
                    "type": "formula",
                    "as": "value",
                    "expr": "datum.estimate"
                }
            ]
        },
        {
            "name": "pi",
            "values": [
                {
                    "value": 3.141592653589793
                }
            ]
        }
    ],
    "signals": [
        {
            "name": "num_points",
            "value": 1000,
            "bind": {
                "input": "range",
                "min": 10,
                "max": 5000,
                "step": 1,
                "debounce": 10
            }
        }
    ],
    "layout": {
        "padding": 70,
        "bounds": "flush",
        "align": "none"
    },
    "marks": [
        {
            "type": "group",
            "style": "cell",
            "title": {
                "text": "In Points and Out Points",
                "frame": "group"
            },
            "encode": {
                "update": {
                    "width": {
                        "signal": "height"
                    },
                    "height": {
                        "signal": "height"
                    }
                }
            },
            "marks": [
                {
                    "type": "arc",
                    "encode": {
                        "enter": {
                            "stroke": {
                                "value": "#888"
                            },
                            "strokeWidth": {
                                "value": 1
                            },
                            "startAngle": {
                                "signal": "1.570796"
                            },
                            "endAngle": {
                                "value": 0
                            },
                            "x": {
                                "value": 0.5
                            },
                            "y": {
                                "signal": "height + 0.5"
                            },
                            "innerRadius": {
                                "signal": "height"
                            },
                            "outerRadius": {
                                "signal": "height"
                            }
                        }
                    }
                },
                {
                    "type": "symbol",
                    "style": [
                        "circle"
                    ],
                    "from": {
                        "data": "random_data"
                    },
                    "encode": {
                        "update": {
                            "opacity": {
                                "value": 0.6
                            },
                            "fill": [
                                {
                                    "test": "sqrt(datum.x * datum.x + datum.y * datum.y) <= 1",
                                    "value": "#003f5c"
                                },
                                {
                                    "value": "#ffa600"
                                }
                            ],
                            "x": {
                                "scale": "x_scale",
                                "field": "x"
                            },
                            "y": {
                                "scale": "y_scale",
                                "field": "y"
                            },
                            "shape": {
                                "value": "circle"
                            }
                        }
                    }
                }
            ],
            "axes": [
                {
                    "scale": "x_scale",
                    "orient": "bottom",
                    "title": "x",
                    "labelFlush": true,
                    "labelOverlap": true,
                    "zindex": 1
                },
                {
                    "scale": "x_scale",
                    "orient": "bottom",
                    "grid": true,
                    "gridScale": "y_scale",
                    "domain": false,
                    "labels": false,
                    "maxExtent": 0,
                    "minExtent": 0,
                    "ticks": false,
                    "zindex": 0
                },
                {
                    "scale": "y_scale",
                    "orient": "left",
                    "title": "y",
                    "labelOverlap": true,
                    "zindex": 1
                },
                {
                    "scale": "y_scale",
                    "orient": "left",
                    "grid": true,
                    "gridScale": "x_scale",
                    "domain": false,
                    "labels": false,
                    "maxExtent": 0,
                    "minExtent": 0,
                    "ticks": false,
                    "zindex": 0
                }
            ]
        },
        {
            "type": "group",
            "name": "concat_1_group",
            "style": "cell",
            "title": {
                "text": "π Estimate",
                "frame": "group"
            },
            "encode": {
                "update": {
                    "width": {
                        "signal": "height"
                    },
                    "height": {
                        "signal": "height"
                    }
                }
            },
            "marks": [
                {
                    "type": "symbol",
                    "style": [
                        "circle"
                    ],
                    "from": {
                        "data": "pi_estimates"
                    },
                    "encode": {
                        "update": {
                            "opacity": {
                                "value": 0.7
                            },
                            "fill": {
                                "value": "#4c78a8"
                            },
                            "x": {
                                "scale": "data_point_scale",
                                "field": "data"
                            },
                            "y": {
                                "scale": "pi_scale",
                                "field": "estimate"
                            },
                            "size": {
                                "value": 8
                            },
                            "shape": {
                                "value": "circle"
                            }
                        }
                    }
                },
                {
                    "type": "rule",
                    "from": {
                        "data": "pi"
                    },
                    "encode": {
                        "update": {
                            "stroke": {
                                "value": "darkgrey"
                            },
                            "x": {
                                "value": 0
                            },
                            "y": {
                                "scale": "pi_scale",
                                "field": "value"
                            },
                            "x2": {
                                "field": {
                                    "group": "width"
                                }
                            }
                        }
                    }
                },
                {
                    "type": "text",
                    "from": {
                        "data": "pi"
                    },
                    "encode": {
                        "update": {
                            "align": {
                                "value": "left"
                            },
                            "x": {
                                "value": 10
                            },
                            "fill": {
                                "value": "black"
                            },
                            "y": {
                                "scale": "pi_scale",
                                "field": "value",
                                "offset": -5
                            },
                            "text": {
                                "value": "Real PI: 3.1415..."
                            }
                        }
                    }
                },
                {
                    "type": "text",
                    "from": {
                        "data": "pi_estimate"
                    },
                    "encode": {
                        "update": {
                            "align": {
                                "value": "right"
                            },
                            "x": {
                                "signal": "height",
                                "offset": -5
                            },
                            "dy": {
                                "value": -5
                            },
                            "fill": {
                                "value": "black"
                            },
                            "y": {
                                "scale": "pi_scale",
                                "field": "value"
                            },
                            "text": {
                                "signal": "'Estimate: ' + format(datum.estimate, ',.3f')"
                            }
                        }
                    }
                }
            ],
            "axes": [
                {
                    "scale": "data_point_scale",
                    "orient": "bottom",
                    "title": "Number of Points",
                    "labelFlush": true,
                    "labelOverlap": true,
                    "zindex": 1
                },
                {
                    "scale": "data_point_scale",
                    "orient": "bottom",
                    "grid": true,
                    "gridScale": "pi_scale",
                    "domain": false,
                    "labels": false,
                    "maxExtent": 0,
                    "minExtent": 0,
                    "ticks": false,
                    "zindex": 0
                },
                {
                    "scale": "pi_scale",
                    "orient": "left",
                    "title": "Estimated π Value",
                    "labelOverlap": true,
                    "zindex": 1
                },
                {
                    "scale": "pi_scale",
                    "orient": "left",
                    "grid": true,
                    "gridScale": "data_point_scale",
                    "domain": false,
                    "labels": false,
                    "maxExtent": 0,
                    "minExtent": 0,
                    "ticks": false,
                    "zindex": 0
                }
            ]
        }
    ],
    "scales": [
        {
            "name": "x_scale",
            "type": "linear",
            "domain": [
                0,
                1
            ],
            "range": "height",
            "reverse": true,
            "nice": true,
            "zero": true
        },
        {
            "name": "y_scale",
            "type": "linear",
            "domain": [
                0,
                1
            ],
            "range": "height",
            "nice": true,
            "zero": true
        },
        {
            "name": "data_point_scale",
            "type": "linear",
            "domain": {
                "data": "pi_estimates",
                "field": "data"
            },
            "range": "height",
            "reverse": true,
            "nice": false,
            "zero": true
        },
        {
            "name": "pi_scale",
            "type": "linear",
            "domain": {
                "fields": [
                    [
                        2,
                        4
                    ],
                    {
                        "data": "pi",
                        "field": "value"
                    },
                    {
                        "data": "pi_estimates",
                        "field": "estimate"
                    }
                ]
            },
            "range": "height",
            "nice": true,
            "zero": false
        }
    ],
    "config": {
        "axisY": {
            "minExtent": 30
        }
    }
}

</graph>