{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://catalog.lintel.tools/schemas/schemastore/visivo/latest.json",
  "title": "Project",
  "x-lintel": {
    "source": "https://docs.visivo.io/assets/visivo_schema.json",
    "sourceSha256": "430fa22ecd129bcc444e3f7741eb104563c78ab1172aef980a15490936bb7848",
    "fileMatch": [
      "visivo.yml",
      "visivo.yaml",
      "visivo_project.yml",
      "visivo_project.yaml",
      "*.visivo.yml",
      "*.visivo.yaml"
    ],
    "parsers": [
      "yaml"
    ]
  },
  "type": "object",
  "properties": {
    "path": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "A unique path to this object",
      "title": "Path"
    },
    "name": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "The unique name of the object across the entire project.",
      "title": "Name"
    },
    "file_path": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "The path to the file that contains the object definition.",
      "title": "File Path"
    },
    "defaults": {
      "anyOf": [
        {
          "$ref": "#/$defs/Defaults"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    },
    "dbt": {
      "anyOf": [
        {
          "$ref": "#/$defs/Dbt"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    },
    "project_file_path": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Project File Path"
    },
    "project_dir": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Project Dir"
    },
    "cli_version": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": "1.0.79",
      "description": "The version of the CLI that created the project.",
      "title": "Cli Version"
    },
    "includes": {
      "default": [],
      "items": {
        "$ref": "#/$defs/Include"
      },
      "title": "Includes",
      "type": "array"
    },
    "destinations": {
      "default": [],
      "items": {
        "discriminator": {
          "mapping": {
            "console": "#/$defs/ConsoleDestination",
            "email": "#/$defs/EmailDestination",
            "slack": "#/$defs/SlackDestination"
          },
          "propertyName": "type"
        },
        "oneOf": [
          {
            "$ref": "#/$defs/SlackDestination"
          },
          {
            "$ref": "#/$defs/EmailDestination"
          },
          {
            "$ref": "#/$defs/ConsoleDestination"
          }
        ]
      },
      "title": "Destinations",
      "type": "array"
    },
    "alerts": {
      "default": [],
      "items": {
        "$ref": "#/$defs/Alert"
      },
      "title": "Alerts",
      "type": "array"
    },
    "sources": {
      "default": [],
      "description": "A list of source objects.",
      "items": {
        "oneOf": [
          {
            "$ref": "#/$defs/SqliteSource"
          },
          {
            "$ref": "#/$defs/PostgresqlSource"
          },
          {
            "$ref": "#/$defs/MysqlSource"
          },
          {
            "$ref": "#/$defs/SnowflakeSource"
          },
          {
            "$ref": "#/$defs/BigQuerySource"
          },
          {
            "$ref": "#/$defs/RedshiftSource"
          },
          {
            "$ref": "#/$defs/DuckdbSource"
          },
          {
            "$ref": "#/$defs/CSVFileSource"
          },
          {
            "$ref": "#/$defs/ExcelFileSource"
          },
          {
            "$ref": "#/$defs/ClickhouseSource"
          }
        ]
      },
      "title": "Sources",
      "type": "array"
    },
    "models": {
      "default": [],
      "items": {
        "oneOf": [
          {
            "$ref": "#/$defs/SqlModel"
          },
          {
            "$ref": "#/$defs/CsvScriptModel"
          },
          {
            "$ref": "#/$defs/LocalMergeModel"
          }
        ]
      },
      "title": "Models",
      "type": "array"
    },
    "traces": {
      "default": [],
      "items": {
        "$ref": "#/$defs/Trace"
      },
      "title": "Traces",
      "type": "array"
    },
    "insights": {
      "default": [],
      "items": {
        "$ref": "#/$defs/Insight"
      },
      "title": "Insights",
      "type": "array"
    },
    "markdowns": {
      "default": [],
      "description": "A list of markdown objects for displaying formatted text in dashboards.",
      "items": {
        "$ref": "#/$defs/Markdown"
      },
      "title": "Markdowns",
      "type": "array"
    },
    "tables": {
      "default": [],
      "items": {
        "$ref": "#/$defs/Table"
      },
      "title": "Tables",
      "type": "array"
    },
    "charts": {
      "default": [],
      "items": {
        "$ref": "#/$defs/Chart"
      },
      "title": "Charts",
      "type": "array"
    },
    "selectors": {
      "default": [],
      "items": {
        "$ref": "#/$defs/Selector"
      },
      "title": "Selectors",
      "type": "array"
    },
    "inputs": {
      "default": [],
      "items": {
        "discriminator": {
          "mapping": {
            "multi-select": "#/$defs/MultiSelectInput",
            "single-select": "#/$defs/SingleSelectInput"
          },
          "propertyName": "type"
        },
        "oneOf": [
          {
            "$ref": "#/$defs/SingleSelectInput"
          },
          {
            "$ref": "#/$defs/MultiSelectInput"
          }
        ]
      },
      "title": "Inputs",
      "type": "array"
    },
    "dashboards": {
      "default": [],
      "items": {
        "oneOf": [
          {
            "$ref": "#/$defs/Dashboard"
          },
          {
            "$ref": "#/$defs/ExternalDashboard"
          }
        ]
      },
      "title": "Dashboards",
      "type": "array"
    },
    "metrics": {
      "default": [],
      "description": "A list of global metric objects that can reference multiple models.",
      "items": {
        "$ref": "#/$defs/Metric"
      },
      "title": "Metrics",
      "type": "array"
    },
    "relations": {
      "default": [],
      "description": "A list of relation objects defining how models can be joined.",
      "items": {
        "$ref": "#/$defs/Relation"
      },
      "title": "Relations",
      "type": "array"
    },
    "dimensions": {
      "default": [],
      "description": "A list of project-level dimension objects that can be used across models.",
      "items": {
        "$ref": "#/$defs/Dimension"
      },
      "title": "Dimensions",
      "type": "array"
    }
  },
  "$defs": {
    "AggregationEnum": {
      "description": "The options for aggregating table columns. Details on the calculations below:<br>\n\n    **count** - Finds the number of rows in a group<br>\n\n    **extent** - Finds the minimum and maximum values of a group of rows<br>\n\n    **max** - Finds the maximum value of a group of rows<br>\n\n    **mean** - Finds the average value of a group of rows<br>\n\n    **median** - Finds the median value of a group of rows<br>\n\n    **min** - Finds the minimum value of a group of rows<br>\n\n    **sum** - sums the values of a group of rows<br>\n\n    **uniqueCount** - Finds the number of unique values of a group of rows<br>\n\n    **unique** - Finds the unique values of a group of rows",
      "enum": [
        "count",
        "extent",
        "max",
        "mean",
        "median",
        "min",
        "sum",
        "uniqueCount",
        "unique"
      ],
      "title": "AggregationEnum",
      "type": "string"
    },
    "Alert": {
      "type": "object",
      "properties": {
        "path": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A unique path to this object",
          "title": "Path"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The unique name of the object across the entire project.",
          "title": "Name"
        },
        "file_path": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The path to the file that contains the object definition.",
          "title": "File Path"
        },
        "if_": {
          "default": null,
          "description": "A EvalString that must evaluate to true for the alert to fire",
          "title": "If",
          "type": "string"
        },
        "destinations": {
          "default": [],
          "items": {
            "discriminator": {
              "mapping": {
                "console": "#/$defs/ConsoleDestination",
                "email": "#/$defs/EmailDestination",
                "slack": "#/$defs/SlackDestination"
              },
              "propertyName": "type"
            },
            "oneOf": [
              {
                "$ref": "#/$defs/SlackDestination"
              },
              {
                "$ref": "#/$defs/EmailDestination"
              },
              {
                "$ref": "#/$defs/ConsoleDestination"
              }
            ]
          },
          "title": "Destinations",
          "type": "array"
        }
      },
      "title": "Alert",
      "additionalProperties": false
    },
    "Attachment": {
      "type": "object",
      "properties": {
        "path": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A unique path to this object",
          "title": "Path"
        },
        "schema_name": {
          "default": "Name of the schema to attach the source under.",
          "title": "Schema Name",
          "type": "string"
        },
        "source": {
          "$ref": "#/$defs/SqliteSource",
          "default": null,
          "description": "Local SQLite database source to attach in the connection that will be available in the base SQL query."
        }
      },
      "title": "Attachment",
      "additionalProperties": false
    },
    "BigQuerySource": {
      "type": "object",
      "description": "BigQuerySources hold the connection information to Google BigQuery instances.\n\n!!! info \"BigQuery Authentication\"\n    You can authenticate BigQuery in one of two ways:\n     1. Pass a base64 encoded service account key to the `credentials_base64` field.\n     2. Set the absolute file path to the credentials file in a environment variable named `GOOGLE_APPLICATION_CREDENTIALS`.\n\n    === \"Base64 Encoded Credentials\"\n        Using encoding the service key json credential file to base64 can be a useful way to authenticate BigQuery\n        without logging into Google Cloud Console each time and makes it easier to manage credentials in CI/CD pipelines.\n\n        However utilizing base64 encoding requires a few extra steps:\n\n        1. Create a Google Cloud Service Account\n            1. Go to the [Google Cloud Console](https://console.cloud.google.com)\n            2. Select your project\n            3. Navigate to \"IAM & Admin\" > \"Service Accounts\"\n            4. Click \"Create Service Account\"\n            5. Give it a name and description\n            6. Grant it the \"BigQuery Admin\" role (or more restrictive custom role)\n            7. Click \"Done\"\n        2. Create and download credentials\n            1. Find your service account in the list\n            2. Click the three dots menu > \"Manage keys\"\n            3. Click \"Add Key\" > \"Create new key\"\n            4. Choose JSON format\n            5. Click \"Create\" - this downloads your credentials file\n        3. Convert credentials to base64\n            ```bash\n            # On Linux/Mac\n            python -m base64 < credentials.json > encoded.txt\n\n            # On Windows PowerShell\n            [Convert]::ToBase64String([System.IO.File]::ReadAllBytes(\"credentials.json\")) > encoded.txt\n            ```\n        4. Use the contents of encoded.txt as your credentials_base64 value. You can store the single line key in your untracked env file and use the `{% raw %}{{ env_var('VAR_NAME') }}{% endraw %}` syntax to reference the environment variable in your Visivo config.\n\n    === \"`GOOGLE_APPLICATION_CREDENTIALS` Environment Variable\"\n        If you use gcloud locally you probably have this environment variable configured already.\n\n        Run `echo $GOOGLE_APPLICATION_CREDENTIALS` in your terminal. If it returns your crendetials then\n        you're all set. and can configure a BigQuerySource without the `credentials_base64` field.\n\n        If you don't have the environment variable, follow these steps:\n\n        1. Create a Google Cloud Service Account\n            1. Go to the [Google Cloud Console](https://console.cloud.google.com)\n            2. Select your project\n            3. Navigate to \"IAM & Admin\" > \"Service Accounts\"\n            4. Click \"Create Service Account\"\n            5. Give it a name and description\n            6. Grant it the \"BigQuery Admin\" role (or more restrictive custom role)\n            7. Click \"Done\"\n        2. Create and download credentials\n            1. Find your service account in the list\n            2. Click the three dots menu > \"Manage keys\"\n            3. Click \"Add Key\" > \"Create new key\"\n            4. Choose JSON format\n            5. Click \"Create\" - this downloads your credentials file\n        3. Set the environment variable\n            You can set the environment variable in your shell profile file.\n            ```bash\n            export GOOGLE_APPLICATION_CREDENTIALS=\"/path/to/your/credentials.json\"\n            ```\n            or in your untracked .env file.\n            ```\n            GOOGLE_APPLICATION_CREDENTIALS=/path/to/your/credentials.json\n            ```\n        This method is easier to manage and does not require any extra steps to authenticate.\n\n    The service account needs at minimum the \"BigQuery User\" role to execute queries.\n    For more restricted access, you can create a custom role with just the required permissions:\n\n    - bigquery.jobs.create\n    - bigquery.tables.get\n    - bigquery.tables.getData\n    - bigquery.tables.list\n\n!!! example\n\n    === \"Simple\"\n\n        ``` yaml\n            sources:\n              - name: bigquery_source\n                type: bigquery\n                project: my-project-id\n                database: my_dataset\n                credentials_base64: {% raw %}{{ env_var('BIGQUERY_BASE64_ENCODED_CREDENTIALS') }}{% endraw %}\n        ```\n\nNote: Recommended environment variable use is covered in the [sources overview.](/topics/sources/)",
      "properties": {
        "path": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A unique path to this object",
          "title": "Path"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The unique name of the object across the entire project.",
          "title": "Name"
        },
        "file_path": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The path to the file that contains the object definition.",
          "title": "File Path"
        },
        "after_connect": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "After Connect"
        },
        "host": {
          "anyOf": [
            {
              "oneOf": [
                {
                  "type": "string"
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The host url of the database.",
          "title": "Host"
        },
        "port": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The port of the database.",
          "title": "Port"
        },
        "database": {
          "anyOf": [
            {
              "oneOf": [
                {
                  "type": "string"
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The default BigQuery dataset to use for queries.",
          "title": "Database"
        },
        "username": {
          "anyOf": [
            {
              "oneOf": [
                {
                  "type": "string"
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Username for the database.",
          "title": "Username"
        },
        "password": {
          "anyOf": [
            {
              "oneOf": [
                {
                  "type": "string"
                },
                {
                  "format": "password",
                  "type": "string",
                  "writeOnly": true
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Password corresponding to the username.",
          "title": "Password"
        },
        "db_schema": {
          "anyOf": [
            {
              "oneOf": [
                {
                  "type": "string"
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The schema that the Visivo project will use in queries.",
          "title": "Db Schema"
        },
        "project": {
          "description": "The Google Cloud project ID that contains your BigQuery dataset.",
          "oneOf": [
            {
              "type": "string"
            }
          ],
          "title": "Project"
        },
        "credentials_base64": {
          "anyOf": [
            {
              "oneOf": [
                {
                  "type": "string"
                },
                {
                  "format": "password",
                  "type": "string",
                  "writeOnly": true
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The Google Cloud service account credentials JSON string base64 encoded. Turn your JSON into a base64 string in the command line with `python -m base64 < credentials.json > encoded.txt`. Not required if GOOGLE_APPLICATION_CREDENTIALS environment variable is set. ",
          "title": "Credentials Base64"
        },
        "type": {
          "const": "bigquery",
          "title": "Type",
          "type": "string"
        },
        "connection_pool_size": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": 8,
          "description": "The pool size that is used for this connection.",
          "title": "Connection Pool Size"
        }
      },
      "required": [
        "project",
        "type"
      ],
      "title": "BigQuerySource",
      "additionalProperties": false
    },
    "CSVFileSource": {
      "type": "object",
      "properties": {
        "path": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A unique path to this object",
          "title": "Path"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The unique name of the object across the entire project.",
          "title": "Name"
        },
        "file_path": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The path to the file that contains the object definition.",
          "title": "File Path"
        },
        "type": {
          "const": "csv",
          "title": "Type",
          "type": "string"
        },
        "file": {
          "description": "Path to the CSV file.",
          "title": "File",
          "type": "string"
        },
        "delimiter": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": ",",
          "description": "CSV delimiter.",
          "title": "Delimiter"
        },
        "encoding": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": "utf-8",
          "description": "CSV file encoding.",
          "title": "Encoding"
        },
        "has_header": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": true,
          "description": "Whether CSV has a header row.",
          "title": "Has Header"
        }
      },
      "required": [
        "type",
        "file"
      ],
      "title": "CSVFileSource",
      "additionalProperties": false
    },
    "Chart": {
      "type": "object",
      "description": "## Overview\nCharts enable you to combine one or more [traces](../Trace/) with [layout](./Layout/) configurations _(titles, axis labels, ect.)_.\n\n!!! tip\n\n    You can add traces of **different types** to a chart. For example, you may want to display an [`indicator`](../Trace/Props/Indicator/)\n    on top of a [`bar`](../Trace/Props/Bar/) to show how what the bars add up to.\n\nYou can also configure interactivity in your charts by setting up a  [`selector`](../Selector/).\n\n## Common Configurations\n\n### Single Trace\n\nThis is the most common and simplest chart setup. You will use this when you want to display a single trace.\n!!! example \"Single Trace\"\n\n    ??? note \"Code\"\n\n        ``` yaml\n        models:\n          - name: Array of Numbers\n            args: [\"curl\", \"-s\", \"<https://raw.githubusercontent.com/visivo-io/data/refs/heads/main/y_values.csv>\"]\n\n        traces:\n          - name: Simple Scatter\n            model: ref(Array of Numbers)\n            props:\n              type: scatter\n              x: ?{ ln(numbers_column)}\n              y: ?{numbers_column}\n              mode: markers\n              marker:\n                size: ?{ abs(sin(exp(numbers_column) - 5)*100) }\n                opacity: ?{ abs(cos(exp(numbers_column) - 5)*100)/100 }\n            filters:\n              - ?{ numbers_column < 400 }\n            order_by:\n              - ?{numbers_column}\n\n        charts:\n          - name: Single Trace Chart\n            traces:\n              - ref(Simple Scatter)\n            layout:\n              title:\n                text: \"Single Trace\"\n        ```\n    ![](../../../assets/example-charts/single-trace.png)\n### Duel Axis\nWhen you want to display two different types of data on the same chart, duel axis can come in handy.\n!!! tip\n\n    You can actually create a third, and fourth axis ([see plotly docs](https://plotly.com/javascript/multiple-axes/#multiple-y-axes)), however, we do not recommended using more than two yaxes.\n\nHere's a working example that you can copy and paste into your project:\n!!! example \"Duel Y Axes\"\n\n    ??? note \"Code\"\n\n        ``` yaml\n        models:\n          - name: Series of Numbers\n            args: [\"curl\", \"-s\", \"<https://raw.githubusercontent.com/visivo-io/data/refs/heads/main/y_values.csv>\"]\n\n        traces:\n          - name: Yaxis Trace\n            model: ref(Series of Numbers)\n            props:\n              type: bar\n              y: ?{numbers_column}\n              marker:\n                color: '#713B57'\n                opacity: .7\n            order_by:\n              - ?{numbers_column}\n\n          - name: Yaxis2 Trace\n            model: ref(Series of Numbers)\n            props:\n              type: scatter\n              y: ?{ (500 -  numbers_column) }\n              yaxis: 'y2'\n              line:\n                shape: spline\n                smoothing: .1\n                color: orange\n\n            order_by:\n              - ?{numbers_column}\n\n        charts:\n          - name: Duel Axis\n            traces:\n              - ref(Yaxis2 Trace)\n              - ref(Yaxis Trace)\n            layout:\n              title:\n                text: \"Dual Axis\"\n              legend:\n                orientation: \"h\"\n              yaxis:\n                title:\n                  text: \"yaxis title\"\n                  font:\n                    size: 18\n                    color: '#713B57'\n              yaxis2:\n                title:\n                  text: \"yaxis2 title\"\n                  font:\n                    size: 18\n                    color: orange\n                side: right\n                overlaying: 'y'\n                anchor: 'y'\n                showgrid: false\n\n        ```\n    ![](../../../assets/example-charts/duel-axis.png)\n\n### Position Traces with Domains\n\nYou can use domains to position traces on your chart. This is useful when you want to display multiple traces on your chart.\nThe `domain` attribute in the trace props enables you to position your traces relative to 0,0 coordinates of the chart.\n\nHere's some working examples that you can copy and paste into your project:\n!!! example \"Trend Line + Multiple Indicators\"\n\n    ??? note \"Code\"\n\n        ``` yaml\n        models:\n          - name: Numbers From Remote CSV\n            args: [\"curl\", \"-s\", \"<https://raw.githubusercontent.com/visivo-io/data/refs/heads/main/y_values.csv>\"]\n\n        traces:\n          - name: Line Trace\n            model: ref(Numbers From Remote CSV)\n            props:\n              type: scatter\n              y: ?{numbers_column}\n              line:\n                shape: spline\n                color: orange\n\n          - name: Average Value\n            model: ref(Numbers From Remote CSV)\n            columns:\n              avg_numbers_column: avg(numbers_column)\n            props:\n              type: indicator\n              value: column(avg_numbers_column)[0]\n              number:\n                font:\n                  size: 35\n                suffix: \" avg\"\n              domain:\n                y: [0, .7]\n                x: [.5, 1]\n\n          - name: Total Value\n            model: ref(Numbers From Remote CSV)\n            columns:\n              sum_numbers_column: sum(numbers_column)\n            props:\n              type: indicator\n              value: column(sum_numbers_column)[0]\n              number:\n                font:\n                  size: 35\n                suffix: \" sum\"\n              domain:\n                y: [.5, 1]\n                x: [.2, .5]\n\n        charts:\n          - name: Big Number Over Line Chart\n            traces:\n              - ref(Average Value)\n              - ref(Total Value)\n              - ref(Line Trace)\n            layout:\n              title:\n                text: \"Indicator + Scatter Plot\"\n        ```\n    ![](../../../assets/example-charts/position-traces-with-domains.png)",
      "properties": {
        "path": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A unique path to this object",
          "title": "Path"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The unique name of the object across the entire project.",
          "title": "Name"
        },
        "file_path": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The path to the file that contains the object definition.",
          "title": "File Path"
        },
        "selector": {
          "anyOf": [
            {
              "oneOf": [
                {
                  "pattern": "^ref\\(\\s*([a-zA-Z0-9\\s'\\\"\\-_]+)\\s*\\)$",
                  "type": "string"
                },
                {
                  "pattern": "^\\$\\{.*\\}$",
                  "type": "string"
                },
                {
                  "$ref": "#/$defs/Selector"
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The selector for the choosing which trace data is shown.",
          "title": "Selector"
        },
        "traces": {
          "default": [],
          "description": "A list of traces either written in line in the chart or called using the ref() function. Supports both for backward compatibility and future interactivity features.",
          "items": {
            "oneOf": [
              {
                "pattern": "^ref\\(\\s*([a-zA-Z0-9\\s'\\\"\\-_]+)\\s*\\)$",
                "type": "string"
              },
              {
                "pattern": "^\\$\\{.*\\}$",
                "type": "string"
              },
              {
                "$ref": "#/$defs/Trace"
              }
            ]
          },
          "title": "Traces",
          "type": "array"
        },
        "insights": {
          "default": [],
          "description": "A list of insights either written in line in the chart or called using the ref() function. Supports both for backward compatibility and future interactivity features.",
          "items": {
            "oneOf": [
              {
                "pattern": "^ref\\(\\s*([a-zA-Z0-9\\s'\\\"\\-_]+)\\s*\\)$",
                "type": "string"
              },
              {
                "pattern": "^\\$\\{.*\\}$",
                "type": "string"
              },
              {
                "$ref": "#/$defs/Insight"
              }
            ]
          },
          "title": "Insights",
          "type": "array"
        },
        "layout": {
          "anyOf": [
            {
              "$ref": "#/$defs/Layout"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A layout configuration that must adhere to the layout.schema.json file."
        }
      },
      "title": "Chart",
      "additionalProperties": false
    },
    "ClickhouseSource": {
      "type": "object",
      "description": "ClickhouseSources hold the connection information to ClickHouse data sources.\nSupports both self-hosted ClickHouse and ClickHouse Cloud.\n\n!!! example\n\n    === \"Simple (Self-hosted with Native TCP)\"\n\n        ``` yaml\n            sources:\n              - name: clickhouse_source\n                type: clickhouse\n                host: localhost\n                port: 9000\n                database: default\n                username: default\n                password: {% raw %}{{ env_var('CLICKHOUSE_PASSWORD') }}{% endraw %}\n        ```\n\n    === \"HTTP Protocol\"\n\n        ``` yaml\n            sources:\n              - name: clickhouse_http\n                type: clickhouse\n                host: localhost\n                port: 8123\n                database: default\n                username: default\n                password: {% raw %}{{ env_var('CLICKHOUSE_PASSWORD') }}{% endraw %}\n                protocol: http\n        ```\n\n    === \"ClickHouse Cloud\"\n\n        ``` yaml\n            sources:\n              - name: clickhouse_cloud\n                type: clickhouse\n                host: your-instance.clickhouse.cloud\n                port: 8443\n                database: default\n                username: default\n                password: {% raw %}{{ env_var('CLICKHOUSE_PASSWORD') }}{% endraw %}\n                protocol: http\n                secure: true\n        ```\n\n!!! note\n\n    Recommended environment variable use is covered in the [sources overview.](/topics/sources/)",
      "properties": {
        "path": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A unique path to this object",
          "title": "Path"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The unique name of the object across the entire project.",
          "title": "Name"
        },
        "file_path": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The path to the file that contains the object definition.",
          "title": "File Path"
        },
        "after_connect": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "After Connect"
        },
        "host": {
          "anyOf": [
            {
              "oneOf": [
                {
                  "type": "string"
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The host url of the database.",
          "title": "Host"
        },
        "port": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": 9000,
          "description": "The ClickHouse port. Default 9000 for native TCP, use 8123 for HTTP.",
          "title": "Port"
        },
        "database": {
          "description": "The database that the Visivo project will use in queries.",
          "oneOf": [
            {
              "type": "string"
            }
          ],
          "title": "Database"
        },
        "username": {
          "anyOf": [
            {
              "oneOf": [
                {
                  "type": "string"
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Username for the database.",
          "title": "Username"
        },
        "password": {
          "anyOf": [
            {
              "oneOf": [
                {
                  "type": "string"
                },
                {
                  "format": "password",
                  "type": "string",
                  "writeOnly": true
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Password corresponding to the username.",
          "title": "Password"
        },
        "db_schema": {
          "anyOf": [
            {
              "oneOf": [
                {
                  "type": "string"
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The schema that the Visivo project will use in queries.",
          "title": "Db Schema"
        },
        "type": {
          "const": "clickhouse",
          "title": "Type",
          "type": "string"
        },
        "protocol": {
          "anyOf": [
            {
              "enum": [
                "native",
                "http"
              ],
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": "native",
          "description": "Connection protocol: 'native' (TCP, recommended) or 'http'.",
          "title": "Protocol"
        },
        "secure": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": false,
          "description": "Use secure TLS connection. Required for ClickHouse Cloud with HTTP protocol.",
          "title": "Secure"
        },
        "connection_pool_size": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": 1,
          "description": "The pool size that is used for this connection.",
          "title": "Connection Pool Size"
        }
      },
      "required": [
        "database",
        "type"
      ],
      "title": "ClickhouseSource",
      "additionalProperties": false
    },
    "ConsoleDestination": {
      "type": "object",
      "properties": {
        "path": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A unique path to this object",
          "title": "Path"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The unique name of the object across the entire project.",
          "title": "Name"
        },
        "file_path": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The path to the file that contains the object definition.",
          "title": "File Path"
        },
        "called": {
          "default": false,
          "title": "Called",
          "type": "boolean"
        },
        "message": {
          "default": "Console Destination Run",
          "title": "Message",
          "type": "string"
        },
        "type": {
          "const": "console",
          "title": "Type",
          "type": "string"
        }
      },
      "required": [
        "type"
      ],
      "title": "ConsoleDestination",
      "additionalProperties": false
    },
    "CsvScriptModel": {
      "type": "object",
      "description": "CSV Script Models are a type of model that executes a command with a given set of args.\nThis command needs to return a well formatted :fontawesome-solid-file-csv: with a header row to stdout.\n\nVisivo will be able to access the generate file as a model by storing a duckdb file in the source directory.\n\n!!! example {% raw %}\n\n    === \"Echo\"\n\n        Echoing all of your data is probably not a very practical example, but it does nicely demonstrate how the feature works!\n        ``` yaml\n        models:\n          - name: csv\n            table_name: csv\n            args:\n                - echo\n                - |\n                  x,y\n                  1,9\n                  2,1\n                  3,2\n                  4,3\n                  5,5\n                  6,8\n        ```\n\n    === \"Python Script\"\n\n        In this example we'll use python to generate a csv of processes running on your machine and make that csv available to Visivo as\n        a model for analysis.\n        ``` python title=\"created_processes_csv.py\"\n        import subprocess\n        import csv\n        import sys\n\n        # Define the CSV file to write\n        csv_file = \"data/processes.csv\"\n\n        # Execute the 'ps aux' command\n        result = subprocess.run([\"ps\", \"aux\"], stdout=subprocess.PIPE, text=True)\n\n        # Split the output into lines\n        lines = result.stdout.strip().split(\"/n\")\n\n        # Write CSV to stdout\n        writer = csv.writer(sys.stdout)\n        writer.writerow(\n            [\"USER\",\"PID\",\"%CPU\",\"%MEM\",\"VSZ\",\"RSS\",\"TTY\",\"STAT\",\"START\",\"TIME\",\"COMMAND\"]\n        )  # Header\n\n        for line in lines[1:]:  # Skip the header line from the ps output\n            row = line.split(None, 10)  # Split on whitespace, but only for the first 10 columns\n            writer.writerow(row)\n        ```\n        With your script ready to go, all you have to do is convert `python create_processes_csv.py` into the args list format in a model.\n        ``` yaml\n        models:\n          - name: processes\n            table_name: processes\n            args:\n              - python\n              - create_processes_csv.py\n        ```{% endraw %}\n\n    === \"CSV File\"\n\n        One of the best use cases for this type of model is to store a static csv in your project and cat it into a model.\n        This great because it's simple and allows you to version control your csv data.\n        ``` csv title=\"file.csv\"\n        columns,go,up,here\n        1,text,more text,6\n        2,stuff,more stuff,7\n        ```\n        Then just `cat` the csv file in a model.\n        ``` yaml\n        models:\n          - name: file_model\n            table_name: file_model\n            args:\n              - cat\n              - file.csv\n        ```\n\nThe args are python subprocess list args and you can read their source [documentation here](https://docs.python.org/3/library/subprocess.html#subprocess.CompletedProcess.args).",
      "properties": {
        "path": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A unique path to this object",
          "title": "Path"
        },
        "name": {
          "description": "The unique name of the object across the entire project.",
          "title": "Name",
          "type": "string"
        },
        "file_path": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The path to the file that contains the object definition.",
          "title": "File Path"
        },
        "table_name": {
          "default": "model",
          "description": "The name to give the resulting models table",
          "pattern": "[a-zA-Z0-9_]",
          "title": "Table Name",
          "type": "string"
        },
        "args": {
          "description": "An array of the variables that build your command to run.",
          "items": {
            "type": "string"
          },
          "title": "Args",
          "type": "array"
        },
        "allow_empty": {
          "default": false,
          "description": "Whether to allow the command to return an empty csv.",
          "title": "Allow Empty",
          "type": "boolean"
        }
      },
      "required": [
        "name",
        "args"
      ],
      "title": "CsvScriptModel",
      "additionalProperties": false
    },
    "Dashboard": {
      "type": "object",
      "description": "Dashboards are lists of [rows](./Row/) that enable you to build your dashboard grid.\n\n!!! tip\n\n    By leveraging [`visivo serve`](./../../../cli/#serve) while building you can quickly optimize your layout. Simply re-size your row heights and item widths, save the file and quickly see the new layout of your dashboard on localhost:8000.\n\nWithin the [rows](./Row/) you are able to organize and display `charts`, `tables`, `selectors` and `markdown` from your project as [items](./Row/Item/).\n\n<div class=\"grid\" markdown>\n\n![](../../../../assets/dashboard_layout.png)\n\n!!! note\n\n    ``` yaml title=\"visivo.project.yml\"\n    dashboards:\n      - name: Layout Example\n        rows:\n          - height: medium\n            items: #item.width default is 1\n              - chart: ...\n              - chart: ...\n              - chart: ...\n          - height: large\n            items:\n              - width: 2\n                table: ...\n              - width: 1\n                markdown: ...\n          - height: small\n            items:\n              - width: 2\n                selector: ...\n              - chart: ...\n              - chart: ...\n              - width: 2\n                chart: ...\n    ```\n\n</div>\n\nAbove you can see how changing the row heights and item widths impacts the layout of the dashboard.\n\n!!! example\n\n    `row.height` defaults to `medium` and `item.width` defaults to `1`. Specifying those fields are optional if you want to use the default values\n    ``` yaml\n    dashboards:\n      - name: any-name-you-want  #unique name of your dashboard\n        rows:\n          - height: medium\n            items:\n              - width: 2  #widths are evaluated relative to other items in the row\n                table: ref(a-table-name)\n              - width 1  #this chart will be 1/3 of the row\n                chart: ref(a-chart-name)\n          - height: small\n            items:\n              - markdown: \"# Some inline **markdown**\"\n              - chart: ref(another-chart)\n              - width: 2\n                chart: ref(a-third-chart)\n    ```",
      "properties": {
        "path": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A unique path to this object",
          "title": "Path"
        },
        "name": {
          "description": "The unique name of the dashboard across the entire project",
          "title": "Name",
          "type": "string"
        },
        "file_path": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The path to the file that contains the object definition.",
          "title": "File Path"
        },
        "level": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The importance level of the dashboard (either an index number or level title)",
          "title": "Level"
        },
        "tags": {
          "description": "A list of tags associated with the dashboard",
          "items": {
            "type": "string"
          },
          "title": "Tags",
          "type": "array"
        },
        "description": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A description of the dashboard's purpose and contents",
          "title": "Description"
        },
        "type": {
          "const": "internal",
          "default": "internal",
          "description": "The type of dashboard (always 'internal')",
          "title": "Type",
          "type": "string"
        },
        "rows": {
          "default": [],
          "description": "A list of `Row` objects",
          "items": {
            "$ref": "#/$defs/Row"
          },
          "title": "Rows",
          "type": "array"
        }
      },
      "required": [
        "name"
      ],
      "title": "Dashboard",
      "additionalProperties": false
    },
    "Dbt": {
      "description": "Configuration for pulling models and sources from a dbt project.\n\nThe integration will create models and sources from the dbt project and store them in the output directory.\n\nIt will pull all the \"targets\" defined in the profiles.yml file as sources.\nEach of these sources will be named in the format \"prefix + dbt_profile + dbt_target\".\n\nThen it will create each of the dbt models as Visivo models pointing to the default profile and target.\nThese models will be named in the format \"prefix + dbt_model\".\n\nUsing all the default values:\n``` yaml\ndbt:\n  enabled: true\n```\n\nOr specify the input and/or output file and locations:\n\n``` yaml\ndbt:\n  output_file: includes/dbt.yml\n  dbt_project_yml_location: dbt\n  profiles_yml_location: dbt\n```",
      "properties": {
        "enabled": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": true,
          "description": "Whether to enable the dbt phase.  Defaults to true.",
          "title": "Enabled"
        },
        "output_file": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The file to store the dbt models and sources relative to the working directory.  Defaults to the '$output_directory/dbt.yml'. It is useful to store the file in a different location so it can be checked into source control.",
          "title": "Output File"
        },
        "dbt_project_yml_location": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Location for the dbt_project.yml file relative to the working directory.  Defaults to the current working directory.",
          "title": "Dbt Project Yml Location"
        },
        "profiles_yml_location": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Location for the profiles.yml file relative to the working directory.  Defaults to the current working directory.",
          "title": "Profiles Yml Location"
        },
        "prefix": {
          "default": "",
          "description": "Prefix for the dbt models and sources. Defaults to no prefix. You may want to add one if the dbt model names are in conflict with other models in your project.",
          "title": "Prefix",
          "type": "string"
        }
      },
      "title": "Dbt",
      "type": "object"
    },
    "Defaults": {
      "type": "object",
      "properties": {
        "alert_name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The name of an alert defined elsewhere in the Visivo project.",
          "title": "Alert Name"
        },
        "source_name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The name of a source defined elsewhere in the Visivo project.",
          "title": "Source Name"
        },
        "threads": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": 8,
          "description": "The number of threads to use when running queries.",
          "title": "Threads"
        },
        "levels": {
          "description": "Enables you to customize the project level view of your dashboards. Ordered list of dashboard levels with titles and descriptions",
          "examples": [
            {
              "description": "The most important dashboards and metrics for the organization",
              "title": "Overview"
            },
            {
              "description": "The most important dashboards & metrics for a department",
              "title": "Department"
            }
          ],
          "items": {
            "$ref": "#/$defs/Level"
          },
          "title": "Levels",
          "type": "array"
        },
        "telemetry_enabled": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Controls whether anonymous usage telemetry is collected for this project. When set to false, no telemetry data will be sent. Can also be disabled globally via VISIVO_TELEMETRY_DISABLED environment variable.",
          "title": "Telemetry Enabled"
        }
      },
      "title": "Defaults",
      "additionalProperties": false
    },
    "Dimension": {
      "type": "object",
      "description": "A Dimension represents a computed field at the row level that can be used for grouping or filtering.\n\nUnlike metrics which are aggregates, dimensions are calculated for each row and can be used\nin GROUP BY clauses or as filter conditions. They allow you to define reusable calculated\nfields without repeating the logic in every query.\n\n!!! example\n    ```yaml\n    models:\n      - name: orders\n        sql: SELECT * FROM orders_table\n        dimensions:\n          - name: order_month\n            expression: \"DATE_TRUNC('month', order_date)\"\n            description: \"Month when the order was placed\"\n          - name: is_high_value\n            expression: \"CASE WHEN amount > 1000 THEN true ELSE false END\"\n            description: \"Whether this is a high-value order\"\n    ```",
      "properties": {
        "path": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A unique path to this object",
          "title": "Path"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The unique name of the object across the entire project.",
          "title": "Name"
        },
        "file_path": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The path to the file that contains the object definition.",
          "title": "File Path"
        },
        "expression": {
          "description": "SQL expression that computes the dimension value for each row. Can reference any field from the parent model.",
          "title": "Expression",
          "type": "string"
        },
        "data_type": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "SQL data type of the dimension (e.g., VARCHAR, INTEGER, DATE). Automatically detected for implicit dimensions extracted from model columns.",
          "title": "Data Type"
        },
        "description": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Human-readable description of what this dimension represents.",
          "title": "Description"
        }
      },
      "required": [
        "expression"
      ],
      "title": "Dimension",
      "additionalProperties": false
    },
    "DuckdbAttachment": {
      "type": "object",
      "properties": {
        "path": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A unique path to this object",
          "title": "Path"
        },
        "schema_name": {
          "default": "Name of the schema to attach the source under.",
          "title": "Schema Name",
          "type": "string"
        },
        "source": {
          "$ref": "#/$defs/DuckdbSource",
          "default": null,
          "description": "Local Duckdb database source to attach in the connection that will be available in the base SQL query."
        }
      },
      "title": "DuckdbAttachment",
      "additionalProperties": false
    },
    "DuckdbSource": {
      "type": "object",
      "description": "DuckdbSources hold the connection information to DuckDB data sources.\n\n!!! example\n\n    === \"Simple\"\n\n        ``` yaml\n            sources:\n              - name: duckdb_source\n                type: duckdb\n                database: local/file/database.db\n                connection_pool_size: 2\n        ```\n\n!!! note\n\n    Recommended environment variable use is covered in the [sources overview.](/topics/sources/)",
      "properties": {
        "path": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A unique path to this object",
          "title": "Path"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The unique name of the object across the entire project.",
          "title": "Name"
        },
        "file_path": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The path to the file that contains the object definition.",
          "title": "File Path"
        },
        "host": {
          "anyOf": [
            {
              "oneOf": [
                {
                  "type": "string"
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The host url of the database.",
          "title": "Host"
        },
        "port": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The port of the database.",
          "title": "Port"
        },
        "database": {
          "description": "The database that the Visivo project will use in queries.",
          "oneOf": [
            {
              "type": "string"
            }
          ],
          "title": "Database"
        },
        "username": {
          "anyOf": [
            {
              "oneOf": [
                {
                  "type": "string"
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Username for the database.",
          "title": "Username"
        },
        "password": {
          "anyOf": [
            {
              "oneOf": [
                {
                  "type": "string"
                },
                {
                  "format": "password",
                  "type": "string",
                  "writeOnly": true
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Password corresponding to the username.",
          "title": "Password"
        },
        "db_schema": {
          "anyOf": [
            {
              "oneOf": [
                {
                  "type": "string"
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The schema that the Visivo project will use in queries.",
          "title": "Db Schema"
        },
        "type": {
          "const": "duckdb",
          "title": "Type",
          "type": "string"
        },
        "connection_pool_size": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": 1,
          "description": "The pool size that is used for this connection.",
          "title": "Connection Pool Size"
        },
        "attach": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/DuckdbAttachment"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "List of other local Duckdb database sources to attach in the connection that will be available in the base SQL query.",
          "title": "Attach"
        }
      },
      "required": [
        "database",
        "type"
      ],
      "title": "DuckdbSource",
      "additionalProperties": false
    },
    "EmailDestination": {
      "type": "object",
      "description": "You can configure email destinations for any SMTP provider. Here's an example of this configuration looks in your yaml file:\n``` yaml\ndestinations:\n  - name: email-destination #any unique name of your choosing\n    type: email\n    subject: \"[ALERT] Your Visivo Tests Have Failed\" #can be any message you want\n    to: someone@your_company.com\n    port: 2525 #is this port by default\n    host: your_company_email_server.com\n    username: someones_username\n    password: {% raw %}{{ env_var('EMAIL_PASSWORD')}}{% endraw %} #We'd recommend using environment variables here for security\n\n```",
      "properties": {
        "path": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A unique path to this object",
          "title": "Path"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The unique name of the object across the entire project.",
          "title": "Name"
        },
        "file_path": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The path to the file that contains the object definition.",
          "title": "File Path"
        },
        "type": {
          "const": "email",
          "default": null,
          "description": "The type of alert destination.",
          "title": "Type",
          "type": "string"
        },
        "subject": {
          "default": "Visivo Destination",
          "description": "Subject of the alert email.",
          "title": "Subject",
          "type": "string"
        },
        "to": {
          "default": null,
          "description": "The email to send the alert to.",
          "title": "To",
          "type": "string"
        },
        "port": {
          "default": 2525,
          "description": "The port of the email server that the destination is connecting to.",
          "title": "Port",
          "type": "integer"
        },
        "host": {
          "default": null,
          "description": "The host of the email server that the destination is connecting to.",
          "title": "Host",
          "type": "string"
        },
        "username": {
          "default": null,
          "description": "The username for authenticating the email server.",
          "title": "Username",
          "type": "string"
        },
        "password": {
          "default": null,
          "description": "The password for authenticating the email server.",
          "title": "Password",
          "type": "string"
        }
      },
      "title": "EmailDestination",
      "additionalProperties": false
    },
    "ExcelFileSource": {
      "type": "object",
      "properties": {
        "path": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A unique path to this object",
          "title": "Path"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The unique name of the object across the entire project.",
          "title": "Name"
        },
        "file_path": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The path to the file that contains the object definition.",
          "title": "File Path"
        },
        "type": {
          "const": "xls",
          "title": "Type",
          "type": "string"
        },
        "file": {
          "description": "Path to the Excel file.",
          "title": "File",
          "type": "string"
        },
        "delimiter": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": ",",
          "description": "Excel delimiter.",
          "title": "Delimiter"
        },
        "encoding": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": "utf-8",
          "description": "Excel file encoding.",
          "title": "Encoding"
        },
        "has_header": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": true,
          "description": "Whether Excel has a header row.",
          "title": "Has Header"
        }
      },
      "required": [
        "type",
        "file"
      ],
      "title": "ExcelFileSource",
      "additionalProperties": false
    },
    "ExternalDashboard": {
      "type": "object",
      "description": "Represents an external dashboard that links to another system or URL",
      "properties": {
        "path": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A unique path to this object",
          "title": "Path"
        },
        "name": {
          "description": "The unique name of the dashboard across the entire project",
          "title": "Name",
          "type": "string"
        },
        "file_path": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The path to the file that contains the object definition.",
          "title": "File Path"
        },
        "level": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The importance level of the dashboard (either an index number or level title)",
          "title": "Level"
        },
        "tags": {
          "description": "A list of tags associated with the dashboard",
          "items": {
            "type": "string"
          },
          "title": "Tags",
          "type": "array"
        },
        "description": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A description of the dashboard's purpose and contents",
          "title": "Description"
        },
        "type": {
          "const": "external",
          "default": "external",
          "description": "The type of dashboard (always 'external')",
          "title": "Type",
          "type": "string"
        },
        "href": {
          "description": "URL to the external dashboard",
          "format": "uri",
          "maxLength": 2083,
          "minLength": 1,
          "title": "Href",
          "type": "string"
        }
      },
      "required": [
        "name",
        "href"
      ],
      "title": "ExternalDashboard",
      "additionalProperties": false
    },
    "HeightEnum": {
      "enum": [
        "compact",
        "xsmall",
        "small",
        "medium",
        "large",
        "xlarge",
        "xxlarge"
      ],
      "title": "HeightEnum",
      "type": "string"
    },
    "Include": {
      "type": "object",
      "description": "Include's can be used to break apart a project file with references to other files. This includes files from remote github repositories.\n\n[Read more about includes here ](including.md)",
      "properties": {
        "path": {
          "default": null,
          "description": "The path or git reference to external yml files or directories to include in this project",
          "title": "Path",
          "type": "string"
        },
        "depth": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Directory traversal depth. None=fully recursive, 0=current directory only, 1=one level deep, etc. Only applies to directory paths.",
          "title": "Depth"
        },
        "exclusions": {
          "default": [],
          "description": "Patterns to exclude from directory inclusion. Supports glob patterns and regex. Only applies to directory paths.",
          "items": {
            "type": "string"
          },
          "title": "Exclusions",
          "type": "array"
        }
      },
      "title": "Include",
      "additionalProperties": false
    },
    "Insight": {
      "type": "object",
      "description": "The **Insight** is the central visualization object in Visivo Interactivity 2.0.\n\nInsights replace **Traces**, providing a cleaner separation between\n**server-side data preparation** and **client-side interactivity**.\nUnlike traces, insights generate flat JSON structures that can be manipulated\nin the browser for responsive dashboards.\n\n## Why Insights?\n* **Simpler Mental Model** – No more mixing cohort logic or trace naming rules\n* **Interactive by Default** – Client-side filtering, splitting, and sorting\n* **Reusable** – Insights can appear in multiple charts & tables\n* **Fast** – Pre-computed data cached server-side, interactions run locally\n\n## Core Components\n- **model**: The SQL model or reference that defines the server-side dataset\n- **props**: Visualization config (chart type, axes, encodings)\n- **interactions**: Client-side transformations (filter, split, sort)\n\n## Example\n```yaml\ninsights:\n  - name: revenue-by-month\n    description: \"Monthly revenue trends\"\n\n    props:\n      type: scatter\n      mode: lines+markers\n      x: ?{ date_trunc('month', created_at) }\n      y: ?{ sum(amount) }\n\n    interactions:\n      - filter: ?{ month >= ${ref(date-range).start} }\n      - split: ?{ region }\n      - sort: ?{ month ASC }\n```\n\nIn the example above:\n- **Server-side**: Revenue is aggregated by month.\n- **Client-side**: A date-range filter and region split are applied instantly in the browser.\n\n## Interactions\nInteractions define how users can manipulate data locally:\n- **Filter**: Subset rows by conditions (`WHERE` logic)\n- **Split**: Break a single insight into multiple series (replaces `cohort_on`)\n- **Sort**: Order data dynamically\n\nExample:\n```yaml\ninteractions:\n  - filter: ?{ sales_amount > 1000 AND region = ${ref(sales-region).value} }\n  - split: ?{ product_category }\n  - sort: ?{ date DESC, amount ASC }\n```\n\n## Migration from Traces\n- `cohort_on` → `split` interaction",
      "properties": {
        "path": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A unique path to this object",
          "title": "Path"
        },
        "name": {
          "description": "The unique name of the insight across the entire project.",
          "title": "Name",
          "type": "string"
        },
        "file_path": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The path to the file that contains the object definition.",
          "title": "File Path"
        },
        "description": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional description of what this insight represents.",
          "title": "Description"
        },
        "props": {
          "oneOf": [
            {
              "$ref": "#/$defs/Bar"
            },
            {
              "$ref": "#/$defs/Barpolar"
            },
            {
              "$ref": "#/$defs/Box"
            },
            {
              "$ref": "#/$defs/Candlestick"
            },
            {
              "$ref": "#/$defs/Carpet"
            },
            {
              "$ref": "#/$defs/Choropleth"
            },
            {
              "$ref": "#/$defs/Choroplethmap"
            },
            {
              "$ref": "#/$defs/Choroplethmapbox"
            },
            {
              "$ref": "#/$defs/Cone"
            },
            {
              "$ref": "#/$defs/Contour"
            },
            {
              "$ref": "#/$defs/Contourcarpet"
            },
            {
              "$ref": "#/$defs/Densitymap"
            },
            {
              "$ref": "#/$defs/Densitymapbox"
            },
            {
              "$ref": "#/$defs/Funnel"
            },
            {
              "$ref": "#/$defs/Funnelarea"
            },
            {
              "$ref": "#/$defs/Heatmap"
            },
            {
              "$ref": "#/$defs/Histogram"
            },
            {
              "$ref": "#/$defs/Histogram2d"
            },
            {
              "$ref": "#/$defs/Histogram2dcontour"
            },
            {
              "$ref": "#/$defs/Icicle"
            },
            {
              "$ref": "#/$defs/Image"
            },
            {
              "$ref": "#/$defs/Indicator"
            },
            {
              "$ref": "#/$defs/Isosurface"
            },
            {
              "$ref": "#/$defs/Mesh3d"
            },
            {
              "$ref": "#/$defs/Ohlc"
            },
            {
              "$ref": "#/$defs/Parcats"
            },
            {
              "$ref": "#/$defs/Parcoords"
            },
            {
              "$ref": "#/$defs/Pie"
            },
            {
              "$ref": "#/$defs/Sankey"
            },
            {
              "$ref": "#/$defs/Scatter"
            },
            {
              "$ref": "#/$defs/Scatter3d"
            },
            {
              "$ref": "#/$defs/Scattercarpet"
            },
            {
              "$ref": "#/$defs/Scattergeo"
            },
            {
              "$ref": "#/$defs/Scattergl"
            },
            {
              "$ref": "#/$defs/Scattermap"
            },
            {
              "$ref": "#/$defs/Scattermapbox"
            },
            {
              "$ref": "#/$defs/Scatterpolar"
            },
            {
              "$ref": "#/$defs/Scatterpolargl"
            },
            {
              "$ref": "#/$defs/Scattersmith"
            },
            {
              "$ref": "#/$defs/Scatterternary"
            },
            {
              "$ref": "#/$defs/Splom"
            },
            {
              "$ref": "#/$defs/Streamtube"
            },
            {
              "$ref": "#/$defs/Sunburst"
            },
            {
              "$ref": "#/$defs/Surface"
            },
            {
              "$ref": "#/$defs/Treemap"
            },
            {
              "$ref": "#/$defs/Violin"
            },
            {
              "$ref": "#/$defs/Volume"
            },
            {
              "$ref": "#/$defs/Waterfall"
            }
          ]
        },
        "interactions": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/InsightInteraction"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Leverage Inputs to create client-side interactions that will be applied to the insight data.",
          "title": "Interactions"
        },
        "layout": {
          "$ref": "#/$defs/Layout"
        }
      },
      "required": [
        "name"
      ],
      "title": "Insight",
      "additionalProperties": false
    },
    "InsightInteraction": {
      "description": "Represents a client-side interaction that can be applied to insight data.",
      "properties": {
        "filter": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Filter expression to apply to the data on the client side",
          "title": "Filter"
        },
        "split": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Column or expression to split data into multiple traces",
          "title": "Split"
        },
        "sort": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Column or expression to sort data by",
          "title": "Sort"
        }
      },
      "title": "InsightInteraction",
      "type": "object"
    },
    "InsightProps": {
      "type": "object",
      "properties": {
        "type": {
          "$ref": "#/$defs/PropType",
          "description": "Type of the trace"
        }
      },
      "required": [
        "type"
      ],
      "title": "InsightProps",
      "additionalProperties": true
    },
    "Item": {
      "type": "object",
      "description": "The Item houses a single chart, table, selector, markdown, or input object.\n\nIt also informs the width that the chart, table or markdown should occupy within a row. Widths are evaluated for each item in a row relative to all of the other items in the row.\n\nIn the example below, the markdown would take up 1/4th of the row and would be positioned on the left edge. The table would also take up 1/4th of the page and would sit to the right of the markdown. The chart would take up 1/2 of the page and would touch the right edge of the row.\n\n``` yaml\nitems:\n  - width: 1\n    markdown: ref(welcome-markdown)\n  - width: 1\n    table: ref(table-name)\n  - width: 2\n    chart: ref(chart-name)\n  - width: 1\n    selector: ref(selector-name)\n  - width: 1\n    input: ref(input-name)\n```\n\n## Markdown\nReference a markdown object to add formatted text to your dashboard:\n\n``` yaml\nmarkdowns:\n  - name: welcome-markdown\n    content: |\n      # Welcome to Visivo\n      This is **formatted** text.\n    align: center\n    justify: start\n\ndashboards:\n  - name: my-dashboard\n    rows:\n      - items:\n          - markdown: ref(welcome-markdown)\n```\n\nMarkdown content supports [CommonMark](https://commonmark.org/help/) and [GitHub Flavored Markdown](https://github.github.com/gfm/). You can also render raw HTML within your markdown.",
      "properties": {
        "path": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A unique path to this object",
          "title": "Path"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The unique name of the object across the entire project.",
          "title": "Name"
        },
        "file_path": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The path to the file that contains the object definition.",
          "title": "File Path"
        },
        "width": {
          "default": 1,
          "description": "The width of the Item determines is evaluated relative to the other items in a row.",
          "title": "Width",
          "type": "integer"
        },
        "markdown": {
          "anyOf": [
            {
              "oneOf": [
                {
                  "pattern": "^ref\\(\\s*([a-zA-Z0-9\\s'\\\"\\-_]+)\\s*\\)$",
                  "type": "string"
                },
                {
                  "pattern": "^\\$\\{.*\\}$",
                  "type": "string"
                },
                {
                  "$ref": "#/$defs/Markdown"
                }
              ]
            },
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A Markdown object defined inline, a ref() to a markdown, or a markdown string (deprecated).",
          "title": "Markdown"
        },
        "align": {
          "anyOf": [
            {
              "enum": [
                "left",
                "center",
                "right"
              ],
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "DEPRECATED: Use the align property on the Markdown model instead. Alignment of markdown content. Only valid when markdown is set. Options are 'left', 'center', or 'right'.",
          "title": "Align"
        },
        "justify": {
          "anyOf": [
            {
              "enum": [
                "start",
                "end",
                "center",
                "between",
                "around",
                "evenly"
              ],
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "DEPRECATED: Use the justify property on the Markdown model instead. Justification of markdown content within its container. Options are 'start', 'end', 'center', 'between', 'around', or 'evenly'.",
          "title": "Justify"
        },
        "chart": {
          "anyOf": [
            {
              "oneOf": [
                {
                  "pattern": "^ref\\(\\s*([a-zA-Z0-9\\s'\\\"\\-_]+)\\s*\\)$",
                  "type": "string"
                },
                {
                  "pattern": "^\\$\\{.*\\}$",
                  "type": "string"
                },
                {
                  "$ref": "#/$defs/Chart"
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A chart object defined inline or a ref() to a chart.",
          "title": "Chart"
        },
        "table": {
          "anyOf": [
            {
              "oneOf": [
                {
                  "pattern": "^ref\\(\\s*([a-zA-Z0-9\\s'\\\"\\-_]+)\\s*\\)$",
                  "type": "string"
                },
                {
                  "pattern": "^\\$\\{.*\\}$",
                  "type": "string"
                },
                {
                  "$ref": "#/$defs/Table"
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A Table object defined inline or a ref() to a table",
          "title": "Table"
        },
        "selector": {
          "anyOf": [
            {
              "oneOf": [
                {
                  "pattern": "^ref\\(\\s*([a-zA-Z0-9\\s'\\\"\\-_]+)\\s*\\)$",
                  "type": "string"
                },
                {
                  "pattern": "^\\$\\{.*\\}$",
                  "type": "string"
                },
                {
                  "$ref": "#/$defs/Selector"
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A Selector object defined inline or a ref() to a selector",
          "title": "Selector"
        },
        "input": {
          "anyOf": [
            {
              "oneOf": [
                {
                  "pattern": "^ref\\(\\s*([a-zA-Z0-9\\s'\\\"\\-_]+)\\s*\\)$",
                  "type": "string"
                },
                {
                  "pattern": "^\\$\\{.*\\}$",
                  "type": "string"
                },
                {
                  "discriminator": {
                    "mapping": {
                      "multi-select": "#/$defs/MultiSelectInput",
                      "single-select": "#/$defs/SingleSelectInput"
                    },
                    "propertyName": "type"
                  },
                  "oneOf": [
                    {
                      "$ref": "#/$defs/SingleSelectInput"
                    },
                    {
                      "$ref": "#/$defs/MultiSelectInput"
                    }
                  ]
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "An Input object defined inline or a ref() to a input",
          "title": "Input"
        }
      },
      "title": "Item",
      "additionalProperties": false
    },
    "Layout": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "$id": "https://visivo.io/layout/schema",
      "description": "A schema to validate plotly layout",
      "properties": {
        "activeselection": {
          "type": "object",
          "properties": {
            "fillcolor": {
              "description": "Sets the color filling the active selection' interior.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "opacity": {
              "description": "Sets the opacity of the active selection.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 1,
                  "default": 0.5
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "activeshape": {
          "type": "object",
          "properties": {
            "fillcolor": {
              "description": "Sets the color filling the active shape' interior.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "opacity": {
              "description": "Sets the opacity of the active shape.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 1,
                  "default": 0.5
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "annotations": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "align": {
                "description": "Sets the horizontal alignment of the `text` within the box. Has an effect only if `text` spans two or more lines (i.e. `text` contains one or more <br> HTML tags) or if an explicit width is set to override the text width.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "enum": [
                      "left",
                      "center",
                      "right"
                    ],
                    "default": "center"
                  }
                ]
              },
              "arrowcolor": {
                "description": "Sets the color of the annotation arrow.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "$ref": "#/$defs/color"
                  }
                ]
              },
              "arrowhead": {
                "description": "Sets the end annotation arrow head style.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 8,
                    "default": 1
                  }
                ]
              },
              "arrowside": {
                "description": "Sets the annotation arrow head position.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "oneOf": [
                      {
                        "type": "string",
                        "enum": [
                          "none"
                        ]
                      },
                      {
                        "type": "string",
                        "pattern": "^(end|start)(\\+(end|start))*$"
                      }
                    ],
                    "default": "end"
                  }
                ]
              },
              "arrowsize": {
                "description": "Sets the size of the end annotation arrow head, relative to `arrowwidth`. A value of 1 (default) gives a head about 3x as wide as the line.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "number",
                    "minimum": 0.3,
                    "default": 1
                  }
                ]
              },
              "arrowwidth": {
                "description": "Sets the width (in px) of annotation arrow line.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "number",
                    "minimum": 0.1
                  }
                ]
              },
              "ax": {
                "description": "Sets the x component of the arrow tail about the arrow head. If `axref` is `pixel`, a positive (negative) component corresponds to an arrow pointing from right to left (left to right). If `axref` is not `pixel` and is exactly the same as `xref`, this is an absolute value on that axis, like `x`, specified in the same coordinates as `xref`."
              },
              "axref": {
                "description": "Indicates in what coordinates the tail of the annotation (ax,ay) is specified. If set to a x axis id (e.g. *x* or *x2*), the `x` position refers to a x coordinate. If set to *paper*, the `x` position refers to the distance from the left of the plotting area in normalized coordinates where *0* (*1*) corresponds to the left (right). If set to a x axis ID followed by *domain* (separated by a space), the position behaves like for *paper*, but refers to the distance in fractions of the domain length from the left of the domain of that axis: e.g., *x2 domain* refers to the domain of the second x  axis and a x position of 0.5 refers to the point between the left and the right of the domain of the second x axis. In order for absolute positioning of the arrow to work, *axref* must be exactly the same as *xref*, otherwise *axref* will revert to *pixel* (explained next). For relative positioning, *axref* can be set to *pixel*, in which case the *ax* value is specified in pixels relative to *x*. Absolute positioning is useful for trendline annotations which should continue to indicate the correct trend when zoomed. Relative positioning is useful for specifying the text offset for an annotated point.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "oneOf": [
                      {
                        "type": "string",
                        "pattern": "^x([2-9]|[1-9][0-9]+)?( domain)?$"
                      },
                      {
                        "enum": [
                          "pixel"
                        ]
                      }
                    ],
                    "default": "pixel"
                  }
                ]
              },
              "ay": {
                "description": "Sets the y component of the arrow tail about the arrow head. If `ayref` is `pixel`, a positive (negative) component corresponds to an arrow pointing from bottom to top (top to bottom). If `ayref` is not `pixel` and is exactly the same as `yref`, this is an absolute value on that axis, like `y`, specified in the same coordinates as `yref`."
              },
              "ayref": {
                "description": "Indicates in what coordinates the tail of the annotation (ax,ay) is specified. If set to a y axis id (e.g. *y* or *y2*), the `y` position refers to a y coordinate. If set to *paper*, the `y` position refers to the distance from the bottom of the plotting area in normalized coordinates where *0* (*1*) corresponds to the bottom (top). If set to a y axis ID followed by *domain* (separated by a space), the position behaves like for *paper*, but refers to the distance in fractions of the domain length from the bottom of the domain of that axis: e.g., *y2 domain* refers to the domain of the second y  axis and a y position of 0.5 refers to the point between the bottom and the top of the domain of the second y axis. In order for absolute positioning of the arrow to work, *ayref* must be exactly the same as *yref*, otherwise *ayref* will revert to *pixel* (explained next). For relative positioning, *ayref* can be set to *pixel*, in which case the *ay* value is specified in pixels relative to *y*. Absolute positioning is useful for trendline annotations which should continue to indicate the correct trend when zoomed. Relative positioning is useful for specifying the text offset for an annotated point.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "oneOf": [
                      {
                        "type": "string",
                        "pattern": "^y([2-9]|[1-9][0-9]+)?( domain)?$"
                      },
                      {
                        "enum": [
                          "pixel"
                        ]
                      }
                    ],
                    "default": "pixel"
                  }
                ]
              },
              "bgcolor": {
                "description": "Sets the background color of the annotation.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "$ref": "#/$defs/color"
                  }
                ]
              },
              "bordercolor": {
                "description": "Sets the color of the border enclosing the annotation `text`.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "$ref": "#/$defs/color"
                  }
                ]
              },
              "borderpad": {
                "description": "Sets the padding (in px) between the `text` and the enclosing border.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "number",
                    "minimum": 0,
                    "default": 1
                  }
                ]
              },
              "borderwidth": {
                "description": "Sets the width (in px) of the border enclosing the annotation `text`.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "number",
                    "minimum": 0,
                    "default": 1
                  }
                ]
              },
              "captureevents": {
                "description": "Determines whether the annotation text box captures mouse move and click events, or allows those events to pass through to data points in the plot that may be behind the annotation. By default `captureevents` is *false* unless `hovertext` is provided. If you use the event `plotly_clickannotation` without `hovertext` you must explicitly enable `captureevents`.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "boolean"
                  }
                ]
              },
              "clicktoshow": {
                "description": "Makes this annotation respond to clicks on the plot. If you click a data point that exactly matches the `x` and `y` values of this annotation, and it is hidden (visible: false), it will appear. In *onoff* mode, you must click the same point again to make it disappear, so if you click multiple points, you can show multiple annotations. In *onout* mode, a click anywhere else in the plot (on another data point or not) will hide this annotation. If you need to show/hide this annotation in response to different `x` or `y` values, you can set `xclick` and/or `yclick`. This is useful for example to label the side of a bar. To label markers though, `standoff` is preferred over `xclick` and `yclick`.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "enum": [
                      false,
                      "onoff",
                      "onout"
                    ],
                    "default": false
                  }
                ]
              },
              "font": {
                "type": "object",
                "properties": {
                  "color": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  },
                  "family": {
                    "pattern": ".*\\S.*$",
                    "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                    "type": "string"
                  },
                  "lineposition": {
                    "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "oneOf": [
                          {
                            "type": "string",
                            "enum": [
                              "none"
                            ]
                          },
                          {
                            "type": "string",
                            "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                          }
                        ],
                        "default": "none"
                      }
                    ]
                  },
                  "shadow": {
                    "default": "none",
                    "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                    "type": "string"
                  },
                  "size": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 1
                      }
                    ]
                  },
                  "style": {
                    "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "italic"
                        ],
                        "default": "normal"
                      }
                    ]
                  },
                  "textcase": {
                    "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "word caps",
                          "upper",
                          "lower"
                        ],
                        "default": "normal"
                      }
                    ]
                  },
                  "variant": {
                    "description": "Sets the variant of the font.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "small-caps",
                          "all-small-caps",
                          "all-petite-caps",
                          "petite-caps",
                          "unicase"
                        ],
                        "default": "normal"
                      }
                    ]
                  },
                  "weight": {
                    "description": "Sets the weight (or boldness) of the font.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 1000,
                        "default": "normal"
                      }
                    ]
                  }
                },
                "additionalProperties": false
              },
              "height": {
                "description": "Sets an explicit height for the text box. null (default) lets the text set the box height. Taller text will be clipped.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "number",
                    "minimum": 1,
                    "default": null
                  }
                ]
              },
              "hoverlabel": {
                "type": "object",
                "properties": {
                  "bgcolor": {
                    "description": "Sets the background color of the hover label. By default uses the annotation's `bgcolor` made opaque, or white if it was transparent.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  },
                  "bordercolor": {
                    "description": "Sets the border color of the hover label. By default uses either dark grey or white, for maximum contrast with `hoverlabel.bgcolor`.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  },
                  "font": {
                    "type": "object",
                    "properties": {
                      "color": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      },
                      "family": {
                        "pattern": ".*\\S.*$",
                        "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                        "type": "string"
                      },
                      "lineposition": {
                        "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "oneOf": [
                              {
                                "type": "string",
                                "enum": [
                                  "none"
                                ]
                              },
                              {
                                "type": "string",
                                "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                              }
                            ],
                            "default": "none"
                          }
                        ]
                      },
                      "shadow": {
                        "default": "none",
                        "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                        "type": "string"
                      },
                      "size": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 1
                          }
                        ]
                      },
                      "style": {
                        "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "italic"
                            ],
                            "default": "normal"
                          }
                        ]
                      },
                      "textcase": {
                        "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "word caps",
                              "upper",
                              "lower"
                            ],
                            "default": "normal"
                          }
                        ]
                      },
                      "variant": {
                        "description": "Sets the variant of the font.",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "small-caps",
                              "all-small-caps",
                              "all-petite-caps",
                              "petite-caps",
                              "unicase"
                            ],
                            "default": "normal"
                          }
                        ]
                      },
                      "weight": {
                        "description": "Sets the weight (or boldness) of the font.",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 1000,
                            "default": "normal"
                          }
                        ]
                      }
                    },
                    "additionalProperties": false
                  }
                },
                "additionalProperties": false
              },
              "hovertext": {
                "description": "Sets text to appear when hovering over this annotation. If omitted or blank, no hover label will appear.",
                "type": "string"
              },
              "name": {
                "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.",
                "type": "string"
              },
              "opacity": {
                "description": "Sets the opacity of the annotation (text + arrow).",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 1,
                    "default": 1
                  }
                ]
              },
              "showarrow": {
                "description": "Determines whether or not the annotation is drawn with an arrow. If *true*, `text` is placed near the arrow's tail. If *false*, `text` lines up with the `x` and `y` provided.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "boolean",
                    "default": true
                  }
                ]
              },
              "standoff": {
                "description": "Sets a distance, in pixels, to move the end arrowhead away from the position it is pointing at, for example to point at the edge of a marker independent of zoom. Note that this shortens the arrow from the `ax` / `ay` vector, in contrast to `xshift` / `yshift` which moves everything by this amount.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "number",
                    "minimum": 0,
                    "default": 0
                  }
                ]
              },
              "startarrowhead": {
                "description": "Sets the start annotation arrow head style.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 8,
                    "default": 1
                  }
                ]
              },
              "startarrowsize": {
                "description": "Sets the size of the start annotation arrow head, relative to `arrowwidth`. A value of 1 (default) gives a head about 3x as wide as the line.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "number",
                    "minimum": 0.3,
                    "default": 1
                  }
                ]
              },
              "startstandoff": {
                "description": "Sets a distance, in pixels, to move the start arrowhead away from the position it is pointing at, for example to point at the edge of a marker independent of zoom. Note that this shortens the arrow from the `ax` / `ay` vector, in contrast to `xshift` / `yshift` which moves everything by this amount.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "number",
                    "minimum": 0,
                    "default": 0
                  }
                ]
              },
              "templateitemname": {
                "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.",
                "type": "string"
              },
              "text": {
                "description": "Sets the text associated with this annotation. Plotly uses a subset of HTML tags to do things like newline (<br>), bold (<b></b>), italics (<i></i>), hyperlinks (<a href='...'></a>). Tags <em>, <sup>, <sub>, <s>, <u> <span> are also supported.",
                "type": "string"
              },
              "textangle": {
                "description": "Sets the angle at which the `text` is drawn with respect to the horizontal.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "number",
                    "minimum": -180,
                    "maximum": 180,
                    "default": 0
                  }
                ]
              },
              "valign": {
                "description": "Sets the vertical alignment of the `text` within the box. Has an effect only if an explicit height is set to override the text height.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "enum": [
                      "top",
                      "middle",
                      "bottom"
                    ],
                    "default": "middle"
                  }
                ]
              },
              "visible": {
                "description": "Determines whether or not this annotation is visible.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "boolean",
                    "default": true
                  }
                ]
              },
              "width": {
                "description": "Sets an explicit width for the text box. null (default) lets the text set the box width. Wider text will be clipped. There is no automatic wrapping; use <br> to start a new line.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "number",
                    "minimum": 1,
                    "default": null
                  }
                ]
              },
              "x": {
                "description": "Sets the annotation's x position. If the axis `type` is *log*, then you must take the log of your desired range. If the axis `type` is *date*, it should be date strings, like date data, though Date objects and unix milliseconds will be accepted and converted to strings. If the axis `type` is *category*, it should be numbers, using the scale where each category is assigned a serial number from zero in the order it appears."
              },
              "xanchor": {
                "description": "Sets the text box's horizontal position anchor This anchor binds the `x` position to the *left*, *center* or *right* of the annotation. For example, if `x` is set to 1, `xref` to *paper* and `xanchor` to *right* then the right-most portion of the annotation lines up with the right-most edge of the plotting area. If *auto*, the anchor is equivalent to *center* for data-referenced annotations or if there is an arrow, whereas for paper-referenced with no arrow, the anchor picked corresponds to the closest side.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "enum": [
                      "auto",
                      "left",
                      "center",
                      "right"
                    ],
                    "default": "auto"
                  }
                ]
              },
              "xclick": {
                "description": "Toggle this annotation when clicking a data point whose `x` value is `xclick` rather than the annotation's `x` value."
              },
              "xref": {
                "description": "Sets the annotation's x coordinate axis. If set to a x axis id (e.g. *x* or *x2*), the `x` position refers to a x coordinate. If set to *paper*, the `x` position refers to the distance from the left of the plotting area in normalized coordinates where *0* (*1*) corresponds to the left (right). If set to a x axis ID followed by *domain* (separated by a space), the position behaves like for *paper*, but refers to the distance in fractions of the domain length from the left of the domain of that axis: e.g., *x2 domain* refers to the domain of the second x  axis and a x position of 0.5 refers to the point between the left and the right of the domain of the second x axis.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "oneOf": [
                      {
                        "type": "string",
                        "pattern": "^x([2-9]|[1-9][0-9]+)?( domain)?$"
                      },
                      {
                        "enum": [
                          "paper"
                        ]
                      }
                    ]
                  }
                ]
              },
              "xshift": {
                "description": "Shifts the position of the whole annotation and arrow to the right (positive) or left (negative) by this many pixels.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "number",
                    "default": 0
                  }
                ]
              },
              "y": {
                "description": "Sets the annotation's y position. If the axis `type` is *log*, then you must take the log of your desired range. If the axis `type` is *date*, it should be date strings, like date data, though Date objects and unix milliseconds will be accepted and converted to strings. If the axis `type` is *category*, it should be numbers, using the scale where each category is assigned a serial number from zero in the order it appears."
              },
              "yanchor": {
                "description": "Sets the text box's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the annotation. For example, if `y` is set to 1, `yref` to *paper* and `yanchor` to *top* then the top-most portion of the annotation lines up with the top-most edge of the plotting area. If *auto*, the anchor is equivalent to *middle* for data-referenced annotations or if there is an arrow, whereas for paper-referenced with no arrow, the anchor picked corresponds to the closest side.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "enum": [
                      "auto",
                      "top",
                      "middle",
                      "bottom"
                    ],
                    "default": "auto"
                  }
                ]
              },
              "yclick": {
                "description": "Toggle this annotation when clicking a data point whose `y` value is `yclick` rather than the annotation's `y` value."
              },
              "yref": {
                "description": "Sets the annotation's y coordinate axis. If set to a y axis id (e.g. *y* or *y2*), the `y` position refers to a y coordinate. If set to *paper*, the `y` position refers to the distance from the bottom of the plotting area in normalized coordinates where *0* (*1*) corresponds to the bottom (top). If set to a y axis ID followed by *domain* (separated by a space), the position behaves like for *paper*, but refers to the distance in fractions of the domain length from the bottom of the domain of that axis: e.g., *y2 domain* refers to the domain of the second y  axis and a y position of 0.5 refers to the point between the bottom and the top of the domain of the second y axis.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "oneOf": [
                      {
                        "type": "string",
                        "pattern": "^y([2-9]|[1-9][0-9]+)?( domain)?$"
                      },
                      {
                        "enum": [
                          "paper"
                        ]
                      }
                    ]
                  }
                ]
              },
              "yshift": {
                "description": "Shifts the position of the whole annotation and arrow up (positive) or down (negative) by this many pixels.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "number",
                    "default": 0
                  }
                ]
              }
            },
            "additionalProperties": false
          },
          "minItems": 1
        },
        "autosize": {
          "description": "Determines whether or not a layout width or height that has been left undefined by the user is initialized on each relayout. Note that, regardless of this attribute, an undefined layout width or height is always initialized on the first call to plot.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": false
            }
          ]
        },
        "autotypenumbers": {
          "description": "Using *strict* a numeric string in trace data is not converted to a number. Using *convert types* a numeric string in trace data may be treated as a number during automatic axis `type` detection. This is the default value; however it could be overridden for individual axes.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "convert types",
                "strict"
              ],
              "default": "convert types"
            }
          ]
        },
        "calendar": {
          "description": "Sets the default calendar system to use for interpreting and displaying dates throughout the plot.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "chinese",
                "coptic",
                "discworld",
                "ethiopian",
                "gregorian",
                "hebrew",
                "islamic",
                "jalali",
                "julian",
                "mayan",
                "nanakshahi",
                "nepali",
                "persian",
                "taiwan",
                "thai",
                "ummalqura"
              ],
              "default": "gregorian"
            }
          ]
        },
        "clickmode": {
          "description": "Determines the mode of single click interactions. *event* is the default value and emits the `plotly_click` event. In addition this mode emits the `plotly_selected` event in drag modes *lasso* and *select*, but with no event data attached (kept for compatibility reasons). The *select* flag enables selecting single data points via click. This mode also supports persistent selections, meaning that pressing Shift while clicking, adds to / subtracts from an existing selection. *select* with `hovermode`: *x* can be confusing, consider explicitly setting `hovermode`: *closest* when using this feature. Selection events are sent accordingly as long as *event* flag is set as well. When the *event* flag is missing, `plotly_click` and `plotly_selected` events are not fired.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "oneOf": [
                {
                  "type": "string",
                  "enum": [
                    "none"
                  ]
                },
                {
                  "type": "string",
                  "pattern": "^(event|select)(\\+(event|select))*$"
                }
              ],
              "default": "event"
            }
          ]
        },
        "coloraxis": {
          "type": "object",
          "properties": {
            "autocolorscale": {
              "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": true
                }
              ]
            },
            "cauto": {
              "description": "Determines whether or not the color domain is computed with respect to the input data (here corresponding trace color array(s)) or the bounds set in `cmin` and `cmax` Defaults to `false` when `cmin` and `cmax` are set by the user.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": true
                }
              ]
            },
            "cmax": {
              "description": "Sets the upper bound of the color domain. Value should have the same units as corresponding trace color array(s) and if set, `cmin` must be set as well.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": null
                }
              ]
            },
            "cmid": {
              "description": "Sets the mid-point of the color domain by scaling `cmin` and/or `cmax` to be equidistant to this point. Value should have the same units as corresponding trace color array(s). Has no effect when `cauto` is `false`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": null
                }
              ]
            },
            "cmin": {
              "description": "Sets the lower bound of the color domain. Value should have the same units as corresponding trace color array(s) and if set, `cmax` must be set as well.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": null
                }
              ]
            },
            "colorbar": {
              "type": "object",
              "properties": {
                "bgcolor": {
                  "description": "Sets the color of padded area.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "bordercolor": {
                  "description": "Sets the axis line color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "borderwidth": {
                  "description": "Sets the width (in px) or the border enclosing this color bar.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 0
                    }
                  ]
                },
                "dtick": {
                  "description": "Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L<f>*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M<n>* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48*"
                },
                "exponentformat": {
                  "description": "Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "none",
                        "e",
                        "E",
                        "power",
                        "SI",
                        "B"
                      ],
                      "default": "B"
                    }
                  ]
                },
                "labelalias": {
                  "default": false,
                  "description": "Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax."
                },
                "len": {
                  "description": "Sets the length of the color bar This measure excludes the padding of both ends. That is, the color bar length is this length minus the padding on both ends.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "lenmode": {
                  "description": "Determines whether this color bar's length (i.e. the measure in the color variation direction) is set in units of plot *fraction* or in *pixels. Use `len` to set the value.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "fraction",
                        "pixels"
                      ],
                      "default": "fraction"
                    }
                  ]
                },
                "minexponent": {
                  "description": "Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 3
                    }
                  ]
                },
                "nticks": {
                  "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 0,
                      "default": 0
                    }
                  ]
                },
                "orientation": {
                  "description": "Sets the orientation of the colorbar.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "h",
                        "v"
                      ],
                      "default": "v"
                    }
                  ]
                },
                "outlinecolor": {
                  "description": "Sets the axis line color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "outlinewidth": {
                  "description": "Sets the width (in px) of the axis line.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "separatethousands": {
                  "description": "If \"true\", even 4-digit integers are separated",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": false
                    }
                  ]
                },
                "showexponent": {
                  "description": "If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "showticklabels": {
                  "description": "Determines whether or not the tick labels are drawn.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                },
                "showtickprefix": {
                  "description": "If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "showticksuffix": {
                  "description": "Same as `showtickprefix` but for tick suffixes.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "thickness": {
                  "description": "Sets the thickness of the color bar This measure excludes the size of the padding, ticks and labels.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 30
                    }
                  ]
                },
                "thicknessmode": {
                  "description": "Determines whether this color bar's thickness (i.e. the measure in the constant color direction) is set in units of plot *fraction* or in *pixels*. Use `thickness` to set the value.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "fraction",
                        "pixels"
                      ],
                      "default": "pixels"
                    }
                  ]
                },
                "tick0": {
                  "description": "Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L<f>* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears."
                },
                "tickangle": {
                  "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": -180,
                      "maximum": 180,
                      "default": "auto"
                    }
                  ]
                },
                "tickcolor": {
                  "description": "Sets the tick color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "tickfont": {
                  "type": "object",
                  "properties": {
                    "color": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    "family": {
                      "pattern": ".*\\S.*$",
                      "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                      "type": "string"
                    },
                    "lineposition": {
                      "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    "shadow": {
                      "default": "none",
                      "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                      "type": "string"
                    },
                    "size": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    "style": {
                      "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "textcase": {
                      "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "variant": {
                      "description": "Sets the variant of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "weight": {
                      "description": "Sets the weight (or boldness) of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    }
                  },
                  "additionalProperties": false
                },
                "tickformat": {
                  "default": "",
                  "description": "Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*",
                  "type": "string"
                },
                "tickformatstops": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "dtickrange": {
                        "description": "range [*min*, *max*], where *min*, *max* - dtick values which describe some zoom level, it is possible to omit *min* or *max* value by passing *null*",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "array",
                            "items": {},
                            "minItems": 2,
                            "maxItems": 2
                          }
                        ]
                      },
                      "enabled": {
                        "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "boolean",
                            "default": true
                          }
                        ]
                      },
                      "name": {
                        "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.",
                        "type": "string"
                      },
                      "templateitemname": {
                        "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.",
                        "type": "string"
                      },
                      "value": {
                        "default": "",
                        "description": "string - dtickformat for described zoom level, the same as *tickformat*",
                        "type": "string"
                      }
                    },
                    "additionalProperties": false
                  },
                  "minItems": 1
                },
                "ticklabeloverflow": {
                  "description": "Determines how we handle tick labels that would overflow either the graph div or the domain of the axis. The default value for inside tick labels is *hide past domain*. In other cases the default is *hide past div*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "allow",
                        "hide past div",
                        "hide past domain"
                      ]
                    }
                  ]
                },
                "ticklabelposition": {
                  "description": "Determines where tick labels are drawn relative to the ticks. Left and right options are used when `orientation` is *h*, top and bottom when `orientation` is *v*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "outside",
                        "inside",
                        "outside top",
                        "inside top",
                        "outside left",
                        "inside left",
                        "outside right",
                        "inside right",
                        "outside bottom",
                        "inside bottom"
                      ],
                      "default": "outside"
                    }
                  ]
                },
                "ticklabelstep": {
                  "description": "Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "default": 1
                    }
                  ]
                },
                "ticklen": {
                  "description": "Sets the tick length (in px).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 5
                    }
                  ]
                },
                "tickmode": {
                  "description": "Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "auto",
                        "linear",
                        "array"
                      ]
                    }
                  ]
                },
                "tickprefix": {
                  "default": "",
                  "description": "Sets a tick label prefix.",
                  "type": "string"
                },
                "ticks": {
                  "description": "Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "outside",
                        "inside",
                        ""
                      ],
                      "default": ""
                    }
                  ]
                },
                "ticksuffix": {
                  "default": "",
                  "description": "Sets a tick label suffix.",
                  "type": "string"
                },
                "ticktext": {
                  "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "string"
                          }
                        ]
                      }
                    }
                  ]
                },
                "ticktextsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.",
                  "type": "string"
                },
                "tickvals": {
                  "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "string"
                          }
                        ]
                      }
                    }
                  ]
                },
                "tickvalssrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.",
                  "type": "string"
                },
                "tickwidth": {
                  "description": "Sets the tick width (in px).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "title": {
                  "type": "object",
                  "properties": {
                    "font": {
                      "type": "object",
                      "properties": {
                        "color": {
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "$ref": "#/$defs/color"
                            }
                          ]
                        },
                        "family": {
                          "pattern": ".*\\S.*$",
                          "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                          "type": "string"
                        },
                        "lineposition": {
                          "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "oneOf": [
                                {
                                  "type": "string",
                                  "enum": [
                                    "none"
                                  ]
                                },
                                {
                                  "type": "string",
                                  "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                                }
                              ],
                              "default": "none"
                            }
                          ]
                        },
                        "shadow": {
                          "default": "none",
                          "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                          "type": "string"
                        },
                        "size": {
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "type": "number",
                              "minimum": 1
                            }
                          ]
                        },
                        "style": {
                          "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "italic"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "textcase": {
                          "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "word caps",
                                "upper",
                                "lower"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "variant": {
                          "description": "Sets the variant of the font.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "small-caps",
                                "all-small-caps",
                                "all-petite-caps",
                                "petite-caps",
                                "unicase"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "weight": {
                          "description": "Sets the weight (or boldness) of the font.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "type": "integer",
                              "minimum": 1,
                              "maximum": 1000,
                              "default": "normal"
                            }
                          ]
                        }
                      },
                      "additionalProperties": false
                    },
                    "side": {
                      "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and  defaults to *right* when `orientation` if *h*.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "right",
                            "top",
                            "bottom"
                          ]
                        }
                      ]
                    },
                    "text": {
                      "description": "Sets the title of the color bar.",
                      "type": "string"
                    }
                  },
                  "additionalProperties": false
                },
                "x": {
                  "description": "Sets the x position with respect to `xref` of the color bar (in plot fraction). When `xref` is *paper*, defaults to 1.02 when `orientation` is *v* and 0.5 when `orientation` is *h*. When `xref` is *container*, defaults to *1* when `orientation` is *v* and 0.5 when `orientation` is *h*. Must be between *0* and *1* if `xref` is *container* and between *-2* and *3* if `xref` is *paper*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number"
                    }
                  ]
                },
                "xanchor": {
                  "description": "Sets this color bar's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the color bar. Defaults to *left* when `orientation` is *v* and *center* when `orientation` is *h*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "left",
                        "center",
                        "right"
                      ]
                    }
                  ]
                },
                "xpad": {
                  "description": "Sets the amount of padding (in px) along the x direction.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 10
                    }
                  ]
                },
                "xref": {
                  "description": "Sets the container `x` refers to. *container* spans the entire `width` of the plot. *paper* refers to the width of the plotting area only.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "container",
                        "paper"
                      ],
                      "default": "paper"
                    }
                  ]
                },
                "y": {
                  "description": "Sets the y position with respect to `yref` of the color bar (in plot fraction). When `yref` is *paper*, defaults to 0.5 when `orientation` is *v* and 1.02 when `orientation` is *h*. When `yref` is *container*, defaults to 0.5 when `orientation` is *v* and 1 when `orientation` is *h*. Must be between *0* and *1* if `yref` is *container* and between *-2* and *3* if `yref` is *paper*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number"
                    }
                  ]
                },
                "yanchor": {
                  "description": "Sets this color bar's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the color bar. Defaults to *middle* when `orientation` is *v* and *bottom* when `orientation` is *h*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "top",
                        "middle",
                        "bottom"
                      ]
                    }
                  ]
                },
                "ypad": {
                  "description": "Sets the amount of padding (in px) along the y direction.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 10
                    }
                  ]
                },
                "yref": {
                  "description": "Sets the container `y` refers to. *container* spans the entire `height` of the plot. *paper* refers to the height of the plotting area only.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "container",
                        "paper"
                      ],
                      "default": "paper"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "colorscale": {
              "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/colorscale",
                  "default": null
                }
              ]
            },
            "reversescale": {
              "description": "Reverses the color mapping if true. If true, `cmin` will correspond to the last color in the array and `cmax` will correspond to the first color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            },
            "showscale": {
              "description": "Determines whether or not a colorbar is displayed for this trace.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": true
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "colorscale": {
          "type": "object",
          "properties": {
            "diverging": {
              "description": "Sets the default diverging colorscale. Note that `autocolorscale` must be true for this attribute to work.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/colorscale",
                  "default": [
                    [
                      0,
                      "rgb(5,10,172)"
                    ],
                    [
                      0.35,
                      "rgb(106,137,247)"
                    ],
                    [
                      0.5,
                      "rgb(190,190,190)"
                    ],
                    [
                      0.6,
                      "rgb(220,170,132)"
                    ],
                    [
                      0.7,
                      "rgb(230,145,90)"
                    ],
                    [
                      1,
                      "rgb(178,10,28)"
                    ]
                  ]
                }
              ]
            },
            "sequential": {
              "description": "Sets the default sequential colorscale for positive values. Note that `autocolorscale` must be true for this attribute to work.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/colorscale",
                  "default": [
                    [
                      0,
                      "rgb(220,220,220)"
                    ],
                    [
                      0.2,
                      "rgb(245,195,157)"
                    ],
                    [
                      0.4,
                      "rgb(245,160,105)"
                    ],
                    [
                      1,
                      "rgb(178,10,28)"
                    ]
                  ]
                }
              ]
            },
            "sequentialminus": {
              "description": "Sets the default sequential colorscale for negative values. Note that `autocolorscale` must be true for this attribute to work.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/colorscale",
                  "default": [
                    [
                      0,
                      "rgb(5,10,172)"
                    ],
                    [
                      0.35,
                      "rgb(40,60,190)"
                    ],
                    [
                      0.5,
                      "rgb(70,100,245)"
                    ],
                    [
                      0.6,
                      "rgb(90,120,245)"
                    ],
                    [
                      0.7,
                      "rgb(106,137,247)"
                    ],
                    [
                      1,
                      "rgb(220,220,220)"
                    ]
                  ]
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "colorway": {
          "description": "Sets the default trace colors.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "$ref": "#/$defs/color"
              },
              "default": [
                "#1f77b4",
                "#ff7f0e",
                "#2ca02c",
                "#d62728",
                "#9467bd",
                "#8c564b",
                "#e377c2",
                "#7f7f7f",
                "#bcbd22",
                "#17becf"
              ]
            }
          ]
        },
        "computed": {
          "description": "Placeholder for exporting automargin-impacting values namely `margin.t`, `margin.b`, `margin.l` and `margin.r` in *full-json* mode."
        },
        "datarevision": {
          "description": "If provided, a changed value tells `Plotly.react` that one or more data arrays has changed. This way you can modify arrays in-place rather than making a complete new copy for an incremental change. If NOT provided, `Plotly.react` assumes that data arrays are being treated as immutable, thus any data array with a different identity from its predecessor contains new data."
        },
        "dragmode": {
          "description": "Determines the mode of drag interactions. *select* and *lasso* apply only to scatter traces with markers or text. *orbit* and *turntable* apply only to 3D scenes.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "zoom",
                "pan",
                "select",
                "lasso",
                "drawclosedpath",
                "drawopenpath",
                "drawline",
                "drawrect",
                "drawcircle",
                "orbit",
                "turntable",
                false
              ],
              "default": "zoom"
            }
          ]
        },
        "editrevision": {
          "description": "Controls persistence of user-driven changes in `editable: true` configuration, other than trace names and axis titles. Defaults to `layout.uirevision`."
        },
        "font": {
          "type": "object",
          "properties": {
            "color": {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "family": {
              "default": "\"Open Sans\", verdana, arial, sans-serif",
              "pattern": ".*\\S.*$",
              "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
              "type": "string"
            },
            "lineposition": {
              "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "oneOf": [
                    {
                      "type": "string",
                      "enum": [
                        "none"
                      ]
                    },
                    {
                      "type": "string",
                      "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                    }
                  ],
                  "default": "none"
                }
              ]
            },
            "shadow": {
              "default": "none",
              "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
              "type": "string"
            },
            "size": {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 1,
                  "default": 12
                }
              ]
            },
            "style": {
              "description": "Sets whether a font should be styled with a normal or italic face from its family.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "normal",
                    "italic"
                  ],
                  "default": "normal"
                }
              ]
            },
            "textcase": {
              "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "normal",
                    "word caps",
                    "upper",
                    "lower"
                  ],
                  "default": "normal"
                }
              ]
            },
            "variant": {
              "description": "Sets the variant of the font.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "normal",
                    "small-caps",
                    "all-small-caps",
                    "all-petite-caps",
                    "petite-caps",
                    "unicase"
                  ],
                  "default": "normal"
                }
              ]
            },
            "weight": {
              "description": "Sets the weight (or boldness) of the font.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 1,
                  "maximum": 1000,
                  "default": "normal"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "geo": {
          "type": "object",
          "properties": {
            "bgcolor": {
              "description": "Set the background color of the map",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "center": {
              "type": "object",
              "properties": {
                "lat": {
                  "description": "Sets the latitude of the map's center. For all projection types, the map's latitude center lies at the middle of the latitude range by default.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number"
                    }
                  ]
                },
                "lon": {
                  "description": "Sets the longitude of the map's center. By default, the map's longitude center lies at the middle of the longitude range for scoped projection and above `projection.rotation.lon` otherwise.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "coastlinecolor": {
              "description": "Sets the coastline color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "coastlinewidth": {
              "description": "Sets the coastline stroke width (in px).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 1
                }
              ]
            },
            "countrycolor": {
              "description": "Sets line color of the country boundaries.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "countrywidth": {
              "description": "Sets line width (in px) of the country boundaries.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 1
                }
              ]
            },
            "domain": {
              "type": "object",
              "properties": {
                "column": {
                  "description": "If there is a layout grid, use the domain for this column in the grid for this geo subplot . Note that geo subplots are constrained by domain. In general, when `projection.scale` is set to 1. a map will fit either its x or y domain, but not both.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 0,
                      "default": 0
                    }
                  ]
                },
                "row": {
                  "description": "If there is a layout grid, use the domain for this row in the grid for this geo subplot . Note that geo subplots are constrained by domain. In general, when `projection.scale` is set to 1. a map will fit either its x or y domain, but not both.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 0,
                      "default": 0
                    }
                  ]
                },
                "x": {
                  "description": "Sets the horizontal domain of this geo subplot (in plot fraction). Note that geo subplots are constrained by domain. In general, when `projection.scale` is set to 1. a map will fit either its x or y domain, but not both.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 0,
                            "maximum": 1
                          }
                        ]
                      },
                      "minItems": 2,
                      "maxItems": 2,
                      "default": [
                        0,
                        1
                      ]
                    }
                  ]
                },
                "y": {
                  "description": "Sets the vertical domain of this geo subplot (in plot fraction). Note that geo subplots are constrained by domain. In general, when `projection.scale` is set to 1. a map will fit either its x or y domain, but not both.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 0,
                            "maximum": 1
                          }
                        ]
                      },
                      "minItems": 2,
                      "maxItems": 2,
                      "default": [
                        0,
                        1
                      ]
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "fitbounds": {
              "description": "Determines if this subplot's view settings are auto-computed to fit trace data. On scoped maps, setting `fitbounds` leads to `center.lon` and `center.lat` getting auto-filled. On maps with a non-clipped projection, setting `fitbounds` leads to `center.lon`, `center.lat`, and `projection.rotation.lon` getting auto-filled. On maps with a clipped projection, setting `fitbounds` leads to `center.lon`, `center.lat`, `projection.rotation.lon`, `projection.rotation.lat`, `lonaxis.range` and `lataxis.range` getting auto-filled. If *locations*, only the trace's visible locations are considered in the `fitbounds` computations. If *geojson*, the entire trace input `geojson` (if provided) is considered in the `fitbounds` computations, Defaults to *false*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    false,
                    "locations",
                    "geojson"
                  ],
                  "default": false
                }
              ]
            },
            "framecolor": {
              "description": "Sets the color the frame.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "framewidth": {
              "description": "Sets the stroke width (in px) of the frame.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 1
                }
              ]
            },
            "lakecolor": {
              "description": "Sets the color of the lakes.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "landcolor": {
              "description": "Sets the land mass color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "lataxis": {
              "type": "object",
              "properties": {
                "dtick": {
                  "description": "Sets the graticule's longitude/latitude tick step.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number"
                    }
                  ]
                },
                "gridcolor": {
                  "description": "Sets the graticule's stroke color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "griddash": {
                  "default": "solid",
                  "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).",
                  "type": "string"
                },
                "gridwidth": {
                  "description": "Sets the graticule's stroke width (in px).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "range": {
                  "description": "Sets the range of this axis (in degrees), sets the map's clipped coordinates.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number"
                          }
                        ]
                      },
                      "minItems": 2,
                      "maxItems": 2
                    }
                  ]
                },
                "showgrid": {
                  "description": "Sets whether or not graticule are shown on the map.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": false
                    }
                  ]
                },
                "tick0": {
                  "description": "Sets the graticule's starting tick longitude/latitude.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "default": 0
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "lonaxis": {
              "type": "object",
              "properties": {
                "dtick": {
                  "description": "Sets the graticule's longitude/latitude tick step.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number"
                    }
                  ]
                },
                "gridcolor": {
                  "description": "Sets the graticule's stroke color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "griddash": {
                  "default": "solid",
                  "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).",
                  "type": "string"
                },
                "gridwidth": {
                  "description": "Sets the graticule's stroke width (in px).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "range": {
                  "description": "Sets the range of this axis (in degrees), sets the map's clipped coordinates.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number"
                          }
                        ]
                      },
                      "minItems": 2,
                      "maxItems": 2
                    }
                  ]
                },
                "showgrid": {
                  "description": "Sets whether or not graticule are shown on the map.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": false
                    }
                  ]
                },
                "tick0": {
                  "description": "Sets the graticule's starting tick longitude/latitude.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "default": 0
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "oceancolor": {
              "description": "Sets the ocean color",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "projection": {
              "type": "object",
              "properties": {
                "distance": {
                  "description": "For satellite projection type only. Sets the distance from the center of the sphere to the point of view as a proportion of the sphere’s radius.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1.001,
                      "default": 2
                    }
                  ]
                },
                "parallels": {
                  "description": "For conic projection types only. Sets the parallels (tangent, secant) where the cone intersects the sphere.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number"
                          }
                        ]
                      },
                      "minItems": 2,
                      "maxItems": 2
                    }
                  ]
                },
                "rotation": {
                  "type": "object",
                  "properties": {
                    "lat": {
                      "description": "Rotates the map along meridians (in degrees North).",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number"
                        }
                      ]
                    },
                    "lon": {
                      "description": "Rotates the map along parallels (in degrees East). Defaults to the center of the `lonaxis.range` values.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number"
                        }
                      ]
                    },
                    "roll": {
                      "description": "Roll the map (in degrees) For example, a roll of *180* makes the map appear upside down.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number"
                        }
                      ]
                    }
                  },
                  "additionalProperties": false
                },
                "scale": {
                  "description": "Zooms in or out on the map view. A scale of *1* corresponds to the largest zoom level that fits the map's lon and lat ranges. ",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "tilt": {
                  "description": "For satellite projection type only. Sets the tilt angle of perspective projection.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "default": 0
                    }
                  ]
                },
                "type": {
                  "description": "Sets the projection type.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "airy",
                        "aitoff",
                        "albers",
                        "albers usa",
                        "august",
                        "azimuthal equal area",
                        "azimuthal equidistant",
                        "baker",
                        "bertin1953",
                        "boggs",
                        "bonne",
                        "bottomley",
                        "bromley",
                        "collignon",
                        "conic conformal",
                        "conic equal area",
                        "conic equidistant",
                        "craig",
                        "craster",
                        "cylindrical equal area",
                        "cylindrical stereographic",
                        "eckert1",
                        "eckert2",
                        "eckert3",
                        "eckert4",
                        "eckert5",
                        "eckert6",
                        "eisenlohr",
                        "equal earth",
                        "equirectangular",
                        "fahey",
                        "foucaut",
                        "foucaut sinusoidal",
                        "ginzburg4",
                        "ginzburg5",
                        "ginzburg6",
                        "ginzburg8",
                        "ginzburg9",
                        "gnomonic",
                        "gringorten",
                        "gringorten quincuncial",
                        "guyou",
                        "hammer",
                        "hill",
                        "homolosine",
                        "hufnagel",
                        "hyperelliptical",
                        "kavrayskiy7",
                        "lagrange",
                        "larrivee",
                        "laskowski",
                        "loximuthal",
                        "mercator",
                        "miller",
                        "mollweide",
                        "mt flat polar parabolic",
                        "mt flat polar quartic",
                        "mt flat polar sinusoidal",
                        "natural earth",
                        "natural earth1",
                        "natural earth2",
                        "nell hammer",
                        "nicolosi",
                        "orthographic",
                        "patterson",
                        "peirce quincuncial",
                        "polyconic",
                        "rectangular polyconic",
                        "robinson",
                        "satellite",
                        "sinu mollweide",
                        "sinusoidal",
                        "stereographic",
                        "times",
                        "transverse mercator",
                        "van der grinten",
                        "van der grinten2",
                        "van der grinten3",
                        "van der grinten4",
                        "wagner4",
                        "wagner6",
                        "wiechel",
                        "winkel tripel",
                        "winkel3"
                      ]
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "resolution": {
              "description": "Sets the resolution of the base layers. The values have units of km/mm e.g. 110 corresponds to a scale ratio of 1:110,000,000.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    110,
                    50
                  ],
                  "default": 110
                }
              ]
            },
            "rivercolor": {
              "description": "Sets color of the rivers.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "riverwidth": {
              "description": "Sets the stroke width (in px) of the rivers.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 1
                }
              ]
            },
            "scope": {
              "description": "Set the scope of the map.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "africa",
                    "asia",
                    "europe",
                    "north america",
                    "south america",
                    "usa",
                    "world"
                  ],
                  "default": "world"
                }
              ]
            },
            "showcoastlines": {
              "description": "Sets whether or not the coastlines are drawn.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean"
                }
              ]
            },
            "showcountries": {
              "description": "Sets whether or not country boundaries are drawn.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean"
                }
              ]
            },
            "showframe": {
              "description": "Sets whether or not a frame is drawn around the map.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean"
                }
              ]
            },
            "showlakes": {
              "description": "Sets whether or not lakes are drawn.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            },
            "showland": {
              "description": "Sets whether or not land masses are filled in color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            },
            "showocean": {
              "description": "Sets whether or not oceans are filled in color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            },
            "showrivers": {
              "description": "Sets whether or not rivers are drawn.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            },
            "showsubunits": {
              "description": "Sets whether or not boundaries of subunits within countries (e.g. states, provinces) are drawn.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean"
                }
              ]
            },
            "subunitcolor": {
              "description": "Sets the color of the subunits boundaries.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "subunitwidth": {
              "description": "Sets the stroke width (in px) of the subunits boundaries.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 1
                }
              ]
            },
            "uirevision": {
              "description": "Controls persistence of user-driven changes in the view (projection and center). Defaults to `layout.uirevision`."
            },
            "visible": {
              "description": "Sets the default visibility of the base layers.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": true
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "grid": {
          "type": "object",
          "properties": {
            "columns": {
              "description": "The number of columns in the grid. If you provide a 2D `subplots` array, the length of its longest row is used as the default. If you give an `xaxes` array, its length is used as the default. But it's also possible to have a different length, if you want to leave a row at the end for non-cartesian subplots.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 1
                }
              ]
            },
            "domain": {
              "type": "object",
              "properties": {
                "x": {
                  "description": "Sets the horizontal domain of this grid subplot (in plot fraction). The first and last cells end exactly at the domain edges, with no grout around the edges.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 0,
                            "maximum": 1
                          }
                        ]
                      },
                      "minItems": 2,
                      "maxItems": 2,
                      "default": [
                        0,
                        1
                      ]
                    }
                  ]
                },
                "y": {
                  "description": "Sets the vertical domain of this grid subplot (in plot fraction). The first and last cells end exactly at the domain edges, with no grout around the edges.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 0,
                            "maximum": 1
                          }
                        ]
                      },
                      "minItems": 2,
                      "maxItems": 2,
                      "default": [
                        0,
                        1
                      ]
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "pattern": {
              "description": "If no `subplots`, `xaxes`, or `yaxes` are given but we do have `rows` and `columns`, we can generate defaults using consecutive axis IDs, in two ways: *coupled* gives one x axis per column and one y axis per row. *independent* uses a new xy pair for each cell, left-to-right across each row then iterating rows according to `roworder`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "independent",
                    "coupled"
                  ],
                  "default": "coupled"
                }
              ]
            },
            "roworder": {
              "description": "Is the first row the top or the bottom? Note that columns are always enumerated from left to right.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "top to bottom",
                    "bottom to top"
                  ],
                  "default": "top to bottom"
                }
              ]
            },
            "rows": {
              "description": "The number of rows in the grid. If you provide a 2D `subplots` array or a `yaxes` array, its length is used as the default. But it's also possible to have a different length, if you want to leave a row at the end for non-cartesian subplots.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 1
                }
              ]
            },
            "subplots": {
              "description": "Used for freeform grids, where some axes may be shared across subplots but others are not. Each entry should be a cartesian subplot id, like *xy* or *x3y2*, or ** to leave that cell empty. You may reuse x axes within the same column, and y axes within the same row. Non-cartesian subplots and traces that support `domain` can place themselves in this grid separately using the `gridcell` attribute.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "oneOf": [
                          {
                            "type": "string",
                            "pattern": "^x([2-9]|[1-9][0-9]+)?y([2-9]|[1-9][0-9]+)?$"
                          },
                          {
                            "enum": [
                              ""
                            ]
                          }
                        ]
                      }
                    ]
                  },
                  "minItems": 1
                }
              ]
            },
            "xaxes": {
              "description": "Used with `yaxes` when the x and y axes are shared across columns and rows. Each entry should be an x axis id like *x*, *x2*, etc., or ** to not put an x axis in that column. Entries other than ** must be unique. Ignored if `subplots` is present. If missing but `yaxes` is present, will generate consecutive IDs.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "oneOf": [
                          {
                            "type": "string",
                            "pattern": "^x([2-9]|[1-9][0-9]+)?( domain)?$"
                          },
                          {
                            "enum": [
                              ""
                            ]
                          }
                        ]
                      }
                    ]
                  },
                  "minItems": 1
                }
              ]
            },
            "xgap": {
              "description": "Horizontal space between grid cells, expressed as a fraction of the total width available to one cell. Defaults to 0.1 for coupled-axes grids and 0.2 for independent grids.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 1
                }
              ]
            },
            "xside": {
              "description": "Sets where the x axis labels and titles go. *bottom* means the very bottom of the grid. *bottom plot* is the lowest plot that each x axis is used in. *top* and *top plot* are similar.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "bottom",
                    "bottom plot",
                    "top plot",
                    "top"
                  ],
                  "default": "bottom plot"
                }
              ]
            },
            "yaxes": {
              "description": "Used with `yaxes` when the x and y axes are shared across columns and rows. Each entry should be an y axis id like *y*, *y2*, etc., or ** to not put a y axis in that row. Entries other than ** must be unique. Ignored if `subplots` is present. If missing but `xaxes` is present, will generate consecutive IDs.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "oneOf": [
                          {
                            "type": "string",
                            "pattern": "^y([2-9]|[1-9][0-9]+)?( domain)?$"
                          },
                          {
                            "enum": [
                              ""
                            ]
                          }
                        ]
                      }
                    ]
                  },
                  "minItems": 1
                }
              ]
            },
            "ygap": {
              "description": "Vertical space between grid cells, expressed as a fraction of the total height available to one cell. Defaults to 0.1 for coupled-axes grids and 0.3 for independent grids.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 1
                }
              ]
            },
            "yside": {
              "description": "Sets where the y axis labels and titles go. *left* means the very left edge of the grid. *left plot* is the leftmost plot that each y axis is used in. *right* and *right plot* are similar.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "left",
                    "left plot",
                    "right plot",
                    "right"
                  ],
                  "default": "left plot"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "height": {
          "description": "Sets the plot's height (in px).",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 10,
              "default": 450
            }
          ]
        },
        "hidesources": {
          "description": "Determines whether or not a text link citing the data source is placed at the bottom-right cored of the figure. Has only an effect only on graphs that have been generated via forked graphs from the Chart Studio Cloud (at <https://chart-studio.plotly.com> or on-premise).",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": false
            }
          ]
        },
        "hoverdistance": {
          "description": "Sets the default distance (in pixels) to look for data to add hover labels (-1 means no cutoff, 0 means no looking for data). This is only a real distance for hovering on point-like objects, like scatter points. For area-like objects (bars, scatter fills, etc) hovering is on inside the area and off outside, but these objects will not supersede hover on point-like objects in case of conflict.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "integer",
              "minimum": -1,
              "default": 20
            }
          ]
        },
        "hoverlabel": {
          "type": "object",
          "properties": {
            "align": {
              "description": "Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "left",
                    "right",
                    "auto"
                  ],
                  "default": "auto"
                }
              ]
            },
            "bgcolor": {
              "description": "Sets the background color of all hover labels on graph",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "bordercolor": {
              "description": "Sets the border color of all hover labels on graph.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "family": {
                  "default": "Arial, sans-serif",
                  "pattern": ".*\\S.*$",
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                "shadow": {
                  "default": "none",
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1,
                      "default": 13
                    }
                  ]
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "grouptitlefont": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "family": {
                  "pattern": ".*\\S.*$",
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                "shadow": {
                  "default": "none",
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "namelength": {
              "description": "Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": -1,
                  "default": 15
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "hovermode": {
          "description": "Determines the mode of hover interactions. If *closest*, a single hoverlabel will appear for the *closest* point within the `hoverdistance`. If *x* (or *y*), multiple hoverlabels will appear for multiple points at the *closest* x- (or y-) coordinate within the `hoverdistance`, with the caveat that no more than one hoverlabel will appear per trace. If *x unified* (or *y unified*), a single hoverlabel will appear multiple points at the closest x- (or y-) coordinate within the `hoverdistance` with the caveat that no more than one hoverlabel will appear per trace. In this mode, spikelines are enabled by default perpendicular to the specified axis. If false, hover interactions are disabled.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "x",
                "y",
                "closest",
                false,
                "x unified",
                "y unified"
              ],
              "default": "closest"
            }
          ]
        },
        "hoversubplots": {
          "description": "Determines expansion of hover effects to other subplots If *single* just the axis pair of the primary point is included without overlaying subplots. If *overlaying* all subplots using the main axis and occupying the same space are included. If *axis*, also include stacked subplots using the same axis when `hovermode` is set to *x*, *x unified*, *y* or *y unified*.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "single",
                "overlaying",
                "axis"
              ],
              "default": "overlaying"
            }
          ]
        },
        "images": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "layer": {
                "description": "Specifies whether images are drawn below or above traces. When `xref` and `yref` are both set to `paper`, image is drawn below the entire plot area.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "enum": [
                      "below",
                      "above"
                    ],
                    "default": "above"
                  }
                ]
              },
              "name": {
                "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.",
                "type": "string"
              },
              "opacity": {
                "description": "Sets the opacity of the image.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 1,
                    "default": 1
                  }
                ]
              },
              "sizex": {
                "description": "Sets the image container size horizontally. The image will be sized based on the `position` value. When `xref` is set to `paper`, units are sized relative to the plot width. When `xref` ends with ` domain`, units are sized relative to the axis width.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "number",
                    "default": 0
                  }
                ]
              },
              "sizey": {
                "description": "Sets the image container size vertically. The image will be sized based on the `position` value. When `yref` is set to `paper`, units are sized relative to the plot height. When `yref` ends with ` domain`, units are sized relative to the axis height.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "number",
                    "default": 0
                  }
                ]
              },
              "sizing": {
                "description": "Specifies which dimension of the image to constrain.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "enum": [
                      "fill",
                      "contain",
                      "stretch"
                    ],
                    "default": "contain"
                  }
                ]
              },
              "source": {
                "description": "Specifies the URL of the image to be used. The URL must be accessible from the domain where the plot code is run, and can be either relative or absolute.",
                "type": "string"
              },
              "templateitemname": {
                "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.",
                "type": "string"
              },
              "visible": {
                "description": "Determines whether or not this image is visible.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "boolean",
                    "default": true
                  }
                ]
              },
              "x": {
                "default": 0,
                "description": "Sets the image's x position. When `xref` is set to `paper`, units are sized relative to the plot height. See `xref` for more info"
              },
              "xanchor": {
                "description": "Sets the anchor for the x position",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "enum": [
                      "left",
                      "center",
                      "right"
                    ],
                    "default": "left"
                  }
                ]
              },
              "xref": {
                "description": "Sets the images's x coordinate axis. If set to a x axis id (e.g. *x* or *x2*), the `x` position refers to a x coordinate. If set to *paper*, the `x` position refers to the distance from the left of the plotting area in normalized coordinates where *0* (*1*) corresponds to the left (right). If set to a x axis ID followed by *domain* (separated by a space), the position behaves like for *paper*, but refers to the distance in fractions of the domain length from the left of the domain of that axis: e.g., *x2 domain* refers to the domain of the second x  axis and a x position of 0.5 refers to the point between the left and the right of the domain of the second x axis.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "oneOf": [
                      {
                        "type": "string",
                        "pattern": "^x([2-9]|[1-9][0-9]+)?( domain)?$"
                      },
                      {
                        "enum": [
                          "paper"
                        ]
                      }
                    ],
                    "default": "paper"
                  }
                ]
              },
              "y": {
                "default": 0,
                "description": "Sets the image's y position. When `yref` is set to `paper`, units are sized relative to the plot height. See `yref` for more info"
              },
              "yanchor": {
                "description": "Sets the anchor for the y position.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "enum": [
                      "top",
                      "middle",
                      "bottom"
                    ],
                    "default": "top"
                  }
                ]
              },
              "yref": {
                "description": "Sets the images's y coordinate axis. If set to a y axis id (e.g. *y* or *y2*), the `y` position refers to a y coordinate. If set to *paper*, the `y` position refers to the distance from the bottom of the plotting area in normalized coordinates where *0* (*1*) corresponds to the bottom (top). If set to a y axis ID followed by *domain* (separated by a space), the position behaves like for *paper*, but refers to the distance in fractions of the domain length from the bottom of the domain of that axis: e.g., *y2 domain* refers to the domain of the second y  axis and a y position of 0.5 refers to the point between the bottom and the top of the domain of the second y axis.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "oneOf": [
                      {
                        "type": "string",
                        "pattern": "^y([2-9]|[1-9][0-9]+)?( domain)?$"
                      },
                      {
                        "enum": [
                          "paper"
                        ]
                      }
                    ],
                    "default": "paper"
                  }
                ]
              }
            },
            "additionalProperties": false
          },
          "minItems": 1
        },
        "legend": {
          "type": "object",
          "properties": {
            "bgcolor": {
              "description": "Sets the legend background color. Defaults to `layout.paper_bgcolor`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "bordercolor": {
              "description": "Sets the color of the border enclosing the legend.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "borderwidth": {
              "description": "Sets the width (in px) of the border enclosing the legend.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "entrywidth": {
              "description": "Sets the width (in px or fraction) of the legend. Use 0 to size the entry based on the text width, when `entrywidthmode` is set to *pixels*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0
                }
              ]
            },
            "entrywidthmode": {
              "description": "Determines what entrywidth means.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "fraction",
                    "pixels"
                  ],
                  "default": "pixels"
                }
              ]
            },
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "family": {
                  "pattern": ".*\\S.*$",
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                "shadow": {
                  "default": "none",
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "groupclick": {
              "description": "Determines the behavior on legend group item click. *toggleitem* toggles the visibility of the individual item clicked on the graph. *togglegroup* toggles the visibility of all items in the same legendgroup as the item clicked on the graph.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "toggleitem",
                    "togglegroup"
                  ],
                  "default": "togglegroup"
                }
              ]
            },
            "grouptitlefont": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "family": {
                  "pattern": ".*\\S.*$",
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                "shadow": {
                  "default": "none",
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "indentation": {
              "description": "Sets the indentation (in px) of the legend entries.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": -15,
                  "default": 0
                }
              ]
            },
            "itemclick": {
              "description": "Determines the behavior on legend item click. *toggle* toggles the visibility of the item clicked on the graph. *toggleothers* makes the clicked item the sole visible item on the graph. *false* disables legend item click interactions.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "toggle",
                    "toggleothers",
                    false
                  ],
                  "default": "toggle"
                }
              ]
            },
            "itemdoubleclick": {
              "description": "Determines the behavior on legend item double-click. *toggle* toggles the visibility of the item clicked on the graph. *toggleothers* makes the clicked item the sole visible item on the graph. *false* disables legend item double-click interactions.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "toggle",
                    "toggleothers",
                    false
                  ],
                  "default": "toggleothers"
                }
              ]
            },
            "itemsizing": {
              "description": "Determines if the legend items symbols scale with their corresponding *trace* attributes or remain *constant* independent of the symbol size on the graph.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "trace",
                    "constant"
                  ],
                  "default": "trace"
                }
              ]
            },
            "itemwidth": {
              "description": "Sets the width (in px) of the legend item symbols (the part other than the title.text).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 30,
                  "default": 30
                }
              ]
            },
            "maxheight": {
              "description": "Sets the max height (in px) of the legend, or max height ratio (reference height * ratio) if less than one. Default value is: 0.5 for horizontal legends; 1 for vertical legends. The minimum allowed height is 30px. For a ratio of 0.5, the legend will take up to 50% of the reference height before displaying a scrollbar. The reference height is the full layout height except for vertically oriented legends with a `yref` of `\"paper\"`, where the reference height is the plot height.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0
                }
              ]
            },
            "orientation": {
              "description": "Sets the orientation of the legend.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "v",
                    "h"
                  ],
                  "default": "v"
                }
              ]
            },
            "title": {
              "type": "object",
              "properties": {
                "font": {
                  "type": "object",
                  "properties": {
                    "color": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    "family": {
                      "pattern": ".*\\S.*$",
                      "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                      "type": "string"
                    },
                    "lineposition": {
                      "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    "shadow": {
                      "default": "none",
                      "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                      "type": "string"
                    },
                    "size": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    "style": {
                      "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "textcase": {
                      "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "variant": {
                      "description": "Sets the variant of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "weight": {
                      "description": "Sets the weight (or boldness) of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    }
                  },
                  "additionalProperties": false
                },
                "side": {
                  "description": "Determines the location of legend's title with respect to the legend items. Defaulted to *top* with `orientation` is *h*. Defaulted to *left* with `orientation` is *v*. The *top left* options could be used to expand top center and top right are for horizontal alignment legend area in both x and y sides.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "top",
                        "left",
                        "top left",
                        "top center",
                        "top right"
                      ]
                    }
                  ]
                },
                "text": {
                  "default": "",
                  "description": "Sets the title of the legend.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "tracegroupgap": {
              "description": "Sets the amount of vertical space (in px) between legend groups.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 10
                }
              ]
            },
            "traceorder": {
              "description": "Determines the order at which the legend items are displayed. If *normal*, the items are displayed top-to-bottom in the same order as the input data. If *reversed*, the items are displayed in the opposite order as *normal*. If *grouped*, the items are displayed in groups (when a trace `legendgroup` is provided). if *grouped+reversed*, the items are displayed in the opposite order as *grouped*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "oneOf": [
                    {
                      "type": "string",
                      "enum": [
                        "normal"
                      ]
                    },
                    {
                      "type": "string",
                      "pattern": "^(reversed|grouped)(\\+(reversed|grouped))*$"
                    }
                  ]
                }
              ]
            },
            "uirevision": {
              "description": "Controls persistence of legend-driven changes in trace and pie label visibility. Defaults to `layout.uirevision`."
            },
            "valign": {
              "description": "Sets the vertical alignment of the symbols with respect to their associated text.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "top",
                    "middle",
                    "bottom"
                  ],
                  "default": "middle"
                }
              ]
            },
            "visible": {
              "description": "Determines whether or not this legend is visible.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": true
                }
              ]
            },
            "x": {
              "description": "Sets the x position with respect to `xref` (in normalized coordinates) of the legend. When `xref` is *paper*, defaults to *1.02* for vertical legends and defaults to *0* for horizontal legends. When `xref` is *container*, defaults to *1* for vertical legends and defaults to *0* for horizontal legends. Must be between *0* and *1* if `xref` is *container*. and between *-2* and *3* if `xref` is *paper*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number"
                }
              ]
            },
            "xanchor": {
              "description": "Sets the legend's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the legend. Value *auto* anchors legends to the right for `x` values greater than or equal to 2/3, anchors legends to the left for `x` values less than or equal to 1/3 and anchors legends with respect to their center otherwise.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "auto",
                    "left",
                    "center",
                    "right"
                  ],
                  "default": "left"
                }
              ]
            },
            "xref": {
              "description": "Sets the container `x` refers to. *container* spans the entire `width` of the plot. *paper* refers to the width of the plotting area only.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "container",
                    "paper"
                  ],
                  "default": "paper"
                }
              ]
            },
            "y": {
              "description": "Sets the y position with respect to `yref` (in normalized coordinates) of the legend. When `yref` is *paper*, defaults to *1* for vertical legends, defaults to *-0.1* for horizontal legends on graphs w/o range sliders and defaults to *1.1* for horizontal legends on graph with one or multiple range sliders. When `yref` is *container*, defaults to *1*. Must be between *0* and *1* if `yref` is *container* and between *-2* and *3* if `yref` is *paper*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number"
                }
              ]
            },
            "yanchor": {
              "description": "Sets the legend's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the legend. Value *auto* anchors legends at their bottom for `y` values less than or equal to 1/3, anchors legends to at their top for `y` values greater than or equal to 2/3 and anchors legends with respect to their middle otherwise.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "auto",
                    "top",
                    "middle",
                    "bottom"
                  ]
                }
              ]
            },
            "yref": {
              "description": "Sets the container `y` refers to. *container* spans the entire `height` of the plot. *paper* refers to the height of the plotting area only.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "container",
                    "paper"
                  ],
                  "default": "paper"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "map": {
          "type": "object",
          "properties": {
            "bearing": {
              "description": "Sets the bearing angle of the map in degrees counter-clockwise from North (map.bearing).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": 0
                }
              ]
            },
            "bounds": {
              "type": "object",
              "properties": {
                "east": {
                  "description": "Sets the maximum longitude of the map (in degrees East) if `west`, `south` and `north` are declared.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number"
                    }
                  ]
                },
                "north": {
                  "description": "Sets the maximum latitude of the map (in degrees North) if `east`, `west` and `south` are declared.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number"
                    }
                  ]
                },
                "south": {
                  "description": "Sets the minimum latitude of the map (in degrees North) if `east`, `west` and `north` are declared.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number"
                    }
                  ]
                },
                "west": {
                  "description": "Sets the minimum longitude of the map (in degrees East) if `east`, `south` and `north` are declared.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "center": {
              "type": "object",
              "properties": {
                "lat": {
                  "description": "Sets the latitude of the center of the map (in degrees North).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "default": 0
                    }
                  ]
                },
                "lon": {
                  "description": "Sets the longitude of the center of the map (in degrees East).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "default": 0
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "domain": {
              "type": "object",
              "properties": {
                "column": {
                  "description": "If there is a layout grid, use the domain for this column in the grid for this map subplot .",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 0,
                      "default": 0
                    }
                  ]
                },
                "row": {
                  "description": "If there is a layout grid, use the domain for this row in the grid for this map subplot .",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 0,
                      "default": 0
                    }
                  ]
                },
                "x": {
                  "description": "Sets the horizontal domain of this map subplot (in plot fraction).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 0,
                            "maximum": 1
                          }
                        ]
                      },
                      "minItems": 2,
                      "maxItems": 2,
                      "default": [
                        0,
                        1
                      ]
                    }
                  ]
                },
                "y": {
                  "description": "Sets the vertical domain of this map subplot (in plot fraction).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 0,
                            "maximum": 1
                          }
                        ]
                      },
                      "minItems": 2,
                      "maxItems": 2,
                      "default": [
                        0,
                        1
                      ]
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "layers": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "below": {
                    "description": "Determines if the layer will be inserted before the layer with the specified ID. If omitted or set to '', the layer will be inserted above every existing layer.",
                    "type": "string"
                  },
                  "circle": {
                    "type": "object",
                    "properties": {
                      "radius": {
                        "description": "Sets the circle radius (map.layer.paint.circle-radius). Has an effect only when `type` is set to *circle*.",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "default": 15
                          }
                        ]
                      }
                    },
                    "additionalProperties": false
                  },
                  "color": {
                    "description": "Sets the primary layer color. If `type` is *circle*, color corresponds to the circle color (map.layer.paint.circle-color) If `type` is *line*, color corresponds to the line color (map.layer.paint.line-color) If `type` is *fill*, color corresponds to the fill color (map.layer.paint.fill-color) If `type` is *symbol*, color corresponds to the icon color (map.layer.paint.icon-color)",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  },
                  "coordinates": {
                    "description": "Sets the coordinates array contains [longitude, latitude] pairs for the image corners listed in clockwise order: top left, top right, bottom right, bottom left. Only has an effect for *image* `sourcetype`."
                  },
                  "fill": {
                    "type": "object",
                    "properties": {
                      "outlinecolor": {
                        "description": "Sets the fill outline color (map.layer.paint.fill-outline-color). Has an effect only when `type` is set to *fill*.",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    },
                    "additionalProperties": false
                  },
                  "line": {
                    "type": "object",
                    "properties": {
                      "dash": {
                        "description": "Sets the length of dashes and gaps (map.layer.paint.line-dasharray). Has an effect only when `type` is set to *line*.",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "array",
                            "items": {
                              "oneOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            }
                          }
                        ]
                      },
                      "dashsrc": {
                        "description": "Sets the source reference on Chart Studio Cloud for `dash`.",
                        "type": "string"
                      },
                      "width": {
                        "description": "Sets the line width (map.layer.paint.line-width). Has an effect only when `type` is set to *line*.",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "default": 2
                          }
                        ]
                      }
                    },
                    "additionalProperties": false
                  },
                  "maxzoom": {
                    "description": "Sets the maximum zoom level (map.layer.maxzoom). At zoom levels equal to or greater than the maxzoom, the layer will be hidden.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 24,
                        "default": 24
                      }
                    ]
                  },
                  "minzoom": {
                    "description": "Sets the minimum zoom level (map.layer.minzoom). At zoom levels less than the minzoom, the layer will be hidden.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 24,
                        "default": 0
                      }
                    ]
                  },
                  "name": {
                    "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.",
                    "type": "string"
                  },
                  "opacity": {
                    "description": "Sets the opacity of the layer. If `type` is *circle*, opacity corresponds to the circle opacity (map.layer.paint.circle-opacity) If `type` is *line*, opacity corresponds to the line opacity (map.layer.paint.line-opacity) If `type` is *fill*, opacity corresponds to the fill opacity (map.layer.paint.fill-opacity) If `type` is *symbol*, opacity corresponds to the icon/text opacity (map.layer.paint.text-opacity)",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 1,
                        "default": 1
                      }
                    ]
                  },
                  "source": {
                    "description": "Sets the source data for this layer (map.layer.source). When `sourcetype` is set to *geojson*, `source` can be a URL to a GeoJSON or a GeoJSON object. When `sourcetype` is set to *vector* or *raster*, `source` can be a URL or an array of tile URLs. When `sourcetype` is set to *image*, `source` can be a URL to an image."
                  },
                  "sourceattribution": {
                    "description": "Sets the attribution for this source.",
                    "type": "string"
                  },
                  "sourcelayer": {
                    "default": "",
                    "description": "Specifies the layer to use from a vector tile source (map.layer.source-layer). Required for *vector* source type that supports multiple layers.",
                    "type": "string"
                  },
                  "sourcetype": {
                    "description": "Sets the source type for this layer, that is the type of the layer data.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "geojson",
                          "vector",
                          "raster",
                          "image"
                        ],
                        "default": "geojson"
                      }
                    ]
                  },
                  "symbol": {
                    "type": "object",
                    "properties": {
                      "icon": {
                        "default": "marker",
                        "description": "Sets the symbol icon image (map.layer.layout.icon-image). Full list: <https://www.map.com/maki-icons/>",
                        "type": "string"
                      },
                      "iconsize": {
                        "description": "Sets the symbol icon size (map.layer.layout.icon-size). Has an effect only when `type` is set to *symbol*.",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "default": 10
                          }
                        ]
                      },
                      "placement": {
                        "description": "Sets the symbol and/or text placement (map.layer.layout.symbol-placement). If `placement` is *point*, the label is placed where the geometry is located If `placement` is *line*, the label is placed along the line of the geometry If `placement` is *line-center*, the label is placed on the center of the geometry",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "point",
                              "line",
                              "line-center"
                            ],
                            "default": "point"
                          }
                        ]
                      },
                      "text": {
                        "default": "",
                        "description": "Sets the symbol text (map.layer.layout.text-field).",
                        "type": "string"
                      },
                      "textfont": {
                        "type": "object",
                        "properties": {
                          "color": {
                            "oneOf": [
                              {
                                "$ref": "#/$defs/query-string"
                              },
                              {
                                "$ref": "#/$defs/color"
                              }
                            ]
                          },
                          "family": {
                            "default": "Open Sans Regular, Arial Unicode MS Regular",
                            "pattern": ".*\\S.*$",
                            "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                            "type": "string"
                          },
                          "size": {
                            "oneOf": [
                              {
                                "$ref": "#/$defs/query-string"
                              },
                              {
                                "type": "number",
                                "minimum": 1
                              }
                            ]
                          },
                          "style": {
                            "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                            "oneOf": [
                              {
                                "$ref": "#/$defs/query-string"
                              },
                              {
                                "enum": [
                                  "normal",
                                  "italic"
                                ],
                                "default": "normal"
                              }
                            ]
                          },
                          "weight": {
                            "description": "Sets the weight (or boldness) of the font.",
                            "oneOf": [
                              {
                                "$ref": "#/$defs/query-string"
                              },
                              {
                                "type": "integer",
                                "minimum": 1,
                                "maximum": 1000,
                                "default": "normal"
                              }
                            ]
                          }
                        },
                        "additionalProperties": false
                      },
                      "textposition": {
                        "description": "Sets the positions of the `text` elements with respects to the (x,y) coordinates.",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "top left",
                              "top center",
                              "top right",
                              "middle left",
                              "middle center",
                              "middle right",
                              "bottom left",
                              "bottom center",
                              "bottom right"
                            ],
                            "default": "middle center"
                          }
                        ]
                      }
                    },
                    "additionalProperties": false
                  },
                  "templateitemname": {
                    "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.",
                    "type": "string"
                  },
                  "type": {
                    "description": "Sets the layer type, that is the how the layer data set in `source` will be rendered With `sourcetype` set to *geojson*, the following values are allowed: *circle*, *line*, *fill* and *symbol*. but note that *line* and *fill* are not compatible with Point GeoJSON geometries. With `sourcetype` set to *vector*, the following values are allowed:  *circle*, *line*, *fill* and *symbol*. With `sourcetype` set to *raster* or `*image*`, only the *raster* value is allowed.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "circle",
                          "line",
                          "fill",
                          "symbol",
                          "raster"
                        ],
                        "default": "circle"
                      }
                    ]
                  },
                  "visible": {
                    "description": "Determines whether this layer is displayed",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "boolean",
                        "default": true
                      }
                    ]
                  }
                },
                "additionalProperties": false
              },
              "minItems": 1
            },
            "pitch": {
              "description": "Sets the pitch angle of the map (in degrees, where *0* means perpendicular to the surface of the map) (map.pitch).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": 0
                }
              ]
            },
            "style": {
              "default": "basic",
              "description": "Defines the map layers that are rendered by default below the trace layers defined in `data`, which are themselves by default rendered below the layers defined in `layout.map.layers`.  These layers can be defined either explicitly as a Map Style object which can contain multiple layer definitions that load data from any public or private Tile Map Service (TMS or XYZ) or Web Map Service (WMS) or implicitly by using one of the built-in style objects which use WMSes or by using a custom style URL  Map Style objects are of the form described in the MapLibre GL JS documentation available at <https://maplibre.org/maplibre-style-spec/>  The built-in plotly.js styles objects are: basic, carto-darkmatter, carto-darkmatter-nolabels, carto-positron, carto-positron-nolabels, carto-voyager, carto-voyager-nolabels, dark, light, open-street-map, outdoors, satellite, satellite-streets, streets, white-bg."
            },
            "uirevision": {
              "description": "Controls persistence of user-driven changes in the view: `center`, `zoom`, `bearing`, `pitch`. Defaults to `layout.uirevision`."
            },
            "zoom": {
              "description": "Sets the zoom level of the map (map.zoom).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": 1
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "mapbox": {
          "type": "object",
          "properties": {
            "accesstoken": {
              "pattern": ".*\\S.*$",
              "description": "Sets the mapbox access token to be used for this mapbox map. Alternatively, the mapbox access token can be set in the configuration options under `mapboxAccessToken`. Note that accessToken are only required when `style` (e.g with values : basic, streets, outdoors, light, dark, satellite, satellite-streets ) and/or a layout layer references the Mapbox server.",
              "type": "string"
            },
            "bearing": {
              "description": "Sets the bearing angle of the map in degrees counter-clockwise from North (mapbox.bearing).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": 0
                }
              ]
            },
            "bounds": {
              "type": "object",
              "properties": {
                "east": {
                  "description": "Sets the maximum longitude of the map (in degrees East) if `west`, `south` and `north` are declared.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number"
                    }
                  ]
                },
                "north": {
                  "description": "Sets the maximum latitude of the map (in degrees North) if `east`, `west` and `south` are declared.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number"
                    }
                  ]
                },
                "south": {
                  "description": "Sets the minimum latitude of the map (in degrees North) if `east`, `west` and `north` are declared.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number"
                    }
                  ]
                },
                "west": {
                  "description": "Sets the minimum longitude of the map (in degrees East) if `east`, `south` and `north` are declared.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "center": {
              "type": "object",
              "properties": {
                "lat": {
                  "description": "Sets the latitude of the center of the map (in degrees North).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "default": 0
                    }
                  ]
                },
                "lon": {
                  "description": "Sets the longitude of the center of the map (in degrees East).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "default": 0
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "domain": {
              "type": "object",
              "properties": {
                "column": {
                  "description": "If there is a layout grid, use the domain for this column in the grid for this mapbox subplot .",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 0,
                      "default": 0
                    }
                  ]
                },
                "row": {
                  "description": "If there is a layout grid, use the domain for this row in the grid for this mapbox subplot .",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 0,
                      "default": 0
                    }
                  ]
                },
                "x": {
                  "description": "Sets the horizontal domain of this mapbox subplot (in plot fraction).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 0,
                            "maximum": 1
                          }
                        ]
                      },
                      "minItems": 2,
                      "maxItems": 2,
                      "default": [
                        0,
                        1
                      ]
                    }
                  ]
                },
                "y": {
                  "description": "Sets the vertical domain of this mapbox subplot (in plot fraction).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 0,
                            "maximum": 1
                          }
                        ]
                      },
                      "minItems": 2,
                      "maxItems": 2,
                      "default": [
                        0,
                        1
                      ]
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "layers": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "below": {
                    "description": "Determines if the layer will be inserted before the layer with the specified ID. If omitted or set to '', the layer will be inserted above every existing layer.",
                    "type": "string"
                  },
                  "circle": {
                    "type": "object",
                    "properties": {
                      "radius": {
                        "description": "Sets the circle radius (mapbox.layer.paint.circle-radius). Has an effect only when `type` is set to *circle*.",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "default": 15
                          }
                        ]
                      }
                    },
                    "additionalProperties": false
                  },
                  "color": {
                    "description": "Sets the primary layer color. If `type` is *circle*, color corresponds to the circle color (mapbox.layer.paint.circle-color) If `type` is *line*, color corresponds to the line color (mapbox.layer.paint.line-color) If `type` is *fill*, color corresponds to the fill color (mapbox.layer.paint.fill-color) If `type` is *symbol*, color corresponds to the icon color (mapbox.layer.paint.icon-color)",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  },
                  "coordinates": {
                    "description": "Sets the coordinates array contains [longitude, latitude] pairs for the image corners listed in clockwise order: top left, top right, bottom right, bottom left. Only has an effect for *image* `sourcetype`."
                  },
                  "fill": {
                    "type": "object",
                    "properties": {
                      "outlinecolor": {
                        "description": "Sets the fill outline color (mapbox.layer.paint.fill-outline-color). Has an effect only when `type` is set to *fill*.",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    },
                    "additionalProperties": false
                  },
                  "line": {
                    "type": "object",
                    "properties": {
                      "dash": {
                        "description": "Sets the length of dashes and gaps (mapbox.layer.paint.line-dasharray). Has an effect only when `type` is set to *line*.",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "array",
                            "items": {
                              "oneOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "string"
                                }
                              ]
                            }
                          }
                        ]
                      },
                      "dashsrc": {
                        "description": "Sets the source reference on Chart Studio Cloud for `dash`.",
                        "type": "string"
                      },
                      "width": {
                        "description": "Sets the line width (mapbox.layer.paint.line-width). Has an effect only when `type` is set to *line*.",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "default": 2
                          }
                        ]
                      }
                    },
                    "additionalProperties": false
                  },
                  "maxzoom": {
                    "description": "Sets the maximum zoom level (mapbox.layer.maxzoom). At zoom levels equal to or greater than the maxzoom, the layer will be hidden.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 24,
                        "default": 24
                      }
                    ]
                  },
                  "minzoom": {
                    "description": "Sets the minimum zoom level (mapbox.layer.minzoom). At zoom levels less than the minzoom, the layer will be hidden.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 24,
                        "default": 0
                      }
                    ]
                  },
                  "name": {
                    "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.",
                    "type": "string"
                  },
                  "opacity": {
                    "description": "Sets the opacity of the layer. If `type` is *circle*, opacity corresponds to the circle opacity (mapbox.layer.paint.circle-opacity) If `type` is *line*, opacity corresponds to the line opacity (mapbox.layer.paint.line-opacity) If `type` is *fill*, opacity corresponds to the fill opacity (mapbox.layer.paint.fill-opacity) If `type` is *symbol*, opacity corresponds to the icon/text opacity (mapbox.layer.paint.text-opacity)",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 1,
                        "default": 1
                      }
                    ]
                  },
                  "source": {
                    "description": "Sets the source data for this layer (mapbox.layer.source). When `sourcetype` is set to *geojson*, `source` can be a URL to a GeoJSON or a GeoJSON object. When `sourcetype` is set to *vector* or *raster*, `source` can be a URL or an array of tile URLs. When `sourcetype` is set to *image*, `source` can be a URL to an image."
                  },
                  "sourceattribution": {
                    "description": "Sets the attribution for this source.",
                    "type": "string"
                  },
                  "sourcelayer": {
                    "default": "",
                    "description": "Specifies the layer to use from a vector tile source (mapbox.layer.source-layer). Required for *vector* source type that supports multiple layers.",
                    "type": "string"
                  },
                  "sourcetype": {
                    "description": "Sets the source type for this layer, that is the type of the layer data.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "geojson",
                          "vector",
                          "raster",
                          "image"
                        ],
                        "default": "geojson"
                      }
                    ]
                  },
                  "symbol": {
                    "type": "object",
                    "properties": {
                      "icon": {
                        "default": "marker",
                        "description": "Sets the symbol icon image (mapbox.layer.layout.icon-image). Full list: <https://www.mapbox.com/maki-icons/>",
                        "type": "string"
                      },
                      "iconsize": {
                        "description": "Sets the symbol icon size (mapbox.layer.layout.icon-size). Has an effect only when `type` is set to *symbol*.",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "default": 10
                          }
                        ]
                      },
                      "placement": {
                        "description": "Sets the symbol and/or text placement (mapbox.layer.layout.symbol-placement). If `placement` is *point*, the label is placed where the geometry is located If `placement` is *line*, the label is placed along the line of the geometry If `placement` is *line-center*, the label is placed on the center of the geometry",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "point",
                              "line",
                              "line-center"
                            ],
                            "default": "point"
                          }
                        ]
                      },
                      "text": {
                        "default": "",
                        "description": "Sets the symbol text (mapbox.layer.layout.text-field).",
                        "type": "string"
                      },
                      "textfont": {
                        "type": "object",
                        "properties": {
                          "color": {
                            "oneOf": [
                              {
                                "$ref": "#/$defs/query-string"
                              },
                              {
                                "$ref": "#/$defs/color"
                              }
                            ]
                          },
                          "family": {
                            "default": "Open Sans Regular, Arial Unicode MS Regular",
                            "pattern": ".*\\S.*$",
                            "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                            "type": "string"
                          },
                          "size": {
                            "oneOf": [
                              {
                                "$ref": "#/$defs/query-string"
                              },
                              {
                                "type": "number",
                                "minimum": 1
                              }
                            ]
                          },
                          "style": {
                            "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                            "oneOf": [
                              {
                                "$ref": "#/$defs/query-string"
                              },
                              {
                                "enum": [
                                  "normal",
                                  "italic"
                                ],
                                "default": "normal"
                              }
                            ]
                          },
                          "weight": {
                            "description": "Sets the weight (or boldness) of the font.",
                            "oneOf": [
                              {
                                "$ref": "#/$defs/query-string"
                              },
                              {
                                "type": "integer",
                                "minimum": 1,
                                "maximum": 1000,
                                "default": "normal"
                              }
                            ]
                          }
                        },
                        "additionalProperties": false
                      },
                      "textposition": {
                        "description": "Sets the positions of the `text` elements with respects to the (x,y) coordinates.",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "top left",
                              "top center",
                              "top right",
                              "middle left",
                              "middle center",
                              "middle right",
                              "bottom left",
                              "bottom center",
                              "bottom right"
                            ],
                            "default": "middle center"
                          }
                        ]
                      }
                    },
                    "additionalProperties": false
                  },
                  "templateitemname": {
                    "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.",
                    "type": "string"
                  },
                  "type": {
                    "description": "Sets the layer type, that is the how the layer data set in `source` will be rendered With `sourcetype` set to *geojson*, the following values are allowed: *circle*, *line*, *fill* and *symbol*. but note that *line* and *fill* are not compatible with Point GeoJSON geometries. With `sourcetype` set to *vector*, the following values are allowed:  *circle*, *line*, *fill* and *symbol*. With `sourcetype` set to *raster* or `*image*`, only the *raster* value is allowed.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "circle",
                          "line",
                          "fill",
                          "symbol",
                          "raster"
                        ],
                        "default": "circle"
                      }
                    ]
                  },
                  "visible": {
                    "description": "Determines whether this layer is displayed",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "boolean",
                        "default": true
                      }
                    ]
                  }
                },
                "additionalProperties": false
              },
              "minItems": 1
            },
            "pitch": {
              "description": "Sets the pitch angle of the map (in degrees, where *0* means perpendicular to the surface of the map) (mapbox.pitch).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": 0
                }
              ]
            },
            "style": {
              "default": "basic",
              "description": "Defines the map layers that are rendered by default below the trace layers defined in `data`, which are themselves by default rendered below the layers defined in `layout.mapbox.layers`.  These layers can be defined either explicitly as a Mapbox Style object which can contain multiple layer definitions that load data from any public or private Tile Map Service (TMS or XYZ) or Web Map Service (WMS) or implicitly by using one of the built-in style objects which use WMSes which do not require any access tokens, or by using a default Mapbox style or custom Mapbox style URL, both of which require a Mapbox access token  Note that Mapbox access token can be set in the `accesstoken` attribute or in the `mapboxAccessToken` config option.  Mapbox Style objects are of the form described in the Mapbox GL JS documentation available at <https://docs.mapbox.com/mapbox-gl-js/style-spec>  The built-in plotly.js styles objects are: carto-darkmatter, carto-positron, open-street-map, stamen-terrain, stamen-toner, stamen-watercolor, white-bg  The built-in Mapbox styles are: basic, streets, outdoors, light, dark, satellite, satellite-streets  Mapbox style URLs are of the form: mapbox://mapbox.mapbox-<name>-<version>"
            },
            "uirevision": {
              "description": "Controls persistence of user-driven changes in the view: `center`, `zoom`, `bearing`, `pitch`. Defaults to `layout.uirevision`."
            },
            "zoom": {
              "description": "Sets the zoom level of the map (mapbox.zoom).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": 1
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "margin": {
          "type": "object",
          "properties": {
            "autoexpand": {
              "description": "Turns on/off margin expansion computations. Legends, colorbars, updatemenus, sliders, axis rangeselector and rangeslider are allowed to push the margins by defaults.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": true
                }
              ]
            },
            "b": {
              "description": "Sets the bottom margin (in px).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 80
                }
              ]
            },
            "l": {
              "description": "Sets the left margin (in px).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 80
                }
              ]
            },
            "pad": {
              "description": "Sets the amount of padding (in px) between the plotting area and the axis lines",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "r": {
              "description": "Sets the right margin (in px).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 80
                }
              ]
            },
            "t": {
              "description": "Sets the top margin (in px).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 100
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "metasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `meta`.",
          "type": "string"
        },
        "minreducedheight": {
          "description": "Minimum height of the plot with margin.automargin applied (in px)",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 2,
              "default": 64
            }
          ]
        },
        "minreducedwidth": {
          "description": "Minimum width of the plot with margin.automargin applied (in px)",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 2,
              "default": 64
            }
          ]
        },
        "modebar": {
          "type": "object",
          "properties": {
            "activecolor": {
              "description": "Sets the color of the active or hovered on icons in the modebar.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "add": {
              "description": "Determines which predefined modebar buttons to add. Please note that these buttons will only be shown if they are compatible with all trace types used in a graph. Similar to `config.modeBarButtonsToAdd` option. This may include *v1hovermode*, *hoverclosest*, *hovercompare*, *togglehover*, *togglespikelines*, *drawline*, *drawopenpath*, *drawclosedpath*, *drawcircle*, *drawrect*, *eraseshape*.",
              "oneOf": [
                {
                  "default": "",
                  "type": "string"
                },
                {
                  "type": "array",
                  "items": {
                    "default": "",
                    "type": "string"
                  }
                }
              ]
            },
            "addsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `add`.",
              "type": "string"
            },
            "bgcolor": {
              "description": "Sets the background color of the modebar.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "color": {
              "description": "Sets the color of the icons in the modebar.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "orientation": {
              "description": "Sets the orientation of the modebar.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "v",
                    "h"
                  ],
                  "default": "h"
                }
              ]
            },
            "remove": {
              "description": "Determines which predefined modebar buttons to remove. Similar to `config.modeBarButtonsToRemove` option. This may include *autoScale2d*, *autoscale*, *editInChartStudio*, *editinchartstudio*, *hoverCompareCartesian*, *hovercompare*, *lasso*, *lasso2d*, *orbitRotation*, *orbitrotation*, *pan*, *pan2d*, *pan3d*, *reset*, *resetCameraDefault3d*, *resetCameraLastSave3d*, *resetGeo*, *resetSankeyGroup*, *resetScale2d*, *resetViewMap*, *resetViewMapbox*, *resetViews*, *resetcameradefault*, *resetcameralastsave*, *resetsankeygroup*, *resetscale*, *resetview*, *resetviews*, *select*, *select2d*, *sendDataToCloud*, *senddatatocloud*, *tableRotation*, *tablerotation*, *toImage*, *toggleHover*, *toggleSpikelines*, *togglehover*, *togglespikelines*, *toimage*, *zoom*, *zoom2d*, *zoom3d*, *zoomIn2d*, *zoomInGeo*, *zoomInMap*, *zoomInMapbox*, *zoomOut2d*, *zoomOutGeo*, *zoomOutMap*, *zoomOutMapbox*, *zoomin*, *zoomout*.",
              "oneOf": [
                {
                  "default": "",
                  "type": "string"
                },
                {
                  "type": "array",
                  "items": {
                    "default": "",
                    "type": "string"
                  }
                }
              ]
            },
            "removesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `remove`.",
              "type": "string"
            },
            "uirevision": {
              "description": "Controls persistence of user-driven changes related to the modebar, including `hovermode`, `dragmode`, and `showspikes` at both the root level and inside subplots. Defaults to `layout.uirevision`."
            }
          },
          "additionalProperties": false
        },
        "newselection": {
          "type": "object",
          "properties": {
            "line": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the line color. By default uses either dark grey or white to increase contrast with background color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "dash": {
                  "default": "dot",
                  "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).",
                  "type": "string"
                },
                "width": {
                  "description": "Sets the line width (in px).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1,
                      "default": 1
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "mode": {
              "description": "Describes how a new selection is created. If `immediate`, a new selection is created after first mouse up. If `gradual`, a new selection is not created after first mouse. By adding to and subtracting from the initial selection, this option allows declaring extra outlines of the selection.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "immediate",
                    "gradual"
                  ],
                  "default": "immediate"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "newshape": {
          "type": "object",
          "properties": {
            "drawdirection": {
              "description": "When `dragmode` is set to *drawrect*, *drawline* or *drawcircle* this limits the drag to be horizontal, vertical or diagonal. Using *diagonal* there is no limit e.g. in drawing lines in any direction. *ortho* limits the draw to be either horizontal or vertical. *horizontal* allows horizontal extend. *vertical* allows vertical extend.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "ortho",
                    "horizontal",
                    "vertical",
                    "diagonal"
                  ],
                  "default": "diagonal"
                }
              ]
            },
            "fillcolor": {
              "description": "Sets the color filling new shapes' interior. Please note that if using a fillcolor with alpha greater than half, drag inside the active shape starts moving the shape underneath, otherwise a new shape could be started over.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "fillrule": {
              "description": "Determines the path's interior. For more info please visit <https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/fill-rule>",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "evenodd",
                    "nonzero"
                  ],
                  "default": "evenodd"
                }
              ]
            },
            "label": {
              "type": "object",
              "properties": {
                "font": {
                  "type": "object",
                  "properties": {
                    "color": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    "family": {
                      "pattern": ".*\\S.*$",
                      "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                      "type": "string"
                    },
                    "lineposition": {
                      "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    "shadow": {
                      "default": "none",
                      "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                      "type": "string"
                    },
                    "size": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    "style": {
                      "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "textcase": {
                      "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "variant": {
                      "description": "Sets the variant of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "weight": {
                      "description": "Sets the weight (or boldness) of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    }
                  },
                  "additionalProperties": false
                },
                "padding": {
                  "description": "Sets padding (in px) between edge of label and edge of new shape.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 3
                    }
                  ]
                },
                "text": {
                  "default": "",
                  "description": "Sets the text to display with the new shape. It is also used for legend item if `name` is not provided.",
                  "type": "string"
                },
                "textangle": {
                  "description": "Sets the angle at which the label text is drawn with respect to the horizontal. For lines, angle *auto* is the same angle as the line. For all other shapes, angle *auto* is horizontal.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": -180,
                      "maximum": 180,
                      "default": "auto"
                    }
                  ]
                },
                "textposition": {
                  "description": "Sets the position of the label text relative to the new shape. Supported values for rectangles, circles and paths are *top left*, *top center*, *top right*, *middle left*, *middle center*, *middle right*, *bottom left*, *bottom center*, and *bottom right*. Supported values for lines are *start*, *middle*, and *end*. Default: *middle center* for rectangles, circles, and paths; *middle* for lines.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "top left",
                        "top center",
                        "top right",
                        "middle left",
                        "middle center",
                        "middle right",
                        "bottom left",
                        "bottom center",
                        "bottom right",
                        "start",
                        "middle",
                        "end"
                      ]
                    }
                  ]
                },
                "texttemplate": {
                  "default": "",
                  "description": "Template string used for rendering the new shape's label. Note that this will override `text`. Variables are inserted using %{variable}, for example \"x0: %{x0}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{x0:$.2f}\". See <https://github.com/d3/d3-format/tree/v1.4.5#d3-format> for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{x0|%m %b %Y}\". See <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format> for details on the date formatting syntax. A single multiplication or division operation may be applied to numeric variables, and combined with d3 number formatting, for example \"Length in cm: %{x0*2.54}\", \"%{slope*60:.1f} meters per second.\" For log axes, variable values are given in log units. For date axes, x/y coordinate variables and center variables use datetimes, while all other variable values use values in ms. Finally, the template string has access to variables `x0`, `x1`, `y0`, `y1`, `slope`, `dx`, `dy`, `width`, `height`, `length`, `xcenter` and `ycenter`.",
                  "type": "string"
                },
                "xanchor": {
                  "description": "Sets the label's horizontal position anchor This anchor binds the specified `textposition` to the *left*, *center* or *right* of the label text. For example, if `textposition` is set to *top right* and `xanchor` to *right* then the right-most portion of the label text lines up with the right-most edge of the new shape.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "auto",
                        "left",
                        "center",
                        "right"
                      ],
                      "default": "auto"
                    }
                  ]
                },
                "yanchor": {
                  "description": "Sets the label's vertical position anchor This anchor binds the specified `textposition` to the *top*, *middle* or *bottom* of the label text. For example, if `textposition` is set to *top right* and `yanchor` to *top* then the top-most portion of the label text lines up with the top-most edge of the new shape.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "top",
                        "middle",
                        "bottom"
                      ]
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "layer": {
              "description": "Specifies whether new shapes are drawn below gridlines (*below*), between gridlines and traces (*between*) or above traces (*above*).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "below",
                    "above",
                    "between"
                  ],
                  "default": "above"
                }
              ]
            },
            "legend": {
              "description": "Sets the reference to a legend to show new shape in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "string",
                  "default": "legend",
                  "pattern": "^legend([2-9]|[1-9][0-9]+)?$"
                }
              ]
            },
            "legendgroup": {
              "default": "",
              "description": "Sets the legend group for new shape. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items.",
              "type": "string"
            },
            "legendgrouptitle": {
              "type": "object",
              "properties": {
                "font": {
                  "type": "object",
                  "properties": {
                    "color": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    "family": {
                      "pattern": ".*\\S.*$",
                      "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                      "type": "string"
                    },
                    "lineposition": {
                      "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    "shadow": {
                      "default": "none",
                      "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                      "type": "string"
                    },
                    "size": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    "style": {
                      "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "textcase": {
                      "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "variant": {
                      "description": "Sets the variant of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "weight": {
                      "description": "Sets the weight (or boldness) of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    }
                  },
                  "additionalProperties": false
                },
                "text": {
                  "default": "",
                  "description": "Sets the title of the legend group.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "legendrank": {
              "description": "Sets the legend rank for new shape. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": 1000
                }
              ]
            },
            "legendwidth": {
              "description": "Sets the width (in px or fraction) of the legend for new shape.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0
                }
              ]
            },
            "line": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the line color. By default uses either dark grey or white to increase contrast with background color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "dash": {
                  "default": "solid",
                  "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).",
                  "type": "string"
                },
                "width": {
                  "description": "Sets the line width (in px).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 4
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "name": {
              "description": "Sets new shape name. The name appears as the legend item.",
              "type": "string"
            },
            "opacity": {
              "description": "Sets the opacity of new shapes.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 1,
                  "default": 1
                }
              ]
            },
            "showlegend": {
              "description": "Determines whether or not new shape is shown in the legend.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            },
            "visible": {
              "description": "Determines whether or not new shape is visible. If *legendonly*, the shape is not drawn, but can appear as a legend item (provided that the legend itself is visible).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    true,
                    false,
                    "legendonly"
                  ],
                  "default": true
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "paper_bgcolor": {
          "description": "Sets the background color of the paper where the graph is drawn.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "$ref": "#/$defs/color"
            }
          ]
        },
        "plot_bgcolor": {
          "description": "Sets the background color of the plotting area in-between x and y axes.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "$ref": "#/$defs/color"
            }
          ]
        },
        "polar": {
          "type": "object",
          "properties": {
            "angularaxis": {
              "type": "object",
              "properties": {
                "autotypenumbers": {
                  "description": "Using *strict* a numeric string in trace data is not converted to a number. Using *convert types* a numeric string in trace data may be treated as a number during automatic axis `type` detection. Defaults to layout.autotypenumbers.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "convert types",
                        "strict"
                      ],
                      "default": "convert types"
                    }
                  ]
                },
                "categoryarray": {
                  "description": "Sets the order in which categories on this axis appear. Only has an effect if `categoryorder` is set to *array*. Used with `categoryorder`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "string"
                          }
                        ]
                      }
                    }
                  ]
                },
                "categoryarraysrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `categoryarray`.",
                  "type": "string"
                },
                "categoryorder": {
                  "description": "Specifies the ordering logic for the case of categorical variables. By default, plotly uses *trace*, which specifies the order that is present in the data supplied. Set `categoryorder` to *category ascending* or *category descending* if order should be determined by the alphanumerical order of the category names. Set `categoryorder` to *array* to derive the ordering from the attribute `categoryarray`. If a category is not found in the `categoryarray` array, the sorting behavior for that attribute will be identical to the *trace* mode. The unspecified categories will follow the categories in `categoryarray`. Set `categoryorder` to *total ascending* or *total descending* if order should be determined by the numerical order of the values. Similarly, the order can be determined by the min, max, sum, mean, geometric mean or median of all the values.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "trace",
                        "category ascending",
                        "category descending",
                        "array",
                        "total ascending",
                        "total descending",
                        "min ascending",
                        "min descending",
                        "max ascending",
                        "max descending",
                        "sum ascending",
                        "sum descending",
                        "mean ascending",
                        "mean descending",
                        "geometric mean ascending",
                        "geometric mean descending",
                        "median ascending",
                        "median descending"
                      ],
                      "default": "trace"
                    }
                  ]
                },
                "color": {
                  "description": "Sets default for all colors associated with this axis all at once: line, font, tick, and grid colors. Grid color is lightened by blending this with the plot background Individual pieces can override this.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "direction": {
                  "description": "Sets the direction corresponding to positive angles.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "counterclockwise",
                        "clockwise"
                      ],
                      "default": "counterclockwise"
                    }
                  ]
                },
                "dtick": {
                  "description": "Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L<f>*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M<n>* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48*"
                },
                "exponentformat": {
                  "description": "Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "none",
                        "e",
                        "E",
                        "power",
                        "SI",
                        "B"
                      ],
                      "default": "B"
                    }
                  ]
                },
                "gridcolor": {
                  "description": "Sets the color of the grid lines.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "griddash": {
                  "default": "solid",
                  "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).",
                  "type": "string"
                },
                "gridwidth": {
                  "description": "Sets the width (in px) of the grid lines.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "hoverformat": {
                  "default": "",
                  "description": "Sets the hover text formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*",
                  "type": "string"
                },
                "labelalias": {
                  "default": false,
                  "description": "Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax."
                },
                "layer": {
                  "description": "Sets the layer on which this axis is displayed. If *above traces*, this axis is displayed above all the subplot's traces If *below traces*, this axis is displayed below all the subplot's traces, but above the grid lines. Useful when used together with scatter-like traces with `cliponaxis` set to *false* to show markers and/or text nodes above this axis.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "above traces",
                        "below traces"
                      ],
                      "default": "above traces"
                    }
                  ]
                },
                "linecolor": {
                  "description": "Sets the axis line color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "linewidth": {
                  "description": "Sets the width (in px) of the axis line.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "minexponent": {
                  "description": "Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 3
                    }
                  ]
                },
                "nticks": {
                  "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 0,
                      "default": 0
                    }
                  ]
                },
                "period": {
                  "description": "Set the angular period. Has an effect only when `angularaxis.type` is *category*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0
                    }
                  ]
                },
                "rotation": {
                  "description": "Sets that start position (in degrees) of the angular axis By default, polar subplots with `direction` set to *counterclockwise* get a `rotation` of *0* which corresponds to due East (like what mathematicians prefer). In turn, polar with `direction` set to *clockwise* get a rotation of *90* which corresponds to due North (like on a compass),",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": -180,
                      "maximum": 180
                    }
                  ]
                },
                "separatethousands": {
                  "description": "If \"true\", even 4-digit integers are separated",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": false
                    }
                  ]
                },
                "showexponent": {
                  "description": "If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "showgrid": {
                  "description": "Determines whether or not grid lines are drawn. If *true*, the grid lines are drawn at every tick mark.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                },
                "showline": {
                  "description": "Determines whether or not a line bounding this axis is drawn.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                },
                "showticklabels": {
                  "description": "Determines whether or not the tick labels are drawn.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                },
                "showtickprefix": {
                  "description": "If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "showticksuffix": {
                  "description": "Same as `showtickprefix` but for tick suffixes.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "thetaunit": {
                  "description": "Sets the format unit of the formatted *theta* values. Has an effect only when `angularaxis.type` is *linear*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "radians",
                        "degrees"
                      ],
                      "default": "degrees"
                    }
                  ]
                },
                "tick0": {
                  "description": "Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L<f>* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears."
                },
                "tickangle": {
                  "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": -180,
                      "maximum": 180,
                      "default": "auto"
                    }
                  ]
                },
                "tickcolor": {
                  "description": "Sets the tick color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "tickfont": {
                  "type": "object",
                  "properties": {
                    "color": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    "family": {
                      "pattern": ".*\\S.*$",
                      "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                      "type": "string"
                    },
                    "lineposition": {
                      "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    "shadow": {
                      "default": "none",
                      "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                      "type": "string"
                    },
                    "size": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    "style": {
                      "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "textcase": {
                      "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "variant": {
                      "description": "Sets the variant of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "weight": {
                      "description": "Sets the weight (or boldness) of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    }
                  },
                  "additionalProperties": false
                },
                "tickformat": {
                  "default": "",
                  "description": "Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*",
                  "type": "string"
                },
                "tickformatstops": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "dtickrange": {
                        "description": "range [*min*, *max*], where *min*, *max* - dtick values which describe some zoom level, it is possible to omit *min* or *max* value by passing *null*",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "array",
                            "items": {},
                            "minItems": 2,
                            "maxItems": 2
                          }
                        ]
                      },
                      "enabled": {
                        "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "boolean",
                            "default": true
                          }
                        ]
                      },
                      "name": {
                        "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.",
                        "type": "string"
                      },
                      "templateitemname": {
                        "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.",
                        "type": "string"
                      },
                      "value": {
                        "default": "",
                        "description": "string - dtickformat for described zoom level, the same as *tickformat*",
                        "type": "string"
                      }
                    },
                    "additionalProperties": false
                  },
                  "minItems": 1
                },
                "ticklabelstep": {
                  "description": "Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "default": 1
                    }
                  ]
                },
                "ticklen": {
                  "description": "Sets the tick length (in px).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 5
                    }
                  ]
                },
                "tickmode": {
                  "description": "Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "auto",
                        "linear",
                        "array"
                      ]
                    }
                  ]
                },
                "tickprefix": {
                  "default": "",
                  "description": "Sets a tick label prefix.",
                  "type": "string"
                },
                "ticks": {
                  "description": "Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "outside",
                        "inside",
                        ""
                      ]
                    }
                  ]
                },
                "ticksuffix": {
                  "default": "",
                  "description": "Sets a tick label suffix.",
                  "type": "string"
                },
                "ticktext": {
                  "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "string"
                          }
                        ]
                      }
                    }
                  ]
                },
                "ticktextsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.",
                  "type": "string"
                },
                "tickvals": {
                  "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "string"
                          }
                        ]
                      }
                    }
                  ]
                },
                "tickvalssrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.",
                  "type": "string"
                },
                "tickwidth": {
                  "description": "Sets the tick width (in px).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "type": {
                  "description": "Sets the angular axis type. If *linear*, set `thetaunit` to determine the unit in which axis value are shown. If *category, use `period` to set the number of integer coordinates around polar axis.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "-",
                        "linear",
                        "category"
                      ],
                      "default": "-"
                    }
                  ]
                },
                "uirevision": {
                  "description": "Controls persistence of user-driven changes in axis `rotation`. Defaults to `polar<N>.uirevision`."
                },
                "visible": {
                  "description": "A single toggle to hide the axis while preserving interaction like dragging. Default is true when a cheater plot is present on the axis, otherwise false",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "bgcolor": {
              "description": "Set the background color of the subplot",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "domain": {
              "type": "object",
              "properties": {
                "column": {
                  "description": "If there is a layout grid, use the domain for this column in the grid for this polar subplot .",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 0,
                      "default": 0
                    }
                  ]
                },
                "row": {
                  "description": "If there is a layout grid, use the domain for this row in the grid for this polar subplot .",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 0,
                      "default": 0
                    }
                  ]
                },
                "x": {
                  "description": "Sets the horizontal domain of this polar subplot (in plot fraction).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 0,
                            "maximum": 1
                          }
                        ]
                      },
                      "minItems": 2,
                      "maxItems": 2,
                      "default": [
                        0,
                        1
                      ]
                    }
                  ]
                },
                "y": {
                  "description": "Sets the vertical domain of this polar subplot (in plot fraction).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 0,
                            "maximum": 1
                          }
                        ]
                      },
                      "minItems": 2,
                      "maxItems": 2,
                      "default": [
                        0,
                        1
                      ]
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "gridshape": {
              "description": "Determines if the radial axis grid lines and angular axis line are drawn as *circular* sectors or as *linear* (polygon) sectors. Has an effect only when the angular axis has `type` *category*. Note that `radialaxis.angle` is snapped to the angle of the closest vertex when `gridshape` is *circular* (so that radial axis scale is the same as the data scale).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "circular",
                    "linear"
                  ],
                  "default": "circular"
                }
              ]
            },
            "hole": {
              "description": "Sets the fraction of the radius to cut out of the polar subplot.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 1,
                  "default": 0
                }
              ]
            },
            "radialaxis": {
              "type": "object",
              "properties": {
                "angle": {
                  "description": "Sets the angle (in degrees) from which the radial axis is drawn. Note that by default, radial axis line on the theta=0 line corresponds to a line pointing right (like what mathematicians prefer). Defaults to the first `polar.sector` angle.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": -180,
                      "maximum": 180
                    }
                  ]
                },
                "autorange": {
                  "description": "Determines whether or not the range of this axis is computed in relation to the input data. See `rangemode` for more info. If `range` is provided and it has a value for both the lower and upper bound, `autorange` is set to *false*. Using *min* applies autorange only to set the minimum. Using *max* applies autorange only to set the maximum. Using *min reversed* applies autorange only to set the minimum on a reversed axis. Using *max reversed* applies autorange only to set the maximum on a reversed axis. Using *reversed* applies autorange on both ends and reverses the axis direction.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        true,
                        false,
                        "reversed",
                        "min reversed",
                        "max reversed",
                        "min",
                        "max"
                      ],
                      "default": true
                    }
                  ]
                },
                "autorangeoptions": {
                  "type": "object",
                  "properties": {
                    "clipmax": {
                      "description": "Clip autorange maximum if it goes beyond this value. Has no effect when `autorangeoptions.maxallowed` is provided."
                    },
                    "clipmin": {
                      "description": "Clip autorange minimum if it goes beyond this value. Has no effect when `autorangeoptions.minallowed` is provided."
                    },
                    "include": {
                      "description": "Ensure this value is included in autorange.",
                      "oneOf": [
                        {},
                        {
                          "type": "array",
                          "items": {}
                        }
                      ]
                    },
                    "includesrc": {
                      "description": "Sets the source reference on Chart Studio Cloud for `include`.",
                      "type": "string"
                    },
                    "maxallowed": {
                      "description": "Use this value exactly as autorange maximum."
                    },
                    "minallowed": {
                      "description": "Use this value exactly as autorange minimum."
                    }
                  },
                  "additionalProperties": false
                },
                "autotickangles": {
                  "description": "When `tickangle` is set to *auto*, it will be set to the first angle in this array that is large enough to prevent label overlap.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": -180,
                            "maximum": 180
                          }
                        ]
                      },
                      "minItems": 1,
                      "default": [
                        0,
                        30,
                        90
                      ]
                    }
                  ]
                },
                "autotypenumbers": {
                  "description": "Using *strict* a numeric string in trace data is not converted to a number. Using *convert types* a numeric string in trace data may be treated as a number during automatic axis `type` detection. Defaults to layout.autotypenumbers.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "convert types",
                        "strict"
                      ],
                      "default": "convert types"
                    }
                  ]
                },
                "calendar": {
                  "description": "Sets the calendar system to use for `range` and `tick0` if this is a date axis. This does not set the calendar for interpreting data on this axis, that's specified in the trace or via the global `layout.calendar`",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "chinese",
                        "coptic",
                        "discworld",
                        "ethiopian",
                        "gregorian",
                        "hebrew",
                        "islamic",
                        "jalali",
                        "julian",
                        "mayan",
                        "nanakshahi",
                        "nepali",
                        "persian",
                        "taiwan",
                        "thai",
                        "ummalqura"
                      ],
                      "default": "gregorian"
                    }
                  ]
                },
                "categoryarray": {
                  "description": "Sets the order in which categories on this axis appear. Only has an effect if `categoryorder` is set to *array*. Used with `categoryorder`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "string"
                          }
                        ]
                      }
                    }
                  ]
                },
                "categoryarraysrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `categoryarray`.",
                  "type": "string"
                },
                "categoryorder": {
                  "description": "Specifies the ordering logic for the case of categorical variables. By default, plotly uses *trace*, which specifies the order that is present in the data supplied. Set `categoryorder` to *category ascending* or *category descending* if order should be determined by the alphanumerical order of the category names. Set `categoryorder` to *array* to derive the ordering from the attribute `categoryarray`. If a category is not found in the `categoryarray` array, the sorting behavior for that attribute will be identical to the *trace* mode. The unspecified categories will follow the categories in `categoryarray`. Set `categoryorder` to *total ascending* or *total descending* if order should be determined by the numerical order of the values. Similarly, the order can be determined by the min, max, sum, mean, geometric mean or median of all the values.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "trace",
                        "category ascending",
                        "category descending",
                        "array",
                        "total ascending",
                        "total descending",
                        "min ascending",
                        "min descending",
                        "max ascending",
                        "max descending",
                        "sum ascending",
                        "sum descending",
                        "mean ascending",
                        "mean descending",
                        "geometric mean ascending",
                        "geometric mean descending",
                        "median ascending",
                        "median descending"
                      ],
                      "default": "trace"
                    }
                  ]
                },
                "color": {
                  "description": "Sets default for all colors associated with this axis all at once: line, font, tick, and grid colors. Grid color is lightened by blending this with the plot background Individual pieces can override this.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "dtick": {
                  "description": "Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L<f>*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M<n>* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48*"
                },
                "exponentformat": {
                  "description": "Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "none",
                        "e",
                        "E",
                        "power",
                        "SI",
                        "B"
                      ],
                      "default": "B"
                    }
                  ]
                },
                "gridcolor": {
                  "description": "Sets the color of the grid lines.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "griddash": {
                  "default": "solid",
                  "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).",
                  "type": "string"
                },
                "gridwidth": {
                  "description": "Sets the width (in px) of the grid lines.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "hoverformat": {
                  "default": "",
                  "description": "Sets the hover text formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*",
                  "type": "string"
                },
                "labelalias": {
                  "default": false,
                  "description": "Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax."
                },
                "layer": {
                  "description": "Sets the layer on which this axis is displayed. If *above traces*, this axis is displayed above all the subplot's traces If *below traces*, this axis is displayed below all the subplot's traces, but above the grid lines. Useful when used together with scatter-like traces with `cliponaxis` set to *false* to show markers and/or text nodes above this axis.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "above traces",
                        "below traces"
                      ],
                      "default": "above traces"
                    }
                  ]
                },
                "linecolor": {
                  "description": "Sets the axis line color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "linewidth": {
                  "description": "Sets the width (in px) of the axis line.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "maxallowed": {
                  "description": "Determines the maximum range of this axis."
                },
                "minallowed": {
                  "description": "Determines the minimum range of this axis."
                },
                "minexponent": {
                  "description": "Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 3
                    }
                  ]
                },
                "nticks": {
                  "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 0,
                      "default": 0
                    }
                  ]
                },
                "range": {
                  "description": "Sets the range of this axis. If the axis `type` is *log*, then you must take the log of your desired range (e.g. to set the range from 1 to 100, set the range from 0 to 2). If the axis `type` is *date*, it should be date strings, like date data, though Date objects and unix milliseconds will be accepted and converted to strings. If the axis `type` is *category*, it should be numbers, using the scale where each category is assigned a serial number from zero in the order it appears. Leaving either or both elements `null` impacts the default `autorange`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {},
                      "minItems": 2,
                      "maxItems": 2
                    }
                  ]
                },
                "rangemode": {
                  "description": "If *tozero*`, the range extends to 0, regardless of the input data If *nonnegative*, the range is non-negative, regardless of the input data. If *normal*, the range is computed in relation to the extrema of the input data (same behavior as for cartesian axes).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "tozero",
                        "nonnegative",
                        "normal"
                      ],
                      "default": "tozero"
                    }
                  ]
                },
                "separatethousands": {
                  "description": "If \"true\", even 4-digit integers are separated",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": false
                    }
                  ]
                },
                "showexponent": {
                  "description": "If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "showgrid": {
                  "description": "Determines whether or not grid lines are drawn. If *true*, the grid lines are drawn at every tick mark.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                },
                "showline": {
                  "description": "Determines whether or not a line bounding this axis is drawn.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                },
                "showticklabels": {
                  "description": "Determines whether or not the tick labels are drawn.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                },
                "showtickprefix": {
                  "description": "If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "showticksuffix": {
                  "description": "Same as `showtickprefix` but for tick suffixes.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "side": {
                  "description": "Determines on which side of radial axis line the tick and tick labels appear.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "clockwise",
                        "counterclockwise"
                      ],
                      "default": "clockwise"
                    }
                  ]
                },
                "tick0": {
                  "description": "Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L<f>* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears."
                },
                "tickangle": {
                  "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": -180,
                      "maximum": 180,
                      "default": "auto"
                    }
                  ]
                },
                "tickcolor": {
                  "description": "Sets the tick color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "tickfont": {
                  "type": "object",
                  "properties": {
                    "color": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    "family": {
                      "pattern": ".*\\S.*$",
                      "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                      "type": "string"
                    },
                    "lineposition": {
                      "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    "shadow": {
                      "default": "none",
                      "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                      "type": "string"
                    },
                    "size": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    "style": {
                      "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "textcase": {
                      "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "variant": {
                      "description": "Sets the variant of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "weight": {
                      "description": "Sets the weight (or boldness) of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    }
                  },
                  "additionalProperties": false
                },
                "tickformat": {
                  "default": "",
                  "description": "Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*",
                  "type": "string"
                },
                "tickformatstops": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "dtickrange": {
                        "description": "range [*min*, *max*], where *min*, *max* - dtick values which describe some zoom level, it is possible to omit *min* or *max* value by passing *null*",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "array",
                            "items": {},
                            "minItems": 2,
                            "maxItems": 2
                          }
                        ]
                      },
                      "enabled": {
                        "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "boolean",
                            "default": true
                          }
                        ]
                      },
                      "name": {
                        "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.",
                        "type": "string"
                      },
                      "templateitemname": {
                        "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.",
                        "type": "string"
                      },
                      "value": {
                        "default": "",
                        "description": "string - dtickformat for described zoom level, the same as *tickformat*",
                        "type": "string"
                      }
                    },
                    "additionalProperties": false
                  },
                  "minItems": 1
                },
                "ticklabelstep": {
                  "description": "Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "default": 1
                    }
                  ]
                },
                "ticklen": {
                  "description": "Sets the tick length (in px).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 5
                    }
                  ]
                },
                "tickmode": {
                  "description": "Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "auto",
                        "linear",
                        "array"
                      ]
                    }
                  ]
                },
                "tickprefix": {
                  "default": "",
                  "description": "Sets a tick label prefix.",
                  "type": "string"
                },
                "ticks": {
                  "description": "Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "outside",
                        "inside",
                        ""
                      ]
                    }
                  ]
                },
                "ticksuffix": {
                  "default": "",
                  "description": "Sets a tick label suffix.",
                  "type": "string"
                },
                "ticktext": {
                  "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "string"
                          }
                        ]
                      }
                    }
                  ]
                },
                "ticktextsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.",
                  "type": "string"
                },
                "tickvals": {
                  "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "string"
                          }
                        ]
                      }
                    }
                  ]
                },
                "tickvalssrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.",
                  "type": "string"
                },
                "tickwidth": {
                  "description": "Sets the tick width (in px).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "title": {
                  "type": "object",
                  "properties": {
                    "font": {
                      "type": "object",
                      "properties": {
                        "color": {
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "$ref": "#/$defs/color"
                            }
                          ]
                        },
                        "family": {
                          "pattern": ".*\\S.*$",
                          "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                          "type": "string"
                        },
                        "lineposition": {
                          "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "oneOf": [
                                {
                                  "type": "string",
                                  "enum": [
                                    "none"
                                  ]
                                },
                                {
                                  "type": "string",
                                  "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                                }
                              ],
                              "default": "none"
                            }
                          ]
                        },
                        "shadow": {
                          "default": "none",
                          "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                          "type": "string"
                        },
                        "size": {
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "type": "number",
                              "minimum": 1
                            }
                          ]
                        },
                        "style": {
                          "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "italic"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "textcase": {
                          "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "word caps",
                                "upper",
                                "lower"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "variant": {
                          "description": "Sets the variant of the font.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "small-caps",
                                "all-small-caps",
                                "all-petite-caps",
                                "petite-caps",
                                "unicase"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "weight": {
                          "description": "Sets the weight (or boldness) of the font.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "type": "integer",
                              "minimum": 1,
                              "maximum": 1000,
                              "default": "normal"
                            }
                          ]
                        }
                      },
                      "additionalProperties": false
                    },
                    "text": {
                      "default": "",
                      "description": "Sets the title of this axis.",
                      "type": "string"
                    }
                  },
                  "additionalProperties": false
                },
                "type": {
                  "description": "Sets the axis type. By default, plotly attempts to determined the axis type by looking into the data of the traces that referenced the axis in question.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "-",
                        "linear",
                        "log",
                        "date",
                        "category"
                      ],
                      "default": "-"
                    }
                  ]
                },
                "uirevision": {
                  "description": "Controls persistence of user-driven changes in axis `range`, `autorange`, `angle`, and `title` if in `editable: true` configuration. Defaults to `polar<N>.uirevision`."
                },
                "visible": {
                  "description": "A single toggle to hide the axis while preserving interaction like dragging. Default is true when a cheater plot is present on the axis, otherwise false",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "sector": {
              "description": "Sets angular span of this polar subplot with two angles (in degrees). Sector are assumed to be spanned in the counterclockwise direction with *0* corresponding to rightmost limit of the polar subplot.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number"
                      }
                    ]
                  },
                  "minItems": 2,
                  "maxItems": 2,
                  "default": [
                    0,
                    360
                  ]
                }
              ]
            },
            "uirevision": {
              "description": "Controls persistence of user-driven changes in axis attributes, if not overridden in the individual axes. Defaults to `layout.uirevision`."
            }
          },
          "additionalProperties": false
        },
        "scene": {
          "type": "object",
          "properties": {
            "annotations": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "align": {
                    "description": "Sets the horizontal alignment of the `text` within the box. Has an effect only if `text` spans two or more lines (i.e. `text` contains one or more <br> HTML tags) or if an explicit width is set to override the text width.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "left",
                          "center",
                          "right"
                        ],
                        "default": "center"
                      }
                    ]
                  },
                  "arrowcolor": {
                    "description": "Sets the color of the annotation arrow.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  },
                  "arrowhead": {
                    "description": "Sets the end annotation arrow head style.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 8,
                        "default": 1
                      }
                    ]
                  },
                  "arrowside": {
                    "description": "Sets the annotation arrow head position.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "oneOf": [
                          {
                            "type": "string",
                            "enum": [
                              "none"
                            ]
                          },
                          {
                            "type": "string",
                            "pattern": "^(end|start)(\\+(end|start))*$"
                          }
                        ],
                        "default": "end"
                      }
                    ]
                  },
                  "arrowsize": {
                    "description": "Sets the size of the end annotation arrow head, relative to `arrowwidth`. A value of 1 (default) gives a head about 3x as wide as the line.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 0.3,
                        "default": 1
                      }
                    ]
                  },
                  "arrowwidth": {
                    "description": "Sets the width (in px) of annotation arrow line.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 0.1
                      }
                    ]
                  },
                  "ax": {
                    "description": "Sets the x component of the arrow tail about the arrow head (in pixels).",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number"
                      }
                    ]
                  },
                  "ay": {
                    "description": "Sets the y component of the arrow tail about the arrow head (in pixels).",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number"
                      }
                    ]
                  },
                  "bgcolor": {
                    "description": "Sets the background color of the annotation.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  },
                  "bordercolor": {
                    "description": "Sets the color of the border enclosing the annotation `text`.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  },
                  "borderpad": {
                    "description": "Sets the padding (in px) between the `text` and the enclosing border.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 0,
                        "default": 1
                      }
                    ]
                  },
                  "borderwidth": {
                    "description": "Sets the width (in px) of the border enclosing the annotation `text`.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 0,
                        "default": 1
                      }
                    ]
                  },
                  "captureevents": {
                    "description": "Determines whether the annotation text box captures mouse move and click events, or allows those events to pass through to data points in the plot that may be behind the annotation. By default `captureevents` is *false* unless `hovertext` is provided. If you use the event `plotly_clickannotation` without `hovertext` you must explicitly enable `captureevents`.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "boolean"
                      }
                    ]
                  },
                  "font": {
                    "type": "object",
                    "properties": {
                      "color": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      },
                      "family": {
                        "pattern": ".*\\S.*$",
                        "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                        "type": "string"
                      },
                      "lineposition": {
                        "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "oneOf": [
                              {
                                "type": "string",
                                "enum": [
                                  "none"
                                ]
                              },
                              {
                                "type": "string",
                                "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                              }
                            ],
                            "default": "none"
                          }
                        ]
                      },
                      "shadow": {
                        "default": "none",
                        "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                        "type": "string"
                      },
                      "size": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 1
                          }
                        ]
                      },
                      "style": {
                        "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "italic"
                            ],
                            "default": "normal"
                          }
                        ]
                      },
                      "textcase": {
                        "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "word caps",
                              "upper",
                              "lower"
                            ],
                            "default": "normal"
                          }
                        ]
                      },
                      "variant": {
                        "description": "Sets the variant of the font.",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "small-caps",
                              "all-small-caps",
                              "all-petite-caps",
                              "petite-caps",
                              "unicase"
                            ],
                            "default": "normal"
                          }
                        ]
                      },
                      "weight": {
                        "description": "Sets the weight (or boldness) of the font.",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 1000,
                            "default": "normal"
                          }
                        ]
                      }
                    },
                    "additionalProperties": false
                  },
                  "height": {
                    "description": "Sets an explicit height for the text box. null (default) lets the text set the box height. Taller text will be clipped.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 1,
                        "default": null
                      }
                    ]
                  },
                  "hoverlabel": {
                    "type": "object",
                    "properties": {
                      "bgcolor": {
                        "description": "Sets the background color of the hover label. By default uses the annotation's `bgcolor` made opaque, or white if it was transparent.",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      },
                      "bordercolor": {
                        "description": "Sets the border color of the hover label. By default uses either dark grey or white, for maximum contrast with `hoverlabel.bgcolor`.",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      },
                      "font": {
                        "type": "object",
                        "properties": {
                          "color": {
                            "oneOf": [
                              {
                                "$ref": "#/$defs/query-string"
                              },
                              {
                                "$ref": "#/$defs/color"
                              }
                            ]
                          },
                          "family": {
                            "pattern": ".*\\S.*$",
                            "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                            "type": "string"
                          },
                          "lineposition": {
                            "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                            "oneOf": [
                              {
                                "$ref": "#/$defs/query-string"
                              },
                              {
                                "oneOf": [
                                  {
                                    "type": "string",
                                    "enum": [
                                      "none"
                                    ]
                                  },
                                  {
                                    "type": "string",
                                    "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                                  }
                                ],
                                "default": "none"
                              }
                            ]
                          },
                          "shadow": {
                            "default": "none",
                            "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                            "type": "string"
                          },
                          "size": {
                            "oneOf": [
                              {
                                "$ref": "#/$defs/query-string"
                              },
                              {
                                "type": "number",
                                "minimum": 1
                              }
                            ]
                          },
                          "style": {
                            "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                            "oneOf": [
                              {
                                "$ref": "#/$defs/query-string"
                              },
                              {
                                "enum": [
                                  "normal",
                                  "italic"
                                ],
                                "default": "normal"
                              }
                            ]
                          },
                          "textcase": {
                            "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                            "oneOf": [
                              {
                                "$ref": "#/$defs/query-string"
                              },
                              {
                                "enum": [
                                  "normal",
                                  "word caps",
                                  "upper",
                                  "lower"
                                ],
                                "default": "normal"
                              }
                            ]
                          },
                          "variant": {
                            "description": "Sets the variant of the font.",
                            "oneOf": [
                              {
                                "$ref": "#/$defs/query-string"
                              },
                              {
                                "enum": [
                                  "normal",
                                  "small-caps",
                                  "all-small-caps",
                                  "all-petite-caps",
                                  "petite-caps",
                                  "unicase"
                                ],
                                "default": "normal"
                              }
                            ]
                          },
                          "weight": {
                            "description": "Sets the weight (or boldness) of the font.",
                            "oneOf": [
                              {
                                "$ref": "#/$defs/query-string"
                              },
                              {
                                "type": "integer",
                                "minimum": 1,
                                "maximum": 1000,
                                "default": "normal"
                              }
                            ]
                          }
                        },
                        "additionalProperties": false
                      }
                    },
                    "additionalProperties": false
                  },
                  "hovertext": {
                    "description": "Sets text to appear when hovering over this annotation. If omitted or blank, no hover label will appear.",
                    "type": "string"
                  },
                  "name": {
                    "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.",
                    "type": "string"
                  },
                  "opacity": {
                    "description": "Sets the opacity of the annotation (text + arrow).",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 1,
                        "default": 1
                      }
                    ]
                  },
                  "showarrow": {
                    "description": "Determines whether or not the annotation is drawn with an arrow. If *true*, `text` is placed near the arrow's tail. If *false*, `text` lines up with the `x` and `y` provided.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "boolean",
                        "default": true
                      }
                    ]
                  },
                  "standoff": {
                    "description": "Sets a distance, in pixels, to move the end arrowhead away from the position it is pointing at, for example to point at the edge of a marker independent of zoom. Note that this shortens the arrow from the `ax` / `ay` vector, in contrast to `xshift` / `yshift` which moves everything by this amount.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 0,
                        "default": 0
                      }
                    ]
                  },
                  "startarrowhead": {
                    "description": "Sets the start annotation arrow head style.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 8,
                        "default": 1
                      }
                    ]
                  },
                  "startarrowsize": {
                    "description": "Sets the size of the start annotation arrow head, relative to `arrowwidth`. A value of 1 (default) gives a head about 3x as wide as the line.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 0.3,
                        "default": 1
                      }
                    ]
                  },
                  "startstandoff": {
                    "description": "Sets a distance, in pixels, to move the start arrowhead away from the position it is pointing at, for example to point at the edge of a marker independent of zoom. Note that this shortens the arrow from the `ax` / `ay` vector, in contrast to `xshift` / `yshift` which moves everything by this amount.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 0,
                        "default": 0
                      }
                    ]
                  },
                  "templateitemname": {
                    "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.",
                    "type": "string"
                  },
                  "text": {
                    "description": "Sets the text associated with this annotation. Plotly uses a subset of HTML tags to do things like newline (<br>), bold (<b></b>), italics (<i></i>), hyperlinks (<a href='...'></a>). Tags <em>, <sup>, <sub>, <s>, <u> <span> are also supported.",
                    "type": "string"
                  },
                  "textangle": {
                    "description": "Sets the angle at which the `text` is drawn with respect to the horizontal.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": -180,
                        "maximum": 180,
                        "default": 0
                      }
                    ]
                  },
                  "valign": {
                    "description": "Sets the vertical alignment of the `text` within the box. Has an effect only if an explicit height is set to override the text height.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "top",
                          "middle",
                          "bottom"
                        ],
                        "default": "middle"
                      }
                    ]
                  },
                  "visible": {
                    "description": "Determines whether or not this annotation is visible.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "boolean",
                        "default": true
                      }
                    ]
                  },
                  "width": {
                    "description": "Sets an explicit width for the text box. null (default) lets the text set the box width. Wider text will be clipped. There is no automatic wrapping; use <br> to start a new line.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 1,
                        "default": null
                      }
                    ]
                  },
                  "x": {
                    "description": "Sets the annotation's x position."
                  },
                  "xanchor": {
                    "description": "Sets the text box's horizontal position anchor This anchor binds the `x` position to the *left*, *center* or *right* of the annotation. For example, if `x` is set to 1, `xref` to *paper* and `xanchor` to *right* then the right-most portion of the annotation lines up with the right-most edge of the plotting area. If *auto*, the anchor is equivalent to *center* for data-referenced annotations or if there is an arrow, whereas for paper-referenced with no arrow, the anchor picked corresponds to the closest side.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "auto",
                          "left",
                          "center",
                          "right"
                        ],
                        "default": "auto"
                      }
                    ]
                  },
                  "xshift": {
                    "description": "Shifts the position of the whole annotation and arrow to the right (positive) or left (negative) by this many pixels.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "default": 0
                      }
                    ]
                  },
                  "y": {
                    "description": "Sets the annotation's y position."
                  },
                  "yanchor": {
                    "description": "Sets the text box's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the annotation. For example, if `y` is set to 1, `yref` to *paper* and `yanchor` to *top* then the top-most portion of the annotation lines up with the top-most edge of the plotting area. If *auto*, the anchor is equivalent to *middle* for data-referenced annotations or if there is an arrow, whereas for paper-referenced with no arrow, the anchor picked corresponds to the closest side.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "auto",
                          "top",
                          "middle",
                          "bottom"
                        ],
                        "default": "auto"
                      }
                    ]
                  },
                  "yshift": {
                    "description": "Shifts the position of the whole annotation and arrow up (positive) or down (negative) by this many pixels.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "default": 0
                      }
                    ]
                  },
                  "z": {
                    "description": "Sets the annotation's z position."
                  }
                },
                "additionalProperties": false
              },
              "minItems": 1
            },
            "aspectmode": {
              "description": "If *cube*, this scene's axes are drawn as a cube, regardless of the axes' ranges. If *data*, this scene's axes are drawn in proportion with the axes' ranges. If *manual*, this scene's axes are drawn in proportion with the input of *aspectratio* (the default behavior if *aspectratio* is provided). If *auto*, this scene's axes are drawn using the results of *data* except when one axis is more than four times the size of the two others, where in that case the results of *cube* are used.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "auto",
                    "cube",
                    "data",
                    "manual"
                  ],
                  "default": "auto"
                }
              ]
            },
            "aspectratio": {
              "type": "object",
              "properties": {
                "impliedEdits": {},
                "x": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0
                    }
                  ]
                },
                "y": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0
                    }
                  ]
                },
                "z": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "bgcolor": {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "camera": {
              "type": "object",
              "properties": {
                "center": {
                  "type": "object",
                  "properties": {
                    "x": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "default": 0
                        }
                      ]
                    },
                    "y": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "default": 0
                        }
                      ]
                    },
                    "z": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "default": 0
                        }
                      ]
                    }
                  },
                  "additionalProperties": false
                },
                "eye": {
                  "type": "object",
                  "properties": {
                    "x": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "default": 1.25
                        }
                      ]
                    },
                    "y": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "default": 1.25
                        }
                      ]
                    },
                    "z": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "default": 1.25
                        }
                      ]
                    }
                  },
                  "additionalProperties": false
                },
                "projection": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "description": "Sets the projection type. The projection type could be either *perspective* or *orthographic*. The default is *perspective*.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "perspective",
                            "orthographic"
                          ],
                          "default": "perspective"
                        }
                      ]
                    }
                  },
                  "additionalProperties": false
                },
                "up": {
                  "type": "object",
                  "properties": {
                    "x": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "default": 0
                        }
                      ]
                    },
                    "y": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "default": 0
                        }
                      ]
                    },
                    "z": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "default": 1
                        }
                      ]
                    }
                  },
                  "additionalProperties": false
                }
              },
              "additionalProperties": false
            },
            "domain": {
              "type": "object",
              "properties": {
                "column": {
                  "description": "If there is a layout grid, use the domain for this column in the grid for this scene subplot .",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 0,
                      "default": 0
                    }
                  ]
                },
                "row": {
                  "description": "If there is a layout grid, use the domain for this row in the grid for this scene subplot .",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 0,
                      "default": 0
                    }
                  ]
                },
                "x": {
                  "description": "Sets the horizontal domain of this scene subplot (in plot fraction).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 0,
                            "maximum": 1
                          }
                        ]
                      },
                      "minItems": 2,
                      "maxItems": 2,
                      "default": [
                        0,
                        1
                      ]
                    }
                  ]
                },
                "y": {
                  "description": "Sets the vertical domain of this scene subplot (in plot fraction).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 0,
                            "maximum": 1
                          }
                        ]
                      },
                      "minItems": 2,
                      "maxItems": 2,
                      "default": [
                        0,
                        1
                      ]
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "dragmode": {
              "description": "Determines the mode of drag interactions for this scene.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "orbit",
                    "turntable",
                    "zoom",
                    "pan",
                    false
                  ]
                }
              ]
            },
            "hovermode": {
              "description": "Determines the mode of hover interactions for this scene.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "closest",
                    false
                  ],
                  "default": "closest"
                }
              ]
            },
            "uirevision": {
              "description": "Controls persistence of user-driven changes in camera attributes. Defaults to `layout.uirevision`."
            },
            "xaxis": {
              "type": "object",
              "properties": {
                "autorange": {
                  "description": "Determines whether or not the range of this axis is computed in relation to the input data. See `rangemode` for more info. If `range` is provided and it has a value for both the lower and upper bound, `autorange` is set to *false*. Using *min* applies autorange only to set the minimum. Using *max* applies autorange only to set the maximum. Using *min reversed* applies autorange only to set the minimum on a reversed axis. Using *max reversed* applies autorange only to set the maximum on a reversed axis. Using *reversed* applies autorange on both ends and reverses the axis direction.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        true,
                        false,
                        "reversed",
                        "min reversed",
                        "max reversed",
                        "min",
                        "max"
                      ],
                      "default": true
                    }
                  ]
                },
                "autorangeoptions": {
                  "type": "object",
                  "properties": {
                    "clipmax": {
                      "description": "Clip autorange maximum if it goes beyond this value. Has no effect when `autorangeoptions.maxallowed` is provided."
                    },
                    "clipmin": {
                      "description": "Clip autorange minimum if it goes beyond this value. Has no effect when `autorangeoptions.minallowed` is provided."
                    },
                    "include": {
                      "description": "Ensure this value is included in autorange.",
                      "oneOf": [
                        {},
                        {
                          "type": "array",
                          "items": {}
                        }
                      ]
                    },
                    "includesrc": {
                      "description": "Sets the source reference on Chart Studio Cloud for `include`.",
                      "type": "string"
                    },
                    "maxallowed": {
                      "description": "Use this value exactly as autorange maximum."
                    },
                    "minallowed": {
                      "description": "Use this value exactly as autorange minimum."
                    }
                  },
                  "additionalProperties": false
                },
                "autotypenumbers": {
                  "description": "Using *strict* a numeric string in trace data is not converted to a number. Using *convert types* a numeric string in trace data may be treated as a number during automatic axis `type` detection. Defaults to layout.autotypenumbers.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "convert types",
                        "strict"
                      ],
                      "default": "convert types"
                    }
                  ]
                },
                "backgroundcolor": {
                  "description": "Sets the background color of this axis' wall.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "calendar": {
                  "description": "Sets the calendar system to use for `range` and `tick0` if this is a date axis. This does not set the calendar for interpreting data on this axis, that's specified in the trace or via the global `layout.calendar`",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "chinese",
                        "coptic",
                        "discworld",
                        "ethiopian",
                        "gregorian",
                        "hebrew",
                        "islamic",
                        "jalali",
                        "julian",
                        "mayan",
                        "nanakshahi",
                        "nepali",
                        "persian",
                        "taiwan",
                        "thai",
                        "ummalqura"
                      ],
                      "default": "gregorian"
                    }
                  ]
                },
                "categoryarray": {
                  "description": "Sets the order in which categories on this axis appear. Only has an effect if `categoryorder` is set to *array*. Used with `categoryorder`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "string"
                          }
                        ]
                      }
                    }
                  ]
                },
                "categoryarraysrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `categoryarray`.",
                  "type": "string"
                },
                "categoryorder": {
                  "description": "Specifies the ordering logic for the case of categorical variables. By default, plotly uses *trace*, which specifies the order that is present in the data supplied. Set `categoryorder` to *category ascending* or *category descending* if order should be determined by the alphanumerical order of the category names. Set `categoryorder` to *array* to derive the ordering from the attribute `categoryarray`. If a category is not found in the `categoryarray` array, the sorting behavior for that attribute will be identical to the *trace* mode. The unspecified categories will follow the categories in `categoryarray`. Set `categoryorder` to *total ascending* or *total descending* if order should be determined by the numerical order of the values. Similarly, the order can be determined by the min, max, sum, mean, geometric mean or median of all the values.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "trace",
                        "category ascending",
                        "category descending",
                        "array",
                        "total ascending",
                        "total descending",
                        "min ascending",
                        "min descending",
                        "max ascending",
                        "max descending",
                        "sum ascending",
                        "sum descending",
                        "mean ascending",
                        "mean descending",
                        "geometric mean ascending",
                        "geometric mean descending",
                        "median ascending",
                        "median descending"
                      ],
                      "default": "trace"
                    }
                  ]
                },
                "color": {
                  "description": "Sets default for all colors associated with this axis all at once: line, font, tick, and grid colors. Grid color is lightened by blending this with the plot background Individual pieces can override this.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "dtick": {
                  "description": "Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L<f>*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M<n>* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48*"
                },
                "exponentformat": {
                  "description": "Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "none",
                        "e",
                        "E",
                        "power",
                        "SI",
                        "B"
                      ],
                      "default": "B"
                    }
                  ]
                },
                "gridcolor": {
                  "description": "Sets the color of the grid lines.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "gridwidth": {
                  "description": "Sets the width (in px) of the grid lines.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "hoverformat": {
                  "default": "",
                  "description": "Sets the hover text formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*",
                  "type": "string"
                },
                "labelalias": {
                  "default": false,
                  "description": "Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax."
                },
                "linecolor": {
                  "description": "Sets the axis line color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "linewidth": {
                  "description": "Sets the width (in px) of the axis line.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "maxallowed": {
                  "description": "Determines the maximum range of this axis."
                },
                "minallowed": {
                  "description": "Determines the minimum range of this axis."
                },
                "minexponent": {
                  "description": "Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 3
                    }
                  ]
                },
                "mirror": {
                  "description": "Determines if the axis lines or/and ticks are mirrored to the opposite side of the plotting area. If *true*, the axis lines are mirrored. If *ticks*, the axis lines and ticks are mirrored. If *false*, mirroring is disable. If *all*, axis lines are mirrored on all shared-axes subplots. If *allticks*, axis lines and ticks are mirrored on all shared-axes subplots.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        true,
                        "ticks",
                        false,
                        "all",
                        "allticks"
                      ],
                      "default": false
                    }
                  ]
                },
                "nticks": {
                  "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 0,
                      "default": 0
                    }
                  ]
                },
                "range": {
                  "description": "Sets the range of this axis. If the axis `type` is *log*, then you must take the log of your desired range (e.g. to set the range from 1 to 100, set the range from 0 to 2). If the axis `type` is *date*, it should be date strings, like date data, though Date objects and unix milliseconds will be accepted and converted to strings. If the axis `type` is *category*, it should be numbers, using the scale where each category is assigned a serial number from zero in the order it appears. Leaving either or both elements `null` impacts the default `autorange`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {},
                      "minItems": 2,
                      "maxItems": 2
                    }
                  ]
                },
                "rangemode": {
                  "description": "If *normal*, the range is computed in relation to the extrema of the input data. If *tozero*`, the range extends to 0, regardless of the input data If *nonnegative*, the range is non-negative, regardless of the input data. Applies only to linear axes.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "tozero",
                        "nonnegative"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "separatethousands": {
                  "description": "If \"true\", even 4-digit integers are separated",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": false
                    }
                  ]
                },
                "showaxeslabels": {
                  "description": "Sets whether or not this axis is labeled",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                },
                "showbackground": {
                  "description": "Sets whether or not this axis' wall has a background color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": false
                    }
                  ]
                },
                "showexponent": {
                  "description": "If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "showgrid": {
                  "description": "Determines whether or not grid lines are drawn. If *true*, the grid lines are drawn at every tick mark.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean"
                    }
                  ]
                },
                "showline": {
                  "description": "Determines whether or not a line bounding this axis is drawn.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": false
                    }
                  ]
                },
                "showspikes": {
                  "description": "Sets whether or not spikes starting from data points to this axis' wall are shown on hover.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                },
                "showticklabels": {
                  "description": "Determines whether or not the tick labels are drawn.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                },
                "showtickprefix": {
                  "description": "If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "showticksuffix": {
                  "description": "Same as `showtickprefix` but for tick suffixes.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "spikecolor": {
                  "description": "Sets the color of the spikes.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "spikesides": {
                  "description": "Sets whether or not spikes extending from the projection data points to this axis' wall boundaries are shown on hover.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                },
                "spikethickness": {
                  "description": "Sets the thickness (in px) of the spikes.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 2
                    }
                  ]
                },
                "tick0": {
                  "description": "Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L<f>* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears."
                },
                "tickangle": {
                  "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": -180,
                      "maximum": 180,
                      "default": "auto"
                    }
                  ]
                },
                "tickcolor": {
                  "description": "Sets the tick color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "tickfont": {
                  "type": "object",
                  "properties": {
                    "color": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    "family": {
                      "pattern": ".*\\S.*$",
                      "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                      "type": "string"
                    },
                    "lineposition": {
                      "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    "shadow": {
                      "default": "none",
                      "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                      "type": "string"
                    },
                    "size": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    "style": {
                      "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "textcase": {
                      "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "variant": {
                      "description": "Sets the variant of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "weight": {
                      "description": "Sets the weight (or boldness) of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    }
                  },
                  "additionalProperties": false
                },
                "tickformat": {
                  "default": "",
                  "description": "Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*",
                  "type": "string"
                },
                "tickformatstops": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "dtickrange": {
                        "description": "range [*min*, *max*], where *min*, *max* - dtick values which describe some zoom level, it is possible to omit *min* or *max* value by passing *null*",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "array",
                            "items": {},
                            "minItems": 2,
                            "maxItems": 2
                          }
                        ]
                      },
                      "enabled": {
                        "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "boolean",
                            "default": true
                          }
                        ]
                      },
                      "name": {
                        "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.",
                        "type": "string"
                      },
                      "templateitemname": {
                        "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.",
                        "type": "string"
                      },
                      "value": {
                        "default": "",
                        "description": "string - dtickformat for described zoom level, the same as *tickformat*",
                        "type": "string"
                      }
                    },
                    "additionalProperties": false
                  },
                  "minItems": 1
                },
                "ticklen": {
                  "description": "Sets the tick length (in px).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 5
                    }
                  ]
                },
                "tickmode": {
                  "description": "Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "auto",
                        "linear",
                        "array"
                      ]
                    }
                  ]
                },
                "tickprefix": {
                  "default": "",
                  "description": "Sets a tick label prefix.",
                  "type": "string"
                },
                "ticks": {
                  "description": "Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "outside",
                        "inside",
                        ""
                      ]
                    }
                  ]
                },
                "ticksuffix": {
                  "default": "",
                  "description": "Sets a tick label suffix.",
                  "type": "string"
                },
                "ticktext": {
                  "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "string"
                          }
                        ]
                      }
                    }
                  ]
                },
                "ticktextsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.",
                  "type": "string"
                },
                "tickvals": {
                  "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "string"
                          }
                        ]
                      }
                    }
                  ]
                },
                "tickvalssrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.",
                  "type": "string"
                },
                "tickwidth": {
                  "description": "Sets the tick width (in px).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "title": {
                  "type": "object",
                  "properties": {
                    "font": {
                      "type": "object",
                      "properties": {
                        "color": {
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "$ref": "#/$defs/color"
                            }
                          ]
                        },
                        "family": {
                          "pattern": ".*\\S.*$",
                          "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                          "type": "string"
                        },
                        "lineposition": {
                          "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "oneOf": [
                                {
                                  "type": "string",
                                  "enum": [
                                    "none"
                                  ]
                                },
                                {
                                  "type": "string",
                                  "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                                }
                              ],
                              "default": "none"
                            }
                          ]
                        },
                        "shadow": {
                          "default": "none",
                          "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                          "type": "string"
                        },
                        "size": {
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "type": "number",
                              "minimum": 1
                            }
                          ]
                        },
                        "style": {
                          "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "italic"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "textcase": {
                          "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "word caps",
                                "upper",
                                "lower"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "variant": {
                          "description": "Sets the variant of the font.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "small-caps",
                                "all-small-caps",
                                "all-petite-caps",
                                "petite-caps",
                                "unicase"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "weight": {
                          "description": "Sets the weight (or boldness) of the font.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "type": "integer",
                              "minimum": 1,
                              "maximum": 1000,
                              "default": "normal"
                            }
                          ]
                        }
                      },
                      "additionalProperties": false
                    },
                    "text": {
                      "description": "Sets the title of this axis.",
                      "type": "string"
                    }
                  },
                  "additionalProperties": false
                },
                "type": {
                  "description": "Sets the axis type. By default, plotly attempts to determined the axis type by looking into the data of the traces that referenced the axis in question.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "-",
                        "linear",
                        "log",
                        "date",
                        "category"
                      ],
                      "default": "-"
                    }
                  ]
                },
                "visible": {
                  "description": "A single toggle to hide the axis while preserving interaction like dragging. Default is true when a cheater plot is present on the axis, otherwise false",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean"
                    }
                  ]
                },
                "zeroline": {
                  "description": "Determines whether or not a line is drawn at along the 0 value of this axis. If *true*, the zero line is drawn on top of the grid lines.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean"
                    }
                  ]
                },
                "zerolinecolor": {
                  "description": "Sets the line color of the zero line.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "zerolinewidth": {
                  "description": "Sets the width (in px) of the zero line.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "default": 1
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "yaxis": {
              "type": "object",
              "properties": {
                "autorange": {
                  "description": "Determines whether or not the range of this axis is computed in relation to the input data. See `rangemode` for more info. If `range` is provided and it has a value for both the lower and upper bound, `autorange` is set to *false*. Using *min* applies autorange only to set the minimum. Using *max* applies autorange only to set the maximum. Using *min reversed* applies autorange only to set the minimum on a reversed axis. Using *max reversed* applies autorange only to set the maximum on a reversed axis. Using *reversed* applies autorange on both ends and reverses the axis direction.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        true,
                        false,
                        "reversed",
                        "min reversed",
                        "max reversed",
                        "min",
                        "max"
                      ],
                      "default": true
                    }
                  ]
                },
                "autorangeoptions": {
                  "type": "object",
                  "properties": {
                    "clipmax": {
                      "description": "Clip autorange maximum if it goes beyond this value. Has no effect when `autorangeoptions.maxallowed` is provided."
                    },
                    "clipmin": {
                      "description": "Clip autorange minimum if it goes beyond this value. Has no effect when `autorangeoptions.minallowed` is provided."
                    },
                    "include": {
                      "description": "Ensure this value is included in autorange.",
                      "oneOf": [
                        {},
                        {
                          "type": "array",
                          "items": {}
                        }
                      ]
                    },
                    "includesrc": {
                      "description": "Sets the source reference on Chart Studio Cloud for `include`.",
                      "type": "string"
                    },
                    "maxallowed": {
                      "description": "Use this value exactly as autorange maximum."
                    },
                    "minallowed": {
                      "description": "Use this value exactly as autorange minimum."
                    }
                  },
                  "additionalProperties": false
                },
                "autotypenumbers": {
                  "description": "Using *strict* a numeric string in trace data is not converted to a number. Using *convert types* a numeric string in trace data may be treated as a number during automatic axis `type` detection. Defaults to layout.autotypenumbers.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "convert types",
                        "strict"
                      ],
                      "default": "convert types"
                    }
                  ]
                },
                "backgroundcolor": {
                  "description": "Sets the background color of this axis' wall.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "calendar": {
                  "description": "Sets the calendar system to use for `range` and `tick0` if this is a date axis. This does not set the calendar for interpreting data on this axis, that's specified in the trace or via the global `layout.calendar`",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "chinese",
                        "coptic",
                        "discworld",
                        "ethiopian",
                        "gregorian",
                        "hebrew",
                        "islamic",
                        "jalali",
                        "julian",
                        "mayan",
                        "nanakshahi",
                        "nepali",
                        "persian",
                        "taiwan",
                        "thai",
                        "ummalqura"
                      ],
                      "default": "gregorian"
                    }
                  ]
                },
                "categoryarray": {
                  "description": "Sets the order in which categories on this axis appear. Only has an effect if `categoryorder` is set to *array*. Used with `categoryorder`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "string"
                          }
                        ]
                      }
                    }
                  ]
                },
                "categoryarraysrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `categoryarray`.",
                  "type": "string"
                },
                "categoryorder": {
                  "description": "Specifies the ordering logic for the case of categorical variables. By default, plotly uses *trace*, which specifies the order that is present in the data supplied. Set `categoryorder` to *category ascending* or *category descending* if order should be determined by the alphanumerical order of the category names. Set `categoryorder` to *array* to derive the ordering from the attribute `categoryarray`. If a category is not found in the `categoryarray` array, the sorting behavior for that attribute will be identical to the *trace* mode. The unspecified categories will follow the categories in `categoryarray`. Set `categoryorder` to *total ascending* or *total descending* if order should be determined by the numerical order of the values. Similarly, the order can be determined by the min, max, sum, mean, geometric mean or median of all the values.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "trace",
                        "category ascending",
                        "category descending",
                        "array",
                        "total ascending",
                        "total descending",
                        "min ascending",
                        "min descending",
                        "max ascending",
                        "max descending",
                        "sum ascending",
                        "sum descending",
                        "mean ascending",
                        "mean descending",
                        "geometric mean ascending",
                        "geometric mean descending",
                        "median ascending",
                        "median descending"
                      ],
                      "default": "trace"
                    }
                  ]
                },
                "color": {
                  "description": "Sets default for all colors associated with this axis all at once: line, font, tick, and grid colors. Grid color is lightened by blending this with the plot background Individual pieces can override this.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "dtick": {
                  "description": "Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L<f>*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M<n>* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48*"
                },
                "exponentformat": {
                  "description": "Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "none",
                        "e",
                        "E",
                        "power",
                        "SI",
                        "B"
                      ],
                      "default": "B"
                    }
                  ]
                },
                "gridcolor": {
                  "description": "Sets the color of the grid lines.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "gridwidth": {
                  "description": "Sets the width (in px) of the grid lines.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "hoverformat": {
                  "default": "",
                  "description": "Sets the hover text formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*",
                  "type": "string"
                },
                "labelalias": {
                  "default": false,
                  "description": "Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax."
                },
                "linecolor": {
                  "description": "Sets the axis line color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "linewidth": {
                  "description": "Sets the width (in px) of the axis line.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "maxallowed": {
                  "description": "Determines the maximum range of this axis."
                },
                "minallowed": {
                  "description": "Determines the minimum range of this axis."
                },
                "minexponent": {
                  "description": "Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 3
                    }
                  ]
                },
                "mirror": {
                  "description": "Determines if the axis lines or/and ticks are mirrored to the opposite side of the plotting area. If *true*, the axis lines are mirrored. If *ticks*, the axis lines and ticks are mirrored. If *false*, mirroring is disable. If *all*, axis lines are mirrored on all shared-axes subplots. If *allticks*, axis lines and ticks are mirrored on all shared-axes subplots.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        true,
                        "ticks",
                        false,
                        "all",
                        "allticks"
                      ],
                      "default": false
                    }
                  ]
                },
                "nticks": {
                  "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 0,
                      "default": 0
                    }
                  ]
                },
                "range": {
                  "description": "Sets the range of this axis. If the axis `type` is *log*, then you must take the log of your desired range (e.g. to set the range from 1 to 100, set the range from 0 to 2). If the axis `type` is *date*, it should be date strings, like date data, though Date objects and unix milliseconds will be accepted and converted to strings. If the axis `type` is *category*, it should be numbers, using the scale where each category is assigned a serial number from zero in the order it appears. Leaving either or both elements `null` impacts the default `autorange`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {},
                      "minItems": 2,
                      "maxItems": 2
                    }
                  ]
                },
                "rangemode": {
                  "description": "If *normal*, the range is computed in relation to the extrema of the input data. If *tozero*`, the range extends to 0, regardless of the input data If *nonnegative*, the range is non-negative, regardless of the input data. Applies only to linear axes.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "tozero",
                        "nonnegative"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "separatethousands": {
                  "description": "If \"true\", even 4-digit integers are separated",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": false
                    }
                  ]
                },
                "showaxeslabels": {
                  "description": "Sets whether or not this axis is labeled",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                },
                "showbackground": {
                  "description": "Sets whether or not this axis' wall has a background color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": false
                    }
                  ]
                },
                "showexponent": {
                  "description": "If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "showgrid": {
                  "description": "Determines whether or not grid lines are drawn. If *true*, the grid lines are drawn at every tick mark.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean"
                    }
                  ]
                },
                "showline": {
                  "description": "Determines whether or not a line bounding this axis is drawn.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": false
                    }
                  ]
                },
                "showspikes": {
                  "description": "Sets whether or not spikes starting from data points to this axis' wall are shown on hover.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                },
                "showticklabels": {
                  "description": "Determines whether or not the tick labels are drawn.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                },
                "showtickprefix": {
                  "description": "If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "showticksuffix": {
                  "description": "Same as `showtickprefix` but for tick suffixes.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "spikecolor": {
                  "description": "Sets the color of the spikes.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "spikesides": {
                  "description": "Sets whether or not spikes extending from the projection data points to this axis' wall boundaries are shown on hover.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                },
                "spikethickness": {
                  "description": "Sets the thickness (in px) of the spikes.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 2
                    }
                  ]
                },
                "tick0": {
                  "description": "Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L<f>* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears."
                },
                "tickangle": {
                  "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": -180,
                      "maximum": 180,
                      "default": "auto"
                    }
                  ]
                },
                "tickcolor": {
                  "description": "Sets the tick color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "tickfont": {
                  "type": "object",
                  "properties": {
                    "color": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    "family": {
                      "pattern": ".*\\S.*$",
                      "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                      "type": "string"
                    },
                    "lineposition": {
                      "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    "shadow": {
                      "default": "none",
                      "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                      "type": "string"
                    },
                    "size": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    "style": {
                      "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "textcase": {
                      "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "variant": {
                      "description": "Sets the variant of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "weight": {
                      "description": "Sets the weight (or boldness) of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    }
                  },
                  "additionalProperties": false
                },
                "tickformat": {
                  "default": "",
                  "description": "Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*",
                  "type": "string"
                },
                "tickformatstops": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "dtickrange": {
                        "description": "range [*min*, *max*], where *min*, *max* - dtick values which describe some zoom level, it is possible to omit *min* or *max* value by passing *null*",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "array",
                            "items": {},
                            "minItems": 2,
                            "maxItems": 2
                          }
                        ]
                      },
                      "enabled": {
                        "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "boolean",
                            "default": true
                          }
                        ]
                      },
                      "name": {
                        "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.",
                        "type": "string"
                      },
                      "templateitemname": {
                        "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.",
                        "type": "string"
                      },
                      "value": {
                        "default": "",
                        "description": "string - dtickformat for described zoom level, the same as *tickformat*",
                        "type": "string"
                      }
                    },
                    "additionalProperties": false
                  },
                  "minItems": 1
                },
                "ticklen": {
                  "description": "Sets the tick length (in px).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 5
                    }
                  ]
                },
                "tickmode": {
                  "description": "Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "auto",
                        "linear",
                        "array"
                      ]
                    }
                  ]
                },
                "tickprefix": {
                  "default": "",
                  "description": "Sets a tick label prefix.",
                  "type": "string"
                },
                "ticks": {
                  "description": "Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "outside",
                        "inside",
                        ""
                      ]
                    }
                  ]
                },
                "ticksuffix": {
                  "default": "",
                  "description": "Sets a tick label suffix.",
                  "type": "string"
                },
                "ticktext": {
                  "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "string"
                          }
                        ]
                      }
                    }
                  ]
                },
                "ticktextsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.",
                  "type": "string"
                },
                "tickvals": {
                  "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "string"
                          }
                        ]
                      }
                    }
                  ]
                },
                "tickvalssrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.",
                  "type": "string"
                },
                "tickwidth": {
                  "description": "Sets the tick width (in px).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "title": {
                  "type": "object",
                  "properties": {
                    "font": {
                      "type": "object",
                      "properties": {
                        "color": {
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "$ref": "#/$defs/color"
                            }
                          ]
                        },
                        "family": {
                          "pattern": ".*\\S.*$",
                          "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                          "type": "string"
                        },
                        "lineposition": {
                          "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "oneOf": [
                                {
                                  "type": "string",
                                  "enum": [
                                    "none"
                                  ]
                                },
                                {
                                  "type": "string",
                                  "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                                }
                              ],
                              "default": "none"
                            }
                          ]
                        },
                        "shadow": {
                          "default": "none",
                          "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                          "type": "string"
                        },
                        "size": {
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "type": "number",
                              "minimum": 1
                            }
                          ]
                        },
                        "style": {
                          "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "italic"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "textcase": {
                          "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "word caps",
                                "upper",
                                "lower"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "variant": {
                          "description": "Sets the variant of the font.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "small-caps",
                                "all-small-caps",
                                "all-petite-caps",
                                "petite-caps",
                                "unicase"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "weight": {
                          "description": "Sets the weight (or boldness) of the font.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "type": "integer",
                              "minimum": 1,
                              "maximum": 1000,
                              "default": "normal"
                            }
                          ]
                        }
                      },
                      "additionalProperties": false
                    },
                    "text": {
                      "description": "Sets the title of this axis.",
                      "type": "string"
                    }
                  },
                  "additionalProperties": false
                },
                "type": {
                  "description": "Sets the axis type. By default, plotly attempts to determined the axis type by looking into the data of the traces that referenced the axis in question.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "-",
                        "linear",
                        "log",
                        "date",
                        "category"
                      ],
                      "default": "-"
                    }
                  ]
                },
                "visible": {
                  "description": "A single toggle to hide the axis while preserving interaction like dragging. Default is true when a cheater plot is present on the axis, otherwise false",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean"
                    }
                  ]
                },
                "zeroline": {
                  "description": "Determines whether or not a line is drawn at along the 0 value of this axis. If *true*, the zero line is drawn on top of the grid lines.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean"
                    }
                  ]
                },
                "zerolinecolor": {
                  "description": "Sets the line color of the zero line.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "zerolinewidth": {
                  "description": "Sets the width (in px) of the zero line.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "default": 1
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "zaxis": {
              "type": "object",
              "properties": {
                "autorange": {
                  "description": "Determines whether or not the range of this axis is computed in relation to the input data. See `rangemode` for more info. If `range` is provided and it has a value for both the lower and upper bound, `autorange` is set to *false*. Using *min* applies autorange only to set the minimum. Using *max* applies autorange only to set the maximum. Using *min reversed* applies autorange only to set the minimum on a reversed axis. Using *max reversed* applies autorange only to set the maximum on a reversed axis. Using *reversed* applies autorange on both ends and reverses the axis direction.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        true,
                        false,
                        "reversed",
                        "min reversed",
                        "max reversed",
                        "min",
                        "max"
                      ],
                      "default": true
                    }
                  ]
                },
                "autorangeoptions": {
                  "type": "object",
                  "properties": {
                    "clipmax": {
                      "description": "Clip autorange maximum if it goes beyond this value. Has no effect when `autorangeoptions.maxallowed` is provided."
                    },
                    "clipmin": {
                      "description": "Clip autorange minimum if it goes beyond this value. Has no effect when `autorangeoptions.minallowed` is provided."
                    },
                    "include": {
                      "description": "Ensure this value is included in autorange.",
                      "oneOf": [
                        {},
                        {
                          "type": "array",
                          "items": {}
                        }
                      ]
                    },
                    "includesrc": {
                      "description": "Sets the source reference on Chart Studio Cloud for `include`.",
                      "type": "string"
                    },
                    "maxallowed": {
                      "description": "Use this value exactly as autorange maximum."
                    },
                    "minallowed": {
                      "description": "Use this value exactly as autorange minimum."
                    }
                  },
                  "additionalProperties": false
                },
                "autotypenumbers": {
                  "description": "Using *strict* a numeric string in trace data is not converted to a number. Using *convert types* a numeric string in trace data may be treated as a number during automatic axis `type` detection. Defaults to layout.autotypenumbers.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "convert types",
                        "strict"
                      ],
                      "default": "convert types"
                    }
                  ]
                },
                "backgroundcolor": {
                  "description": "Sets the background color of this axis' wall.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "calendar": {
                  "description": "Sets the calendar system to use for `range` and `tick0` if this is a date axis. This does not set the calendar for interpreting data on this axis, that's specified in the trace or via the global `layout.calendar`",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "chinese",
                        "coptic",
                        "discworld",
                        "ethiopian",
                        "gregorian",
                        "hebrew",
                        "islamic",
                        "jalali",
                        "julian",
                        "mayan",
                        "nanakshahi",
                        "nepali",
                        "persian",
                        "taiwan",
                        "thai",
                        "ummalqura"
                      ],
                      "default": "gregorian"
                    }
                  ]
                },
                "categoryarray": {
                  "description": "Sets the order in which categories on this axis appear. Only has an effect if `categoryorder` is set to *array*. Used with `categoryorder`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "string"
                          }
                        ]
                      }
                    }
                  ]
                },
                "categoryarraysrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `categoryarray`.",
                  "type": "string"
                },
                "categoryorder": {
                  "description": "Specifies the ordering logic for the case of categorical variables. By default, plotly uses *trace*, which specifies the order that is present in the data supplied. Set `categoryorder` to *category ascending* or *category descending* if order should be determined by the alphanumerical order of the category names. Set `categoryorder` to *array* to derive the ordering from the attribute `categoryarray`. If a category is not found in the `categoryarray` array, the sorting behavior for that attribute will be identical to the *trace* mode. The unspecified categories will follow the categories in `categoryarray`. Set `categoryorder` to *total ascending* or *total descending* if order should be determined by the numerical order of the values. Similarly, the order can be determined by the min, max, sum, mean, geometric mean or median of all the values.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "trace",
                        "category ascending",
                        "category descending",
                        "array",
                        "total ascending",
                        "total descending",
                        "min ascending",
                        "min descending",
                        "max ascending",
                        "max descending",
                        "sum ascending",
                        "sum descending",
                        "mean ascending",
                        "mean descending",
                        "geometric mean ascending",
                        "geometric mean descending",
                        "median ascending",
                        "median descending"
                      ],
                      "default": "trace"
                    }
                  ]
                },
                "color": {
                  "description": "Sets default for all colors associated with this axis all at once: line, font, tick, and grid colors. Grid color is lightened by blending this with the plot background Individual pieces can override this.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "dtick": {
                  "description": "Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L<f>*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M<n>* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48*"
                },
                "exponentformat": {
                  "description": "Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "none",
                        "e",
                        "E",
                        "power",
                        "SI",
                        "B"
                      ],
                      "default": "B"
                    }
                  ]
                },
                "gridcolor": {
                  "description": "Sets the color of the grid lines.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "gridwidth": {
                  "description": "Sets the width (in px) of the grid lines.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "hoverformat": {
                  "default": "",
                  "description": "Sets the hover text formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*",
                  "type": "string"
                },
                "labelalias": {
                  "default": false,
                  "description": "Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax."
                },
                "linecolor": {
                  "description": "Sets the axis line color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "linewidth": {
                  "description": "Sets the width (in px) of the axis line.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "maxallowed": {
                  "description": "Determines the maximum range of this axis."
                },
                "minallowed": {
                  "description": "Determines the minimum range of this axis."
                },
                "minexponent": {
                  "description": "Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 3
                    }
                  ]
                },
                "mirror": {
                  "description": "Determines if the axis lines or/and ticks are mirrored to the opposite side of the plotting area. If *true*, the axis lines are mirrored. If *ticks*, the axis lines and ticks are mirrored. If *false*, mirroring is disable. If *all*, axis lines are mirrored on all shared-axes subplots. If *allticks*, axis lines and ticks are mirrored on all shared-axes subplots.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        true,
                        "ticks",
                        false,
                        "all",
                        "allticks"
                      ],
                      "default": false
                    }
                  ]
                },
                "nticks": {
                  "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 0,
                      "default": 0
                    }
                  ]
                },
                "range": {
                  "description": "Sets the range of this axis. If the axis `type` is *log*, then you must take the log of your desired range (e.g. to set the range from 1 to 100, set the range from 0 to 2). If the axis `type` is *date*, it should be date strings, like date data, though Date objects and unix milliseconds will be accepted and converted to strings. If the axis `type` is *category*, it should be numbers, using the scale where each category is assigned a serial number from zero in the order it appears. Leaving either or both elements `null` impacts the default `autorange`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {},
                      "minItems": 2,
                      "maxItems": 2
                    }
                  ]
                },
                "rangemode": {
                  "description": "If *normal*, the range is computed in relation to the extrema of the input data. If *tozero*`, the range extends to 0, regardless of the input data If *nonnegative*, the range is non-negative, regardless of the input data. Applies only to linear axes.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "tozero",
                        "nonnegative"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "separatethousands": {
                  "description": "If \"true\", even 4-digit integers are separated",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": false
                    }
                  ]
                },
                "showaxeslabels": {
                  "description": "Sets whether or not this axis is labeled",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                },
                "showbackground": {
                  "description": "Sets whether or not this axis' wall has a background color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": false
                    }
                  ]
                },
                "showexponent": {
                  "description": "If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "showgrid": {
                  "description": "Determines whether or not grid lines are drawn. If *true*, the grid lines are drawn at every tick mark.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean"
                    }
                  ]
                },
                "showline": {
                  "description": "Determines whether or not a line bounding this axis is drawn.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": false
                    }
                  ]
                },
                "showspikes": {
                  "description": "Sets whether or not spikes starting from data points to this axis' wall are shown on hover.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                },
                "showticklabels": {
                  "description": "Determines whether or not the tick labels are drawn.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                },
                "showtickprefix": {
                  "description": "If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "showticksuffix": {
                  "description": "Same as `showtickprefix` but for tick suffixes.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "spikecolor": {
                  "description": "Sets the color of the spikes.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "spikesides": {
                  "description": "Sets whether or not spikes extending from the projection data points to this axis' wall boundaries are shown on hover.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                },
                "spikethickness": {
                  "description": "Sets the thickness (in px) of the spikes.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 2
                    }
                  ]
                },
                "tick0": {
                  "description": "Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L<f>* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears."
                },
                "tickangle": {
                  "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": -180,
                      "maximum": 180,
                      "default": "auto"
                    }
                  ]
                },
                "tickcolor": {
                  "description": "Sets the tick color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "tickfont": {
                  "type": "object",
                  "properties": {
                    "color": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    "family": {
                      "pattern": ".*\\S.*$",
                      "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                      "type": "string"
                    },
                    "lineposition": {
                      "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    "shadow": {
                      "default": "none",
                      "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                      "type": "string"
                    },
                    "size": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    "style": {
                      "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "textcase": {
                      "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "variant": {
                      "description": "Sets the variant of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "weight": {
                      "description": "Sets the weight (or boldness) of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    }
                  },
                  "additionalProperties": false
                },
                "tickformat": {
                  "default": "",
                  "description": "Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*",
                  "type": "string"
                },
                "tickformatstops": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "dtickrange": {
                        "description": "range [*min*, *max*], where *min*, *max* - dtick values which describe some zoom level, it is possible to omit *min* or *max* value by passing *null*",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "array",
                            "items": {},
                            "minItems": 2,
                            "maxItems": 2
                          }
                        ]
                      },
                      "enabled": {
                        "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "boolean",
                            "default": true
                          }
                        ]
                      },
                      "name": {
                        "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.",
                        "type": "string"
                      },
                      "templateitemname": {
                        "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.",
                        "type": "string"
                      },
                      "value": {
                        "default": "",
                        "description": "string - dtickformat for described zoom level, the same as *tickformat*",
                        "type": "string"
                      }
                    },
                    "additionalProperties": false
                  },
                  "minItems": 1
                },
                "ticklen": {
                  "description": "Sets the tick length (in px).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 5
                    }
                  ]
                },
                "tickmode": {
                  "description": "Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "auto",
                        "linear",
                        "array"
                      ]
                    }
                  ]
                },
                "tickprefix": {
                  "default": "",
                  "description": "Sets a tick label prefix.",
                  "type": "string"
                },
                "ticks": {
                  "description": "Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "outside",
                        "inside",
                        ""
                      ]
                    }
                  ]
                },
                "ticksuffix": {
                  "default": "",
                  "description": "Sets a tick label suffix.",
                  "type": "string"
                },
                "ticktext": {
                  "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "string"
                          }
                        ]
                      }
                    }
                  ]
                },
                "ticktextsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.",
                  "type": "string"
                },
                "tickvals": {
                  "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "string"
                          }
                        ]
                      }
                    }
                  ]
                },
                "tickvalssrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.",
                  "type": "string"
                },
                "tickwidth": {
                  "description": "Sets the tick width (in px).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "title": {
                  "type": "object",
                  "properties": {
                    "font": {
                      "type": "object",
                      "properties": {
                        "color": {
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "$ref": "#/$defs/color"
                            }
                          ]
                        },
                        "family": {
                          "pattern": ".*\\S.*$",
                          "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                          "type": "string"
                        },
                        "lineposition": {
                          "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "oneOf": [
                                {
                                  "type": "string",
                                  "enum": [
                                    "none"
                                  ]
                                },
                                {
                                  "type": "string",
                                  "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                                }
                              ],
                              "default": "none"
                            }
                          ]
                        },
                        "shadow": {
                          "default": "none",
                          "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                          "type": "string"
                        },
                        "size": {
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "type": "number",
                              "minimum": 1
                            }
                          ]
                        },
                        "style": {
                          "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "italic"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "textcase": {
                          "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "word caps",
                                "upper",
                                "lower"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "variant": {
                          "description": "Sets the variant of the font.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "small-caps",
                                "all-small-caps",
                                "all-petite-caps",
                                "petite-caps",
                                "unicase"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "weight": {
                          "description": "Sets the weight (or boldness) of the font.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "type": "integer",
                              "minimum": 1,
                              "maximum": 1000,
                              "default": "normal"
                            }
                          ]
                        }
                      },
                      "additionalProperties": false
                    },
                    "text": {
                      "description": "Sets the title of this axis.",
                      "type": "string"
                    }
                  },
                  "additionalProperties": false
                },
                "type": {
                  "description": "Sets the axis type. By default, plotly attempts to determined the axis type by looking into the data of the traces that referenced the axis in question.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "-",
                        "linear",
                        "log",
                        "date",
                        "category"
                      ],
                      "default": "-"
                    }
                  ]
                },
                "visible": {
                  "description": "A single toggle to hide the axis while preserving interaction like dragging. Default is true when a cheater plot is present on the axis, otherwise false",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean"
                    }
                  ]
                },
                "zeroline": {
                  "description": "Determines whether or not a line is drawn at along the 0 value of this axis. If *true*, the zero line is drawn on top of the grid lines.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean"
                    }
                  ]
                },
                "zerolinecolor": {
                  "description": "Sets the line color of the zero line.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "zerolinewidth": {
                  "description": "Sets the width (in px) of the zero line.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "default": 1
                    }
                  ]
                }
              },
              "additionalProperties": false
            }
          },
          "additionalProperties": false
        },
        "selectdirection": {
          "description": "When `dragmode` is set to *select*, this limits the selection of the drag to horizontal, vertical or diagonal. *h* only allows horizontal selection, *v* only vertical, *d* only diagonal and *any* sets no limit.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "h",
                "v",
                "d",
                "any"
              ],
              "default": "any"
            }
          ]
        },
        "selectionrevision": {
          "description": "Controls persistence of user-driven changes in selected points from all traces."
        },
        "selections": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "line": {
                "type": "object",
                "properties": {
                  "color": {
                    "description": "Sets the line color.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  },
                  "dash": {
                    "default": "dot",
                    "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).",
                    "type": "string"
                  },
                  "width": {
                    "description": "Sets the line width (in px).",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 1,
                        "default": 1
                      }
                    ]
                  }
                },
                "additionalProperties": false
              },
              "name": {
                "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.",
                "type": "string"
              },
              "opacity": {
                "description": "Sets the opacity of the selection.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 1,
                    "default": 0.7
                  }
                ]
              },
              "path": {
                "description": "For `type` *path* - a valid SVG path similar to `shapes.path` in data coordinates. Allowed segments are: M, L and Z.",
                "type": "string"
              },
              "templateitemname": {
                "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.",
                "type": "string"
              },
              "type": {
                "description": "Specifies the selection type to be drawn. If *rect*, a rectangle is drawn linking (`x0`,`y0`), (`x1`,`y0`), (`x1`,`y1`) and (`x0`,`y1`). If *path*, draw a custom SVG path using `path`.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "enum": [
                      "rect",
                      "path"
                    ]
                  }
                ]
              },
              "x0": {
                "description": "Sets the selection's starting x position."
              },
              "x1": {
                "description": "Sets the selection's end x position."
              },
              "xref": {
                "description": "Sets the selection's x coordinate axis. If set to a x axis id (e.g. *x* or *x2*), the `x` position refers to a x coordinate. If set to *paper*, the `x` position refers to the distance from the left of the plotting area in normalized coordinates where *0* (*1*) corresponds to the left (right). If set to a x axis ID followed by *domain* (separated by a space), the position behaves like for *paper*, but refers to the distance in fractions of the domain length from the left of the domain of that axis: e.g., *x2 domain* refers to the domain of the second x  axis and a x position of 0.5 refers to the point between the left and the right of the domain of the second x axis.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "oneOf": [
                      {
                        "type": "string",
                        "pattern": "^x([2-9]|[1-9][0-9]+)?( domain)?$"
                      },
                      {
                        "enum": [
                          "paper"
                        ]
                      }
                    ]
                  }
                ]
              },
              "y0": {
                "description": "Sets the selection's starting y position."
              },
              "y1": {
                "description": "Sets the selection's end y position."
              },
              "yref": {
                "description": "Sets the selection's x coordinate axis. If set to a y axis id (e.g. *y* or *y2*), the `y` position refers to a y coordinate. If set to *paper*, the `y` position refers to the distance from the bottom of the plotting area in normalized coordinates where *0* (*1*) corresponds to the bottom (top). If set to a y axis ID followed by *domain* (separated by a space), the position behaves like for *paper*, but refers to the distance in fractions of the domain length from the bottom of the domain of that axis: e.g., *y2 domain* refers to the domain of the second y  axis and a y position of 0.5 refers to the point between the bottom and the top of the domain of the second y axis.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "oneOf": [
                      {
                        "type": "string",
                        "pattern": "^y([2-9]|[1-9][0-9]+)?( domain)?$"
                      },
                      {
                        "enum": [
                          "paper"
                        ]
                      }
                    ]
                  }
                ]
              }
            },
            "additionalProperties": false
          },
          "minItems": 1
        },
        "separators": {
          "description": "Sets the decimal and thousand separators. For example, *. * puts a '.' before decimals and a space between thousands. In English locales, dflt is *.,* but other locales may alter this default.",
          "type": "string"
        },
        "shapes": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "editable": {
                "description": "Determines whether the shape could be activated for edit or not. Has no effect when the older editable shapes mode is enabled via `config.editable` or `config.edits.shapePosition`.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "boolean",
                    "default": false
                  }
                ]
              },
              "fillcolor": {
                "description": "Sets the color filling the shape's interior. Only applies to closed shapes.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "$ref": "#/$defs/color"
                  }
                ]
              },
              "fillrule": {
                "description": "Determines which regions of complex paths constitute the interior. For more info please visit <https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/fill-rule>",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "enum": [
                      "evenodd",
                      "nonzero"
                    ],
                    "default": "evenodd"
                  }
                ]
              },
              "label": {
                "type": "object",
                "properties": {
                  "font": {
                    "type": "object",
                    "properties": {
                      "color": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      },
                      "family": {
                        "pattern": ".*\\S.*$",
                        "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                        "type": "string"
                      },
                      "lineposition": {
                        "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "oneOf": [
                              {
                                "type": "string",
                                "enum": [
                                  "none"
                                ]
                              },
                              {
                                "type": "string",
                                "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                              }
                            ],
                            "default": "none"
                          }
                        ]
                      },
                      "shadow": {
                        "default": "none",
                        "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                        "type": "string"
                      },
                      "size": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 1
                          }
                        ]
                      },
                      "style": {
                        "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "italic"
                            ],
                            "default": "normal"
                          }
                        ]
                      },
                      "textcase": {
                        "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "word caps",
                              "upper",
                              "lower"
                            ],
                            "default": "normal"
                          }
                        ]
                      },
                      "variant": {
                        "description": "Sets the variant of the font.",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "small-caps",
                              "all-small-caps",
                              "all-petite-caps",
                              "petite-caps",
                              "unicase"
                            ],
                            "default": "normal"
                          }
                        ]
                      },
                      "weight": {
                        "description": "Sets the weight (or boldness) of the font.",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 1000,
                            "default": "normal"
                          }
                        ]
                      }
                    },
                    "additionalProperties": false
                  },
                  "padding": {
                    "description": "Sets padding (in px) between edge of label and edge of shape.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 0,
                        "default": 3
                      }
                    ]
                  },
                  "text": {
                    "default": "",
                    "description": "Sets the text to display with shape. It is also used for legend item if `name` is not provided.",
                    "type": "string"
                  },
                  "textangle": {
                    "description": "Sets the angle at which the label text is drawn with respect to the horizontal. For lines, angle *auto* is the same angle as the line. For all other shapes, angle *auto* is horizontal.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": -180,
                        "maximum": 180,
                        "default": "auto"
                      }
                    ]
                  },
                  "textposition": {
                    "description": "Sets the position of the label text relative to the shape. Supported values for rectangles, circles and paths are *top left*, *top center*, *top right*, *middle left*, *middle center*, *middle right*, *bottom left*, *bottom center*, and *bottom right*. Supported values for lines are *start*, *middle*, and *end*. Default: *middle center* for rectangles, circles, and paths; *middle* for lines.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "top left",
                          "top center",
                          "top right",
                          "middle left",
                          "middle center",
                          "middle right",
                          "bottom left",
                          "bottom center",
                          "bottom right",
                          "start",
                          "middle",
                          "end"
                        ]
                      }
                    ]
                  },
                  "texttemplate": {
                    "default": "",
                    "description": "Template string used for rendering the shape's label. Note that this will override `text`. Variables are inserted using %{variable}, for example \"x0: %{x0}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{x0:$.2f}\". See <https://github.com/d3/d3-format/tree/v1.4.5#d3-format> for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{x0|%m %b %Y}\". See <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format> for details on the date formatting syntax. A single multiplication or division operation may be applied to numeric variables, and combined with d3 number formatting, for example \"Length in cm: %{x0*2.54}\", \"%{slope*60:.1f} meters per second.\" For log axes, variable values are given in log units. For date axes, x/y coordinate variables and center variables use datetimes, while all other variable values use values in ms. Finally, the template string has access to variables `x0`, `x1`, `y0`, `y1`, `slope`, `dx`, `dy`, `width`, `height`, `length`, `xcenter` and `ycenter`.",
                    "type": "string"
                  },
                  "xanchor": {
                    "description": "Sets the label's horizontal position anchor This anchor binds the specified `textposition` to the *left*, *center* or *right* of the label text. For example, if `textposition` is set to *top right* and `xanchor` to *right* then the right-most portion of the label text lines up with the right-most edge of the shape.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "auto",
                          "left",
                          "center",
                          "right"
                        ],
                        "default": "auto"
                      }
                    ]
                  },
                  "yanchor": {
                    "description": "Sets the label's vertical position anchor This anchor binds the specified `textposition` to the *top*, *middle* or *bottom* of the label text. For example, if `textposition` is set to *top right* and `yanchor` to *top* then the top-most portion of the label text lines up with the top-most edge of the shape.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "top",
                          "middle",
                          "bottom"
                        ]
                      }
                    ]
                  }
                },
                "additionalProperties": false
              },
              "layer": {
                "description": "Specifies whether shapes are drawn below gridlines (*below*), between gridlines and traces (*between*) or above traces (*above*).",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "enum": [
                      "below",
                      "above",
                      "between"
                    ],
                    "default": "above"
                  }
                ]
              },
              "legend": {
                "description": "Sets the reference to a legend to show this shape in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "string",
                    "default": "legend",
                    "pattern": "^legend([2-9]|[1-9][0-9]+)?$"
                  }
                ]
              },
              "legendgroup": {
                "default": "",
                "description": "Sets the legend group for this shape. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items.",
                "type": "string"
              },
              "legendgrouptitle": {
                "type": "object",
                "properties": {
                  "font": {
                    "type": "object",
                    "properties": {
                      "color": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      },
                      "family": {
                        "pattern": ".*\\S.*$",
                        "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                        "type": "string"
                      },
                      "lineposition": {
                        "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "oneOf": [
                              {
                                "type": "string",
                                "enum": [
                                  "none"
                                ]
                              },
                              {
                                "type": "string",
                                "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                              }
                            ],
                            "default": "none"
                          }
                        ]
                      },
                      "shadow": {
                        "default": "none",
                        "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                        "type": "string"
                      },
                      "size": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 1
                          }
                        ]
                      },
                      "style": {
                        "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "italic"
                            ],
                            "default": "normal"
                          }
                        ]
                      },
                      "textcase": {
                        "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "word caps",
                              "upper",
                              "lower"
                            ],
                            "default": "normal"
                          }
                        ]
                      },
                      "variant": {
                        "description": "Sets the variant of the font.",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "small-caps",
                              "all-small-caps",
                              "all-petite-caps",
                              "petite-caps",
                              "unicase"
                            ],
                            "default": "normal"
                          }
                        ]
                      },
                      "weight": {
                        "description": "Sets the weight (or boldness) of the font.",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 1000,
                            "default": "normal"
                          }
                        ]
                      }
                    },
                    "additionalProperties": false
                  },
                  "text": {
                    "default": "",
                    "description": "Sets the title of the legend group.",
                    "type": "string"
                  }
                },
                "additionalProperties": false
              },
              "legendrank": {
                "description": "Sets the legend rank for this shape. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "number",
                    "default": 1000
                  }
                ]
              },
              "legendwidth": {
                "description": "Sets the width (in px or fraction) of the legend for this shape.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "number",
                    "minimum": 0
                  }
                ]
              },
              "line": {
                "type": "object",
                "properties": {
                  "color": {
                    "description": "Sets the line color.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  },
                  "dash": {
                    "default": "solid",
                    "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).",
                    "type": "string"
                  },
                  "width": {
                    "description": "Sets the line width (in px).",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 0,
                        "default": 2
                      }
                    ]
                  }
                },
                "additionalProperties": false
              },
              "name": {
                "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.",
                "type": "string"
              },
              "opacity": {
                "description": "Sets the opacity of the shape.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 1,
                    "default": 1
                  }
                ]
              },
              "path": {
                "description": "For `type` *path* - a valid SVG path with the pixel values replaced by data values in `xsizemode`/`ysizemode` being *scaled* and taken unmodified as pixels relative to `xanchor` and `yanchor` in case of *pixel* size mode. There are a few restrictions / quirks only absolute instructions, not relative. So the allowed segments are: M, L, H, V, Q, C, T, S, and Z arcs (A) are not allowed because radius rx and ry are relative. In the future we could consider supporting relative commands, but we would have to decide on how to handle date and log axes. Note that even as is, Q and C Bezier paths that are smooth on linear axes may not be smooth on log, and vice versa. no chained \"polybezier\" commands - specify the segment type for each one. On category axes, values are numbers scaled to the serial numbers of categories because using the categories themselves there would be no way to describe fractional positions On data axes: because space and T are both normal components of path strings, we can't use either to separate date from time parts. Therefore we'll use underscore for this purpose: 2015-02-21_13:45:56.789",
                "type": "string"
              },
              "showlegend": {
                "description": "Determines whether or not this shape is shown in the legend.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "boolean",
                    "default": false
                  }
                ]
              },
              "templateitemname": {
                "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.",
                "type": "string"
              },
              "type": {
                "description": "Specifies the shape type to be drawn. If *line*, a line is drawn from (`x0`,`y0`) to (`x1`,`y1`) with respect to the axes' sizing mode. If *circle*, a circle is drawn from ((`x0`+`x1`)/2, (`y0`+`y1`)/2)) with radius (|(`x0`+`x1`)/2 - `x0`|, |(`y0`+`y1`)/2 -`y0`)|) with respect to the axes' sizing mode. If *rect*, a rectangle is drawn linking (`x0`,`y0`), (`x1`,`y0`), (`x1`,`y1`), (`x0`,`y1`), (`x0`,`y0`) with respect to the axes' sizing mode. If *path*, draw a custom SVG path using `path`. with respect to the axes' sizing mode.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "enum": [
                      "circle",
                      "rect",
                      "path",
                      "line"
                    ]
                  }
                ]
              },
              "visible": {
                "description": "Determines whether or not this shape is visible. If *legendonly*, the shape is not drawn, but can appear as a legend item (provided that the legend itself is visible).",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "enum": [
                      true,
                      false,
                      "legendonly"
                    ],
                    "default": true
                  }
                ]
              },
              "x0": {
                "description": "Sets the shape's starting x position. See `type` and `xsizemode` for more info."
              },
              "x0shift": {
                "description": "Shifts `x0` away from the center of the category when `xref` is a *category* or *multicategory* axis. -0.5 corresponds to the start of the category and 0.5 corresponds to the end of the category.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "number",
                    "minimum": -1,
                    "maximum": 1,
                    "default": 0
                  }
                ]
              },
              "x1": {
                "description": "Sets the shape's end x position. See `type` and `xsizemode` for more info."
              },
              "x1shift": {
                "description": "Shifts `x1` away from the center of the category when `xref` is a *category* or *multicategory* axis. -0.5 corresponds to the start of the category and 0.5 corresponds to the end of the category.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "number",
                    "minimum": -1,
                    "maximum": 1,
                    "default": 0
                  }
                ]
              },
              "xanchor": {
                "description": "Only relevant in conjunction with `xsizemode` set to *pixel*. Specifies the anchor point on the x axis to which `x0`, `x1` and x coordinates within `path` are relative to. E.g. useful to attach a pixel sized shape to a certain data value. No effect when `xsizemode` not set to *pixel*."
              },
              "xref": {
                "description": "Sets the shape's x coordinate axis. If set to a x axis id (e.g. *x* or *x2*), the `x` position refers to a x coordinate. If set to *paper*, the `x` position refers to the distance from the left of the plotting area in normalized coordinates where *0* (*1*) corresponds to the left (right). If set to a x axis ID followed by *domain* (separated by a space), the position behaves like for *paper*, but refers to the distance in fractions of the domain length from the left of the domain of that axis: e.g., *x2 domain* refers to the domain of the second x  axis and a x position of 0.5 refers to the point between the left and the right of the domain of the second x axis.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "oneOf": [
                      {
                        "type": "string",
                        "pattern": "^x([2-9]|[1-9][0-9]+)?( domain)?$"
                      },
                      {
                        "enum": [
                          "paper"
                        ]
                      }
                    ]
                  }
                ]
              },
              "xsizemode": {
                "description": "Sets the shapes's sizing mode along the x axis. If set to *scaled*, `x0`, `x1` and x coordinates within `path` refer to data values on the x axis or a fraction of the plot area's width (`xref` set to *paper*). If set to *pixel*, `xanchor` specifies the x position in terms of data or plot fraction but `x0`, `x1` and x coordinates within `path` are pixels relative to `xanchor`. This way, the shape can have a fixed width while maintaining a position relative to data or plot fraction.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "enum": [
                      "scaled",
                      "pixel"
                    ],
                    "default": "scaled"
                  }
                ]
              },
              "y0": {
                "description": "Sets the shape's starting y position. See `type` and `ysizemode` for more info."
              },
              "y0shift": {
                "description": "Shifts `y0` away from the center of the category when `yref` is a *category* or *multicategory* axis. -0.5 corresponds to the start of the category and 0.5 corresponds to the end of the category.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "number",
                    "minimum": -1,
                    "maximum": 1,
                    "default": 0
                  }
                ]
              },
              "y1": {
                "description": "Sets the shape's end y position. See `type` and `ysizemode` for more info."
              },
              "y1shift": {
                "description": "Shifts `y1` away from the center of the category when `yref` is a *category* or *multicategory* axis. -0.5 corresponds to the start of the category and 0.5 corresponds to the end of the category.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "number",
                    "minimum": -1,
                    "maximum": 1,
                    "default": 0
                  }
                ]
              },
              "yanchor": {
                "description": "Only relevant in conjunction with `ysizemode` set to *pixel*. Specifies the anchor point on the y axis to which `y0`, `y1` and y coordinates within `path` are relative to. E.g. useful to attach a pixel sized shape to a certain data value. No effect when `ysizemode` not set to *pixel*."
              },
              "yref": {
                "description": "Sets the shape's y coordinate axis. If set to a y axis id (e.g. *y* or *y2*), the `y` position refers to a y coordinate. If set to *paper*, the `y` position refers to the distance from the bottom of the plotting area in normalized coordinates where *0* (*1*) corresponds to the bottom (top). If set to a y axis ID followed by *domain* (separated by a space), the position behaves like for *paper*, but refers to the distance in fractions of the domain length from the bottom of the domain of that axis: e.g., *y2 domain* refers to the domain of the second y  axis and a y position of 0.5 refers to the point between the bottom and the top of the domain of the second y axis.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "oneOf": [
                      {
                        "type": "string",
                        "pattern": "^y([2-9]|[1-9][0-9]+)?( domain)?$"
                      },
                      {
                        "enum": [
                          "paper"
                        ]
                      }
                    ]
                  }
                ]
              },
              "ysizemode": {
                "description": "Sets the shapes's sizing mode along the y axis. If set to *scaled*, `y0`, `y1` and y coordinates within `path` refer to data values on the y axis or a fraction of the plot area's height (`yref` set to *paper*). If set to *pixel*, `yanchor` specifies the y position in terms of data or plot fraction but `y0`, `y1` and y coordinates within `path` are pixels relative to `yanchor`. This way, the shape can have a fixed height while maintaining a position relative to data or plot fraction.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "enum": [
                      "scaled",
                      "pixel"
                    ],
                    "default": "scaled"
                  }
                ]
              }
            },
            "additionalProperties": false
          },
          "minItems": 1
        },
        "showlegend": {
          "description": "Determines whether or not a legend is drawn. Default is `true` if there is a trace to show and any of these: a) Two or more traces would by default be shown in the legend. b) One pie trace is shown in the legend. c) One trace is explicitly given with `showlegend: true`.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean"
            }
          ]
        },
        "sliders": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "active": {
                "description": "Determines which button (by index starting from 0) is considered active.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "number",
                    "minimum": 0,
                    "default": 0
                  }
                ]
              },
              "activebgcolor": {
                "description": "Sets the background color of the slider grip while dragging.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "$ref": "#/$defs/color"
                  }
                ]
              },
              "bgcolor": {
                "description": "Sets the background color of the slider.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "$ref": "#/$defs/color"
                  }
                ]
              },
              "bordercolor": {
                "description": "Sets the color of the border enclosing the slider.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "$ref": "#/$defs/color"
                  }
                ]
              },
              "borderwidth": {
                "description": "Sets the width (in px) of the border enclosing the slider.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "number",
                    "minimum": 0,
                    "default": 1
                  }
                ]
              },
              "currentvalue": {
                "type": "object",
                "properties": {
                  "font": {
                    "type": "object",
                    "properties": {
                      "color": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      },
                      "family": {
                        "pattern": ".*\\S.*$",
                        "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                        "type": "string"
                      },
                      "lineposition": {
                        "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "oneOf": [
                              {
                                "type": "string",
                                "enum": [
                                  "none"
                                ]
                              },
                              {
                                "type": "string",
                                "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                              }
                            ],
                            "default": "none"
                          }
                        ]
                      },
                      "shadow": {
                        "default": "none",
                        "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                        "type": "string"
                      },
                      "size": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 1
                          }
                        ]
                      },
                      "style": {
                        "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "italic"
                            ],
                            "default": "normal"
                          }
                        ]
                      },
                      "textcase": {
                        "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "word caps",
                              "upper",
                              "lower"
                            ],
                            "default": "normal"
                          }
                        ]
                      },
                      "variant": {
                        "description": "Sets the variant of the font.",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "small-caps",
                              "all-small-caps",
                              "all-petite-caps",
                              "petite-caps",
                              "unicase"
                            ],
                            "default": "normal"
                          }
                        ]
                      },
                      "weight": {
                        "description": "Sets the weight (or boldness) of the font.",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 1000,
                            "default": "normal"
                          }
                        ]
                      }
                    },
                    "additionalProperties": false
                  },
                  "offset": {
                    "description": "The amount of space, in pixels, between the current value label and the slider.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "default": 10
                      }
                    ]
                  },
                  "prefix": {
                    "description": "When currentvalue.visible is true, this sets the prefix of the label.",
                    "type": "string"
                  },
                  "suffix": {
                    "description": "When currentvalue.visible is true, this sets the suffix of the label.",
                    "type": "string"
                  },
                  "visible": {
                    "description": "Shows the currently-selected value above the slider.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "boolean",
                        "default": true
                      }
                    ]
                  },
                  "xanchor": {
                    "description": "The alignment of the value readout relative to the length of the slider.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "left",
                          "center",
                          "right"
                        ],
                        "default": "left"
                      }
                    ]
                  }
                },
                "additionalProperties": false
              },
              "font": {
                "type": "object",
                "properties": {
                  "color": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  },
                  "family": {
                    "pattern": ".*\\S.*$",
                    "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                    "type": "string"
                  },
                  "lineposition": {
                    "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "oneOf": [
                          {
                            "type": "string",
                            "enum": [
                              "none"
                            ]
                          },
                          {
                            "type": "string",
                            "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                          }
                        ],
                        "default": "none"
                      }
                    ]
                  },
                  "shadow": {
                    "default": "none",
                    "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                    "type": "string"
                  },
                  "size": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 1
                      }
                    ]
                  },
                  "style": {
                    "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "italic"
                        ],
                        "default": "normal"
                      }
                    ]
                  },
                  "textcase": {
                    "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "word caps",
                          "upper",
                          "lower"
                        ],
                        "default": "normal"
                      }
                    ]
                  },
                  "variant": {
                    "description": "Sets the variant of the font.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "small-caps",
                          "all-small-caps",
                          "all-petite-caps",
                          "petite-caps",
                          "unicase"
                        ],
                        "default": "normal"
                      }
                    ]
                  },
                  "weight": {
                    "description": "Sets the weight (or boldness) of the font.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 1000,
                        "default": "normal"
                      }
                    ]
                  }
                },
                "additionalProperties": false
              },
              "len": {
                "description": "Sets the length of the slider This measure excludes the padding of both ends. That is, the slider's length is this length minus the padding on both ends.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "number",
                    "minimum": 0,
                    "default": 1
                  }
                ]
              },
              "lenmode": {
                "description": "Determines whether this slider length is set in units of plot *fraction* or in *pixels. Use `len` to set the value.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "enum": [
                      "fraction",
                      "pixels"
                    ],
                    "default": "fraction"
                  }
                ]
              },
              "minorticklen": {
                "description": "Sets the length in pixels of minor step tick marks",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "number",
                    "minimum": 0,
                    "default": 4
                  }
                ]
              },
              "name": {
                "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.",
                "type": "string"
              },
              "pad": {
                "type": "object",
                "properties": {
                  "b": {
                    "description": "The amount of padding (in px) along the bottom of the component.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "default": 0
                      }
                    ]
                  },
                  "l": {
                    "description": "The amount of padding (in px) on the left side of the component.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "default": 0
                      }
                    ]
                  },
                  "r": {
                    "description": "The amount of padding (in px) on the right side of the component.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "default": 0
                      }
                    ]
                  },
                  "t": {
                    "description": "The amount of padding (in px) along the top of the component.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "default": 20
                      }
                    ]
                  }
                },
                "additionalProperties": false
              },
              "steps": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "args": {
                      "description": "Sets the arguments values to be passed to the Plotly method set in `method` on slide.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "array",
                          "items": {},
                          "minItems": 1
                        }
                      ]
                    },
                    "execute": {
                      "description": "When true, the API method is executed. When false, all other behaviors are the same and command execution is skipped. This may be useful when hooking into, for example, the `plotly_sliderchange` method and executing the API command manually without losing the benefit of the slider automatically binding to the state of the plot through the specification of `method` and `args`.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "boolean",
                          "default": true
                        }
                      ]
                    },
                    "label": {
                      "description": "Sets the text label to appear on the slider",
                      "type": "string"
                    },
                    "method": {
                      "description": "Sets the Plotly method to be called when the slider value is changed. If the `skip` method is used, the API slider will function as normal but will perform no API calls and will not bind automatically to state updates. This may be used to create a component interface and attach to slider events manually via JavaScript.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "restyle",
                            "relayout",
                            "animate",
                            "update",
                            "skip"
                          ],
                          "default": "restyle"
                        }
                      ]
                    },
                    "name": {
                      "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.",
                      "type": "string"
                    },
                    "templateitemname": {
                      "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.",
                      "type": "string"
                    },
                    "value": {
                      "description": "Sets the value of the slider step, used to refer to the step programatically. Defaults to the slider label if not provided.",
                      "type": "string"
                    },
                    "visible": {
                      "description": "Determines whether or not this step is included in the slider.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "boolean",
                          "default": true
                        }
                      ]
                    }
                  },
                  "additionalProperties": false
                },
                "minItems": 1
              },
              "templateitemname": {
                "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.",
                "type": "string"
              },
              "tickcolor": {
                "description": "Sets the color of the border enclosing the slider.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "$ref": "#/$defs/color"
                  }
                ]
              },
              "ticklen": {
                "description": "Sets the length in pixels of step tick marks",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "number",
                    "minimum": 0,
                    "default": 7
                  }
                ]
              },
              "tickwidth": {
                "description": "Sets the tick width (in px).",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "number",
                    "minimum": 0,
                    "default": 1
                  }
                ]
              },
              "transition": {
                "type": "object",
                "properties": {
                  "duration": {
                    "description": "Sets the duration of the slider transition",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 0,
                        "default": 150
                      }
                    ]
                  },
                  "easing": {
                    "description": "Sets the easing function of the slider transition",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "linear",
                          "quad",
                          "cubic",
                          "sin",
                          "exp",
                          "circle",
                          "elastic",
                          "back",
                          "bounce",
                          "linear-in",
                          "quad-in",
                          "cubic-in",
                          "sin-in",
                          "exp-in",
                          "circle-in",
                          "elastic-in",
                          "back-in",
                          "bounce-in",
                          "linear-out",
                          "quad-out",
                          "cubic-out",
                          "sin-out",
                          "exp-out",
                          "circle-out",
                          "elastic-out",
                          "back-out",
                          "bounce-out",
                          "linear-in-out",
                          "quad-in-out",
                          "cubic-in-out",
                          "sin-in-out",
                          "exp-in-out",
                          "circle-in-out",
                          "elastic-in-out",
                          "back-in-out",
                          "bounce-in-out"
                        ],
                        "default": "cubic-in-out"
                      }
                    ]
                  }
                },
                "additionalProperties": false
              },
              "visible": {
                "description": "Determines whether or not the slider is visible.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "boolean",
                    "default": true
                  }
                ]
              },
              "x": {
                "description": "Sets the x position (in normalized coordinates) of the slider.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "number",
                    "minimum": -2,
                    "maximum": 3,
                    "default": 0
                  }
                ]
              },
              "xanchor": {
                "description": "Sets the slider's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the range selector.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "enum": [
                      "auto",
                      "left",
                      "center",
                      "right"
                    ],
                    "default": "left"
                  }
                ]
              },
              "y": {
                "description": "Sets the y position (in normalized coordinates) of the slider.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "number",
                    "minimum": -2,
                    "maximum": 3,
                    "default": 0
                  }
                ]
              },
              "yanchor": {
                "description": "Sets the slider's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the range selector.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "enum": [
                      "auto",
                      "top",
                      "middle",
                      "bottom"
                    ],
                    "default": "top"
                  }
                ]
              }
            },
            "additionalProperties": false
          },
          "minItems": 1
        },
        "smith": {
          "type": "object",
          "properties": {
            "bgcolor": {
              "description": "Set the background color of the subplot",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "domain": {
              "type": "object",
              "properties": {
                "column": {
                  "description": "If there is a layout grid, use the domain for this column in the grid for this smith subplot .",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 0,
                      "default": 0
                    }
                  ]
                },
                "row": {
                  "description": "If there is a layout grid, use the domain for this row in the grid for this smith subplot .",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 0,
                      "default": 0
                    }
                  ]
                },
                "x": {
                  "description": "Sets the horizontal domain of this smith subplot (in plot fraction).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 0,
                            "maximum": 1
                          }
                        ]
                      },
                      "minItems": 2,
                      "maxItems": 2,
                      "default": [
                        0,
                        1
                      ]
                    }
                  ]
                },
                "y": {
                  "description": "Sets the vertical domain of this smith subplot (in plot fraction).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 0,
                            "maximum": 1
                          }
                        ]
                      },
                      "minItems": 2,
                      "maxItems": 2,
                      "default": [
                        0,
                        1
                      ]
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "imaginaryaxis": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets default for all colors associated with this axis all at once: line, font, tick, and grid colors. Grid color is lightened by blending this with the plot background Individual pieces can override this.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "gridcolor": {
                  "description": "Sets the color of the grid lines.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "griddash": {
                  "default": "solid",
                  "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).",
                  "type": "string"
                },
                "gridwidth": {
                  "description": "Sets the width (in px) of the grid lines.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "hoverformat": {
                  "default": "",
                  "description": "Sets the hover text formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*",
                  "type": "string"
                },
                "labelalias": {
                  "default": false,
                  "description": "Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax."
                },
                "layer": {
                  "description": "Sets the layer on which this axis is displayed. If *above traces*, this axis is displayed above all the subplot's traces If *below traces*, this axis is displayed below all the subplot's traces, but above the grid lines. Useful when used together with scatter-like traces with `cliponaxis` set to *false* to show markers and/or text nodes above this axis.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "above traces",
                        "below traces"
                      ],
                      "default": "above traces"
                    }
                  ]
                },
                "linecolor": {
                  "description": "Sets the axis line color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "linewidth": {
                  "description": "Sets the width (in px) of the axis line.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "showgrid": {
                  "description": "Determines whether or not grid lines are drawn. If *true*, the grid lines are drawn at every tick mark.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                },
                "showline": {
                  "description": "Determines whether or not a line bounding this axis is drawn.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                },
                "showticklabels": {
                  "description": "Determines whether or not the tick labels are drawn.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                },
                "showtickprefix": {
                  "description": "If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "showticksuffix": {
                  "description": "Same as `showtickprefix` but for tick suffixes.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "tickcolor": {
                  "description": "Sets the tick color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "tickfont": {
                  "type": "object",
                  "properties": {
                    "color": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    "family": {
                      "pattern": ".*\\S.*$",
                      "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                      "type": "string"
                    },
                    "lineposition": {
                      "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    "shadow": {
                      "default": "none",
                      "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                      "type": "string"
                    },
                    "size": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    "style": {
                      "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "textcase": {
                      "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "variant": {
                      "description": "Sets the variant of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "weight": {
                      "description": "Sets the weight (or boldness) of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    }
                  },
                  "additionalProperties": false
                },
                "tickformat": {
                  "default": "",
                  "description": "Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*",
                  "type": "string"
                },
                "ticklen": {
                  "description": "Sets the tick length (in px).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 5
                    }
                  ]
                },
                "tickprefix": {
                  "default": "",
                  "description": "Sets a tick label prefix.",
                  "type": "string"
                },
                "ticks": {
                  "description": "Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "outside",
                        "inside",
                        ""
                      ]
                    }
                  ]
                },
                "ticksuffix": {
                  "default": "",
                  "description": "Sets a tick label suffix.",
                  "type": "string"
                },
                "tickvals": {
                  "description": "Sets the values at which ticks on this axis appear. Defaults to `realaxis.tickvals` plus the same as negatives and zero.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "string"
                          }
                        ]
                      }
                    }
                  ]
                },
                "tickvalssrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.",
                  "type": "string"
                },
                "tickwidth": {
                  "description": "Sets the tick width (in px).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 2
                    }
                  ]
                },
                "visible": {
                  "description": "A single toggle to hide the axis while preserving interaction like dragging. Default is true when a cheater plot is present on the axis, otherwise false",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "realaxis": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets default for all colors associated with this axis all at once: line, font, tick, and grid colors. Grid color is lightened by blending this with the plot background Individual pieces can override this.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "gridcolor": {
                  "description": "Sets the color of the grid lines.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "griddash": {
                  "default": "solid",
                  "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).",
                  "type": "string"
                },
                "gridwidth": {
                  "description": "Sets the width (in px) of the grid lines.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "hoverformat": {
                  "default": "",
                  "description": "Sets the hover text formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*",
                  "type": "string"
                },
                "labelalias": {
                  "default": false,
                  "description": "Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax."
                },
                "layer": {
                  "description": "Sets the layer on which this axis is displayed. If *above traces*, this axis is displayed above all the subplot's traces If *below traces*, this axis is displayed below all the subplot's traces, but above the grid lines. Useful when used together with scatter-like traces with `cliponaxis` set to *false* to show markers and/or text nodes above this axis.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "above traces",
                        "below traces"
                      ],
                      "default": "above traces"
                    }
                  ]
                },
                "linecolor": {
                  "description": "Sets the axis line color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "linewidth": {
                  "description": "Sets the width (in px) of the axis line.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "showgrid": {
                  "description": "Determines whether or not grid lines are drawn. If *true*, the grid lines are drawn at every tick mark.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                },
                "showline": {
                  "description": "Determines whether or not a line bounding this axis is drawn.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                },
                "showticklabels": {
                  "description": "Determines whether or not the tick labels are drawn.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                },
                "showtickprefix": {
                  "description": "If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "showticksuffix": {
                  "description": "Same as `showtickprefix` but for tick suffixes.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "side": {
                  "description": "Determines on which side of real axis line the tick and tick labels appear.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "top",
                        "bottom"
                      ],
                      "default": "top"
                    }
                  ]
                },
                "tickangle": {
                  "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": -180,
                      "maximum": 180,
                      "default": 90
                    }
                  ]
                },
                "tickcolor": {
                  "description": "Sets the tick color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "tickfont": {
                  "type": "object",
                  "properties": {
                    "color": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    "family": {
                      "pattern": ".*\\S.*$",
                      "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                      "type": "string"
                    },
                    "lineposition": {
                      "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    "shadow": {
                      "default": "none",
                      "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                      "type": "string"
                    },
                    "size": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    "style": {
                      "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "textcase": {
                      "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "variant": {
                      "description": "Sets the variant of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "weight": {
                      "description": "Sets the weight (or boldness) of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    }
                  },
                  "additionalProperties": false
                },
                "tickformat": {
                  "default": "",
                  "description": "Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*",
                  "type": "string"
                },
                "ticklen": {
                  "description": "Sets the tick length (in px).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 5
                    }
                  ]
                },
                "tickprefix": {
                  "default": "",
                  "description": "Sets a tick label prefix.",
                  "type": "string"
                },
                "ticks": {
                  "description": "Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *top* (*bottom*), this axis' are drawn above (below) the axis line.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "top",
                        "bottom",
                        ""
                      ]
                    }
                  ]
                },
                "ticksuffix": {
                  "default": "",
                  "description": "Sets a tick label suffix.",
                  "type": "string"
                },
                "tickvals": {
                  "description": "Sets the values at which ticks on this axis appear.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "string"
                          }
                        ]
                      },
                      "default": [
                        0.2,
                        0.5,
                        1,
                        2,
                        5
                      ]
                    }
                  ]
                },
                "tickvalssrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.",
                  "type": "string"
                },
                "tickwidth": {
                  "description": "Sets the tick width (in px).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 2
                    }
                  ]
                },
                "visible": {
                  "description": "A single toggle to hide the axis while preserving interaction like dragging. Default is true when a cheater plot is present on the axis, otherwise false",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                }
              },
              "additionalProperties": false
            }
          },
          "additionalProperties": false
        },
        "spikedistance": {
          "description": "Sets the default distance (in pixels) to look for data to draw spikelines to (-1 means no cutoff, 0 means no looking for data). As with hoverdistance, distance does not apply to area-like objects. In addition, some objects can be hovered on but will not generate spikelines, such as scatter fills.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "integer",
              "minimum": -1,
              "default": -1
            }
          ]
        },
        "template": {
          "description": "Default attributes to be applied to the plot. Templates can be created from existing plots using `Plotly.makeTemplate`, or created manually. They should be objects with format: `{layout: layoutTemplate, data: {[type]: [traceTemplate, ...]}, ...}` `layoutTemplate` and `traceTemplate` are objects matching the attribute structure of `layout` and a data trace.  Trace templates are applied cyclically to traces of each type. Container arrays (eg `annotations`) have special handling: An object ending in `defaults` (eg `annotationdefaults`) is applied to each array item. But if an item has a `templateitemname` key we look in the template array for an item with matching `name` and apply that instead. If no matching `name` is found we mark the item invisible. Any named template item not referenced is appended to the end of the array, so you can use this for a watermark annotation or a logo image, for example. To omit one of these items on the plot, make an item with matching `templateitemname` and `visible: false`."
        },
        "ternary": {
          "type": "object",
          "properties": {
            "aaxis": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets default for all colors associated with this axis all at once: line, font, tick, and grid colors. Grid color is lightened by blending this with the plot background Individual pieces can override this.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "dtick": {
                  "description": "Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L<f>*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M<n>* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48*"
                },
                "exponentformat": {
                  "description": "Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "none",
                        "e",
                        "E",
                        "power",
                        "SI",
                        "B"
                      ],
                      "default": "B"
                    }
                  ]
                },
                "gridcolor": {
                  "description": "Sets the color of the grid lines.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "griddash": {
                  "default": "solid",
                  "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).",
                  "type": "string"
                },
                "gridwidth": {
                  "description": "Sets the width (in px) of the grid lines.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "hoverformat": {
                  "default": "",
                  "description": "Sets the hover text formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*",
                  "type": "string"
                },
                "labelalias": {
                  "default": false,
                  "description": "Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax."
                },
                "layer": {
                  "description": "Sets the layer on which this axis is displayed. If *above traces*, this axis is displayed above all the subplot's traces If *below traces*, this axis is displayed below all the subplot's traces, but above the grid lines. Useful when used together with scatter-like traces with `cliponaxis` set to *false* to show markers and/or text nodes above this axis.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "above traces",
                        "below traces"
                      ],
                      "default": "above traces"
                    }
                  ]
                },
                "linecolor": {
                  "description": "Sets the axis line color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "linewidth": {
                  "description": "Sets the width (in px) of the axis line.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "min": {
                  "description": "The minimum value visible on this axis. The maximum is determined by the sum minus the minimum values of the other two axes. The full view corresponds to all the minima set to zero.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 0
                    }
                  ]
                },
                "minexponent": {
                  "description": "Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 3
                    }
                  ]
                },
                "nticks": {
                  "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "default": 6
                    }
                  ]
                },
                "separatethousands": {
                  "description": "If \"true\", even 4-digit integers are separated",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": false
                    }
                  ]
                },
                "showexponent": {
                  "description": "If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "showgrid": {
                  "description": "Determines whether or not grid lines are drawn. If *true*, the grid lines are drawn at every tick mark.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                },
                "showline": {
                  "description": "Determines whether or not a line bounding this axis is drawn.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                },
                "showticklabels": {
                  "description": "Determines whether or not the tick labels are drawn.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                },
                "showtickprefix": {
                  "description": "If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "showticksuffix": {
                  "description": "Same as `showtickprefix` but for tick suffixes.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "tick0": {
                  "description": "Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L<f>* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears."
                },
                "tickangle": {
                  "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": -180,
                      "maximum": 180,
                      "default": "auto"
                    }
                  ]
                },
                "tickcolor": {
                  "description": "Sets the tick color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "tickfont": {
                  "type": "object",
                  "properties": {
                    "color": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    "family": {
                      "pattern": ".*\\S.*$",
                      "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                      "type": "string"
                    },
                    "lineposition": {
                      "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    "shadow": {
                      "default": "none",
                      "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                      "type": "string"
                    },
                    "size": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    "style": {
                      "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "textcase": {
                      "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "variant": {
                      "description": "Sets the variant of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "weight": {
                      "description": "Sets the weight (or boldness) of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    }
                  },
                  "additionalProperties": false
                },
                "tickformat": {
                  "default": "",
                  "description": "Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*",
                  "type": "string"
                },
                "tickformatstops": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "dtickrange": {
                        "description": "range [*min*, *max*], where *min*, *max* - dtick values which describe some zoom level, it is possible to omit *min* or *max* value by passing *null*",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "array",
                            "items": {},
                            "minItems": 2,
                            "maxItems": 2
                          }
                        ]
                      },
                      "enabled": {
                        "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "boolean",
                            "default": true
                          }
                        ]
                      },
                      "name": {
                        "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.",
                        "type": "string"
                      },
                      "templateitemname": {
                        "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.",
                        "type": "string"
                      },
                      "value": {
                        "default": "",
                        "description": "string - dtickformat for described zoom level, the same as *tickformat*",
                        "type": "string"
                      }
                    },
                    "additionalProperties": false
                  },
                  "minItems": 1
                },
                "ticklabelstep": {
                  "description": "Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "default": 1
                    }
                  ]
                },
                "ticklen": {
                  "description": "Sets the tick length (in px).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 5
                    }
                  ]
                },
                "tickmode": {
                  "description": "Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "auto",
                        "linear",
                        "array"
                      ]
                    }
                  ]
                },
                "tickprefix": {
                  "default": "",
                  "description": "Sets a tick label prefix.",
                  "type": "string"
                },
                "ticks": {
                  "description": "Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "outside",
                        "inside",
                        ""
                      ]
                    }
                  ]
                },
                "ticksuffix": {
                  "default": "",
                  "description": "Sets a tick label suffix.",
                  "type": "string"
                },
                "ticktext": {
                  "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "string"
                          }
                        ]
                      }
                    }
                  ]
                },
                "ticktextsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.",
                  "type": "string"
                },
                "tickvals": {
                  "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "string"
                          }
                        ]
                      }
                    }
                  ]
                },
                "tickvalssrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.",
                  "type": "string"
                },
                "tickwidth": {
                  "description": "Sets the tick width (in px).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "title": {
                  "type": "object",
                  "properties": {
                    "font": {
                      "type": "object",
                      "properties": {
                        "color": {
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "$ref": "#/$defs/color"
                            }
                          ]
                        },
                        "family": {
                          "pattern": ".*\\S.*$",
                          "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                          "type": "string"
                        },
                        "lineposition": {
                          "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "oneOf": [
                                {
                                  "type": "string",
                                  "enum": [
                                    "none"
                                  ]
                                },
                                {
                                  "type": "string",
                                  "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                                }
                              ],
                              "default": "none"
                            }
                          ]
                        },
                        "shadow": {
                          "default": "none",
                          "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                          "type": "string"
                        },
                        "size": {
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "type": "number",
                              "minimum": 1
                            }
                          ]
                        },
                        "style": {
                          "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "italic"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "textcase": {
                          "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "word caps",
                                "upper",
                                "lower"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "variant": {
                          "description": "Sets the variant of the font.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "small-caps",
                                "all-small-caps",
                                "all-petite-caps",
                                "petite-caps",
                                "unicase"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "weight": {
                          "description": "Sets the weight (or boldness) of the font.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "type": "integer",
                              "minimum": 1,
                              "maximum": 1000,
                              "default": "normal"
                            }
                          ]
                        }
                      },
                      "additionalProperties": false
                    },
                    "text": {
                      "description": "Sets the title of this axis.",
                      "type": "string"
                    }
                  },
                  "additionalProperties": false
                },
                "uirevision": {
                  "description": "Controls persistence of user-driven changes in axis `min`, and `title` if in `editable: true` configuration. Defaults to `ternary<N>.uirevision`."
                }
              },
              "additionalProperties": false
            },
            "baxis": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets default for all colors associated with this axis all at once: line, font, tick, and grid colors. Grid color is lightened by blending this with the plot background Individual pieces can override this.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "dtick": {
                  "description": "Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L<f>*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M<n>* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48*"
                },
                "exponentformat": {
                  "description": "Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "none",
                        "e",
                        "E",
                        "power",
                        "SI",
                        "B"
                      ],
                      "default": "B"
                    }
                  ]
                },
                "gridcolor": {
                  "description": "Sets the color of the grid lines.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "griddash": {
                  "default": "solid",
                  "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).",
                  "type": "string"
                },
                "gridwidth": {
                  "description": "Sets the width (in px) of the grid lines.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "hoverformat": {
                  "default": "",
                  "description": "Sets the hover text formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*",
                  "type": "string"
                },
                "labelalias": {
                  "default": false,
                  "description": "Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax."
                },
                "layer": {
                  "description": "Sets the layer on which this axis is displayed. If *above traces*, this axis is displayed above all the subplot's traces If *below traces*, this axis is displayed below all the subplot's traces, but above the grid lines. Useful when used together with scatter-like traces with `cliponaxis` set to *false* to show markers and/or text nodes above this axis.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "above traces",
                        "below traces"
                      ],
                      "default": "above traces"
                    }
                  ]
                },
                "linecolor": {
                  "description": "Sets the axis line color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "linewidth": {
                  "description": "Sets the width (in px) of the axis line.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "min": {
                  "description": "The minimum value visible on this axis. The maximum is determined by the sum minus the minimum values of the other two axes. The full view corresponds to all the minima set to zero.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 0
                    }
                  ]
                },
                "minexponent": {
                  "description": "Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 3
                    }
                  ]
                },
                "nticks": {
                  "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "default": 6
                    }
                  ]
                },
                "separatethousands": {
                  "description": "If \"true\", even 4-digit integers are separated",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": false
                    }
                  ]
                },
                "showexponent": {
                  "description": "If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "showgrid": {
                  "description": "Determines whether or not grid lines are drawn. If *true*, the grid lines are drawn at every tick mark.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                },
                "showline": {
                  "description": "Determines whether or not a line bounding this axis is drawn.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                },
                "showticklabels": {
                  "description": "Determines whether or not the tick labels are drawn.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                },
                "showtickprefix": {
                  "description": "If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "showticksuffix": {
                  "description": "Same as `showtickprefix` but for tick suffixes.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "tick0": {
                  "description": "Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L<f>* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears."
                },
                "tickangle": {
                  "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": -180,
                      "maximum": 180,
                      "default": "auto"
                    }
                  ]
                },
                "tickcolor": {
                  "description": "Sets the tick color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "tickfont": {
                  "type": "object",
                  "properties": {
                    "color": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    "family": {
                      "pattern": ".*\\S.*$",
                      "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                      "type": "string"
                    },
                    "lineposition": {
                      "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    "shadow": {
                      "default": "none",
                      "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                      "type": "string"
                    },
                    "size": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    "style": {
                      "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "textcase": {
                      "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "variant": {
                      "description": "Sets the variant of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "weight": {
                      "description": "Sets the weight (or boldness) of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    }
                  },
                  "additionalProperties": false
                },
                "tickformat": {
                  "default": "",
                  "description": "Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*",
                  "type": "string"
                },
                "tickformatstops": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "dtickrange": {
                        "description": "range [*min*, *max*], where *min*, *max* - dtick values which describe some zoom level, it is possible to omit *min* or *max* value by passing *null*",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "array",
                            "items": {},
                            "minItems": 2,
                            "maxItems": 2
                          }
                        ]
                      },
                      "enabled": {
                        "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "boolean",
                            "default": true
                          }
                        ]
                      },
                      "name": {
                        "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.",
                        "type": "string"
                      },
                      "templateitemname": {
                        "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.",
                        "type": "string"
                      },
                      "value": {
                        "default": "",
                        "description": "string - dtickformat for described zoom level, the same as *tickformat*",
                        "type": "string"
                      }
                    },
                    "additionalProperties": false
                  },
                  "minItems": 1
                },
                "ticklabelstep": {
                  "description": "Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "default": 1
                    }
                  ]
                },
                "ticklen": {
                  "description": "Sets the tick length (in px).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 5
                    }
                  ]
                },
                "tickmode": {
                  "description": "Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "auto",
                        "linear",
                        "array"
                      ]
                    }
                  ]
                },
                "tickprefix": {
                  "default": "",
                  "description": "Sets a tick label prefix.",
                  "type": "string"
                },
                "ticks": {
                  "description": "Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "outside",
                        "inside",
                        ""
                      ]
                    }
                  ]
                },
                "ticksuffix": {
                  "default": "",
                  "description": "Sets a tick label suffix.",
                  "type": "string"
                },
                "ticktext": {
                  "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "string"
                          }
                        ]
                      }
                    }
                  ]
                },
                "ticktextsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.",
                  "type": "string"
                },
                "tickvals": {
                  "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "string"
                          }
                        ]
                      }
                    }
                  ]
                },
                "tickvalssrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.",
                  "type": "string"
                },
                "tickwidth": {
                  "description": "Sets the tick width (in px).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "title": {
                  "type": "object",
                  "properties": {
                    "font": {
                      "type": "object",
                      "properties": {
                        "color": {
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "$ref": "#/$defs/color"
                            }
                          ]
                        },
                        "family": {
                          "pattern": ".*\\S.*$",
                          "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                          "type": "string"
                        },
                        "lineposition": {
                          "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "oneOf": [
                                {
                                  "type": "string",
                                  "enum": [
                                    "none"
                                  ]
                                },
                                {
                                  "type": "string",
                                  "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                                }
                              ],
                              "default": "none"
                            }
                          ]
                        },
                        "shadow": {
                          "default": "none",
                          "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                          "type": "string"
                        },
                        "size": {
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "type": "number",
                              "minimum": 1
                            }
                          ]
                        },
                        "style": {
                          "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "italic"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "textcase": {
                          "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "word caps",
                                "upper",
                                "lower"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "variant": {
                          "description": "Sets the variant of the font.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "small-caps",
                                "all-small-caps",
                                "all-petite-caps",
                                "petite-caps",
                                "unicase"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "weight": {
                          "description": "Sets the weight (or boldness) of the font.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "type": "integer",
                              "minimum": 1,
                              "maximum": 1000,
                              "default": "normal"
                            }
                          ]
                        }
                      },
                      "additionalProperties": false
                    },
                    "text": {
                      "description": "Sets the title of this axis.",
                      "type": "string"
                    }
                  },
                  "additionalProperties": false
                },
                "uirevision": {
                  "description": "Controls persistence of user-driven changes in axis `min`, and `title` if in `editable: true` configuration. Defaults to `ternary<N>.uirevision`."
                }
              },
              "additionalProperties": false
            },
            "bgcolor": {
              "description": "Set the background color of the subplot",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "caxis": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets default for all colors associated with this axis all at once: line, font, tick, and grid colors. Grid color is lightened by blending this with the plot background Individual pieces can override this.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "dtick": {
                  "description": "Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L<f>*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M<n>* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48*"
                },
                "exponentformat": {
                  "description": "Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "none",
                        "e",
                        "E",
                        "power",
                        "SI",
                        "B"
                      ],
                      "default": "B"
                    }
                  ]
                },
                "gridcolor": {
                  "description": "Sets the color of the grid lines.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "griddash": {
                  "default": "solid",
                  "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).",
                  "type": "string"
                },
                "gridwidth": {
                  "description": "Sets the width (in px) of the grid lines.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "hoverformat": {
                  "default": "",
                  "description": "Sets the hover text formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*",
                  "type": "string"
                },
                "labelalias": {
                  "default": false,
                  "description": "Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax."
                },
                "layer": {
                  "description": "Sets the layer on which this axis is displayed. If *above traces*, this axis is displayed above all the subplot's traces If *below traces*, this axis is displayed below all the subplot's traces, but above the grid lines. Useful when used together with scatter-like traces with `cliponaxis` set to *false* to show markers and/or text nodes above this axis.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "above traces",
                        "below traces"
                      ],
                      "default": "above traces"
                    }
                  ]
                },
                "linecolor": {
                  "description": "Sets the axis line color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "linewidth": {
                  "description": "Sets the width (in px) of the axis line.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "min": {
                  "description": "The minimum value visible on this axis. The maximum is determined by the sum minus the minimum values of the other two axes. The full view corresponds to all the minima set to zero.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 0
                    }
                  ]
                },
                "minexponent": {
                  "description": "Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 3
                    }
                  ]
                },
                "nticks": {
                  "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "default": 6
                    }
                  ]
                },
                "separatethousands": {
                  "description": "If \"true\", even 4-digit integers are separated",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": false
                    }
                  ]
                },
                "showexponent": {
                  "description": "If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "showgrid": {
                  "description": "Determines whether or not grid lines are drawn. If *true*, the grid lines are drawn at every tick mark.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                },
                "showline": {
                  "description": "Determines whether or not a line bounding this axis is drawn.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                },
                "showticklabels": {
                  "description": "Determines whether or not the tick labels are drawn.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                },
                "showtickprefix": {
                  "description": "If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "showticksuffix": {
                  "description": "Same as `showtickprefix` but for tick suffixes.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "tick0": {
                  "description": "Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L<f>* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears."
                },
                "tickangle": {
                  "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": -180,
                      "maximum": 180,
                      "default": "auto"
                    }
                  ]
                },
                "tickcolor": {
                  "description": "Sets the tick color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "tickfont": {
                  "type": "object",
                  "properties": {
                    "color": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    "family": {
                      "pattern": ".*\\S.*$",
                      "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                      "type": "string"
                    },
                    "lineposition": {
                      "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    "shadow": {
                      "default": "none",
                      "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                      "type": "string"
                    },
                    "size": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    "style": {
                      "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "textcase": {
                      "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "variant": {
                      "description": "Sets the variant of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "weight": {
                      "description": "Sets the weight (or boldness) of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    }
                  },
                  "additionalProperties": false
                },
                "tickformat": {
                  "default": "",
                  "description": "Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*",
                  "type": "string"
                },
                "tickformatstops": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "dtickrange": {
                        "description": "range [*min*, *max*], where *min*, *max* - dtick values which describe some zoom level, it is possible to omit *min* or *max* value by passing *null*",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "array",
                            "items": {},
                            "minItems": 2,
                            "maxItems": 2
                          }
                        ]
                      },
                      "enabled": {
                        "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "boolean",
                            "default": true
                          }
                        ]
                      },
                      "name": {
                        "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.",
                        "type": "string"
                      },
                      "templateitemname": {
                        "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.",
                        "type": "string"
                      },
                      "value": {
                        "default": "",
                        "description": "string - dtickformat for described zoom level, the same as *tickformat*",
                        "type": "string"
                      }
                    },
                    "additionalProperties": false
                  },
                  "minItems": 1
                },
                "ticklabelstep": {
                  "description": "Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "default": 1
                    }
                  ]
                },
                "ticklen": {
                  "description": "Sets the tick length (in px).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 5
                    }
                  ]
                },
                "tickmode": {
                  "description": "Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "auto",
                        "linear",
                        "array"
                      ]
                    }
                  ]
                },
                "tickprefix": {
                  "default": "",
                  "description": "Sets a tick label prefix.",
                  "type": "string"
                },
                "ticks": {
                  "description": "Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "outside",
                        "inside",
                        ""
                      ]
                    }
                  ]
                },
                "ticksuffix": {
                  "default": "",
                  "description": "Sets a tick label suffix.",
                  "type": "string"
                },
                "ticktext": {
                  "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "string"
                          }
                        ]
                      }
                    }
                  ]
                },
                "ticktextsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.",
                  "type": "string"
                },
                "tickvals": {
                  "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "string"
                          }
                        ]
                      }
                    }
                  ]
                },
                "tickvalssrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.",
                  "type": "string"
                },
                "tickwidth": {
                  "description": "Sets the tick width (in px).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "title": {
                  "type": "object",
                  "properties": {
                    "font": {
                      "type": "object",
                      "properties": {
                        "color": {
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "$ref": "#/$defs/color"
                            }
                          ]
                        },
                        "family": {
                          "pattern": ".*\\S.*$",
                          "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                          "type": "string"
                        },
                        "lineposition": {
                          "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "oneOf": [
                                {
                                  "type": "string",
                                  "enum": [
                                    "none"
                                  ]
                                },
                                {
                                  "type": "string",
                                  "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                                }
                              ],
                              "default": "none"
                            }
                          ]
                        },
                        "shadow": {
                          "default": "none",
                          "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                          "type": "string"
                        },
                        "size": {
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "type": "number",
                              "minimum": 1
                            }
                          ]
                        },
                        "style": {
                          "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "italic"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "textcase": {
                          "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "word caps",
                                "upper",
                                "lower"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "variant": {
                          "description": "Sets the variant of the font.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "small-caps",
                                "all-small-caps",
                                "all-petite-caps",
                                "petite-caps",
                                "unicase"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "weight": {
                          "description": "Sets the weight (or boldness) of the font.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "type": "integer",
                              "minimum": 1,
                              "maximum": 1000,
                              "default": "normal"
                            }
                          ]
                        }
                      },
                      "additionalProperties": false
                    },
                    "text": {
                      "description": "Sets the title of this axis.",
                      "type": "string"
                    }
                  },
                  "additionalProperties": false
                },
                "uirevision": {
                  "description": "Controls persistence of user-driven changes in axis `min`, and `title` if in `editable: true` configuration. Defaults to `ternary<N>.uirevision`."
                }
              },
              "additionalProperties": false
            },
            "domain": {
              "type": "object",
              "properties": {
                "column": {
                  "description": "If there is a layout grid, use the domain for this column in the grid for this ternary subplot .",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 0,
                      "default": 0
                    }
                  ]
                },
                "row": {
                  "description": "If there is a layout grid, use the domain for this row in the grid for this ternary subplot .",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 0,
                      "default": 0
                    }
                  ]
                },
                "x": {
                  "description": "Sets the horizontal domain of this ternary subplot (in plot fraction).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 0,
                            "maximum": 1
                          }
                        ]
                      },
                      "minItems": 2,
                      "maxItems": 2,
                      "default": [
                        0,
                        1
                      ]
                    }
                  ]
                },
                "y": {
                  "description": "Sets the vertical domain of this ternary subplot (in plot fraction).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 0,
                            "maximum": 1
                          }
                        ]
                      },
                      "minItems": 2,
                      "maxItems": 2,
                      "default": [
                        0,
                        1
                      ]
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "sum": {
              "description": "The number each triplet should sum to, and the maximum range of each axis",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 1
                }
              ]
            },
            "uirevision": {
              "description": "Controls persistence of user-driven changes in axis `min` and `title`, if not overridden in the individual axes. Defaults to `layout.uirevision`."
            }
          },
          "additionalProperties": false
        },
        "title": {
          "type": "object",
          "properties": {
            "automargin": {
              "description": "Determines whether the title can automatically push the figure margins. If `yref='paper'` then the margin will expand to ensure that the title doesn’t overlap with the edges of the container. If `yref='container'` then the margins will ensure that the title doesn’t overlap with the plot area, tick labels, and axis titles. If `automargin=true` and the margins need to be expanded, then y will be set to a default 1 and yanchor will be set to an appropriate default to ensure that minimal margin space is needed. Note that when `yref='paper'`, only 1 or 0 are allowed y values. Invalid values will be reset to the default 1.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            },
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "family": {
                  "pattern": ".*\\S.*$",
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                "shadow": {
                  "default": "none",
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "pad": {
              "type": "object",
              "properties": {
                "b": {
                  "description": "The amount of padding (in px) along the bottom of the component.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "default": 0
                    }
                  ]
                },
                "l": {
                  "description": "The amount of padding (in px) on the left side of the component.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "default": 0
                    }
                  ]
                },
                "r": {
                  "description": "The amount of padding (in px) on the right side of the component.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "default": 0
                    }
                  ]
                },
                "t": {
                  "description": "The amount of padding (in px) along the top of the component.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "default": 0
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "subtitle": {
              "type": "object",
              "properties": {
                "font": {
                  "type": "object",
                  "properties": {
                    "color": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    "family": {
                      "pattern": ".*\\S.*$",
                      "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                      "type": "string"
                    },
                    "lineposition": {
                      "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    "shadow": {
                      "default": "none",
                      "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                      "type": "string"
                    },
                    "size": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    "style": {
                      "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "textcase": {
                      "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "variant": {
                      "description": "Sets the variant of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "weight": {
                      "description": "Sets the weight (or boldness) of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    }
                  },
                  "additionalProperties": false
                },
                "text": {
                  "description": "Sets the plot's subtitle.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "text": {
              "description": "Sets the plot's title.",
              "type": "string"
            },
            "x": {
              "description": "Sets the x position with respect to `xref` in normalized coordinates from *0* (left) to *1* (right).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 1,
                  "default": 0.5
                }
              ]
            },
            "xanchor": {
              "description": "Sets the title's horizontal alignment with respect to its x position. *left* means that the title starts at x, *right* means that the title ends at x and *center* means that the title's center is at x. *auto* divides `xref` by three and calculates the `xanchor` value automatically based on the value of `x`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "auto",
                    "left",
                    "center",
                    "right"
                  ],
                  "default": "auto"
                }
              ]
            },
            "xref": {
              "description": "Sets the container `x` refers to. *container* spans the entire `width` of the plot. *paper* refers to the width of the plotting area only.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "container",
                    "paper"
                  ],
                  "default": "container"
                }
              ]
            },
            "y": {
              "description": "Sets the y position with respect to `yref` in normalized coordinates from *0* (bottom) to *1* (top). *auto* places the baseline of the title onto the vertical center of the top margin.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 1,
                  "default": "auto"
                }
              ]
            },
            "yanchor": {
              "description": "Sets the title's vertical alignment with respect to its y position. *top* means that the title's cap line is at y, *bottom* means that the title's baseline is at y and *middle* means that the title's midline is at y. *auto* divides `yref` by three and calculates the `yanchor` value automatically based on the value of `y`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "auto",
                    "top",
                    "middle",
                    "bottom"
                  ],
                  "default": "auto"
                }
              ]
            },
            "yref": {
              "description": "Sets the container `y` refers to. *container* spans the entire `height` of the plot. *paper* refers to the height of the plotting area only.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "container",
                    "paper"
                  ],
                  "default": "container"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "transition": {
          "type": "object",
          "properties": {
            "duration": {
              "description": "The duration of the transition, in milliseconds. If equal to zero, updates are synchronous.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 500
                }
              ]
            },
            "easing": {
              "description": "The easing function used for the transition",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "linear",
                    "quad",
                    "cubic",
                    "sin",
                    "exp",
                    "circle",
                    "elastic",
                    "back",
                    "bounce",
                    "linear-in",
                    "quad-in",
                    "cubic-in",
                    "sin-in",
                    "exp-in",
                    "circle-in",
                    "elastic-in",
                    "back-in",
                    "bounce-in",
                    "linear-out",
                    "quad-out",
                    "cubic-out",
                    "sin-out",
                    "exp-out",
                    "circle-out",
                    "elastic-out",
                    "back-out",
                    "bounce-out",
                    "linear-in-out",
                    "quad-in-out",
                    "cubic-in-out",
                    "sin-in-out",
                    "exp-in-out",
                    "circle-in-out",
                    "elastic-in-out",
                    "back-in-out",
                    "bounce-in-out"
                  ],
                  "default": "cubic-in-out"
                }
              ]
            },
            "ordering": {
              "description": "Determines whether the figure's layout or traces smoothly transitions during updates that make both traces and layout change.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "layout first",
                    "traces first"
                  ],
                  "default": "layout first"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "uirevision": {
          "description": "Used to allow user interactions with the plot to persist after `Plotly.react` calls that are unaware of these interactions. If `uirevision` is omitted, or if it is given and it changed from the previous `Plotly.react` call, the exact new figure is used. If `uirevision` is truthy and did NOT change, any attribute that has been affected by user interactions and did not receive a different value in the new figure will keep the interaction value. `layout.uirevision` attribute serves as the default for `uirevision` attributes in various sub-containers. For finer control you can set these sub-attributes directly. For example, if your app separately controls the data on the x and y axes you might set `xaxis.uirevision=*time*` and `yaxis.uirevision=*cost*`. Then if only the y data is changed, you can update `yaxis.uirevision=*quantity*` and the y axis range will reset but the x axis range will retain any user-driven zoom."
        },
        "uniformtext": {
          "type": "object",
          "properties": {
            "minsize": {
              "description": "Sets the minimum text size between traces of the same type.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "mode": {
              "description": "Determines how the font size for various text elements are uniformed between each trace type. If the computed text sizes were smaller than the minimum size defined by `uniformtext.minsize` using *hide* option hides the text; and using *show* option shows the text without further downscaling. Please note that if the size defined by `minsize` is greater than the font size defined by trace, then the `minsize` is used.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    false,
                    "hide",
                    "show"
                  ],
                  "default": false
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "updatemenus": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "active": {
                "description": "Determines which button (by index starting from 0) is considered active.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "integer",
                    "minimum": -1,
                    "default": 0
                  }
                ]
              },
              "bgcolor": {
                "description": "Sets the background color of the update menu buttons.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "$ref": "#/$defs/color"
                  }
                ]
              },
              "bordercolor": {
                "description": "Sets the color of the border enclosing the update menu.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "$ref": "#/$defs/color"
                  }
                ]
              },
              "borderwidth": {
                "description": "Sets the width (in px) of the border enclosing the update menu.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "number",
                    "minimum": 0,
                    "default": 1
                  }
                ]
              },
              "buttons": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "args": {
                      "description": "Sets the arguments values to be passed to the Plotly method set in `method` on click.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "array",
                          "items": {},
                          "minItems": 1
                        }
                      ]
                    },
                    "args2": {
                      "description": "Sets a 2nd set of `args`, these arguments values are passed to the Plotly method set in `method` when clicking this button while in the active state. Use this to create toggle buttons.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "array",
                          "items": {},
                          "minItems": 1
                        }
                      ]
                    },
                    "execute": {
                      "description": "When true, the API method is executed. When false, all other behaviors are the same and command execution is skipped. This may be useful when hooking into, for example, the `plotly_buttonclicked` method and executing the API command manually without losing the benefit of the updatemenu automatically binding to the state of the plot through the specification of `method` and `args`.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "boolean",
                          "default": true
                        }
                      ]
                    },
                    "label": {
                      "default": "",
                      "description": "Sets the text label to appear on the button.",
                      "type": "string"
                    },
                    "method": {
                      "description": "Sets the Plotly method to be called on click. If the `skip` method is used, the API updatemenu will function as normal but will perform no API calls and will not bind automatically to state updates. This may be used to create a component interface and attach to updatemenu events manually via JavaScript.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "restyle",
                            "relayout",
                            "animate",
                            "update",
                            "skip"
                          ],
                          "default": "restyle"
                        }
                      ]
                    },
                    "name": {
                      "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.",
                      "type": "string"
                    },
                    "templateitemname": {
                      "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.",
                      "type": "string"
                    },
                    "visible": {
                      "description": "Determines whether or not this button is visible.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "boolean"
                        }
                      ]
                    }
                  },
                  "additionalProperties": false
                },
                "minItems": 1
              },
              "direction": {
                "description": "Determines the direction in which the buttons are laid out, whether in a dropdown menu or a row/column of buttons. For `left` and `up`, the buttons will still appear in left-to-right or top-to-bottom order respectively.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "enum": [
                      "left",
                      "right",
                      "up",
                      "down"
                    ],
                    "default": "down"
                  }
                ]
              },
              "font": {
                "type": "object",
                "properties": {
                  "color": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  },
                  "family": {
                    "pattern": ".*\\S.*$",
                    "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                    "type": "string"
                  },
                  "lineposition": {
                    "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "oneOf": [
                          {
                            "type": "string",
                            "enum": [
                              "none"
                            ]
                          },
                          {
                            "type": "string",
                            "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                          }
                        ],
                        "default": "none"
                      }
                    ]
                  },
                  "shadow": {
                    "default": "none",
                    "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                    "type": "string"
                  },
                  "size": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 1
                      }
                    ]
                  },
                  "style": {
                    "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "italic"
                        ],
                        "default": "normal"
                      }
                    ]
                  },
                  "textcase": {
                    "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "word caps",
                          "upper",
                          "lower"
                        ],
                        "default": "normal"
                      }
                    ]
                  },
                  "variant": {
                    "description": "Sets the variant of the font.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "small-caps",
                          "all-small-caps",
                          "all-petite-caps",
                          "petite-caps",
                          "unicase"
                        ],
                        "default": "normal"
                      }
                    ]
                  },
                  "weight": {
                    "description": "Sets the weight (or boldness) of the font.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 1000,
                        "default": "normal"
                      }
                    ]
                  }
                },
                "additionalProperties": false
              },
              "name": {
                "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.",
                "type": "string"
              },
              "pad": {
                "type": "object",
                "properties": {
                  "b": {
                    "description": "The amount of padding (in px) along the bottom of the component.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "default": 0
                      }
                    ]
                  },
                  "l": {
                    "description": "The amount of padding (in px) on the left side of the component.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "default": 0
                      }
                    ]
                  },
                  "r": {
                    "description": "The amount of padding (in px) on the right side of the component.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "default": 0
                      }
                    ]
                  },
                  "t": {
                    "description": "The amount of padding (in px) along the top of the component.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "default": 0
                      }
                    ]
                  }
                },
                "additionalProperties": false
              },
              "showactive": {
                "description": "Highlights active dropdown item or active button if true.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "boolean",
                    "default": true
                  }
                ]
              },
              "templateitemname": {
                "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.",
                "type": "string"
              },
              "type": {
                "description": "Determines whether the buttons are accessible via a dropdown menu or whether the buttons are stacked horizontally or vertically",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "enum": [
                      "dropdown",
                      "buttons"
                    ],
                    "default": "dropdown"
                  }
                ]
              },
              "visible": {
                "description": "Determines whether or not the update menu is visible.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "boolean"
                  }
                ]
              },
              "x": {
                "description": "Sets the x position (in normalized coordinates) of the update menu.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "number",
                    "minimum": -2,
                    "maximum": 3,
                    "default": -0.05
                  }
                ]
              },
              "xanchor": {
                "description": "Sets the update menu's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the range selector.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "enum": [
                      "auto",
                      "left",
                      "center",
                      "right"
                    ],
                    "default": "right"
                  }
                ]
              },
              "y": {
                "description": "Sets the y position (in normalized coordinates) of the update menu.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "number",
                    "minimum": -2,
                    "maximum": 3,
                    "default": 1
                  }
                ]
              },
              "yanchor": {
                "description": "Sets the update menu's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the range selector.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "enum": [
                      "auto",
                      "top",
                      "middle",
                      "bottom"
                    ],
                    "default": "top"
                  }
                ]
              }
            },
            "additionalProperties": false
          },
          "minItems": 1
        },
        "width": {
          "description": "Sets the plot's width (in px).",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 10,
              "default": 700
            }
          ]
        },
        "xaxis": {
          "$ref": "#/$defs/xaxis"
        },
        "yaxis": {
          "$ref": "#/$defs/yaxis"
        },
        "barcornerradius": {
          "description": "Sets the rounding of bar corners. May be an integer number of pixels, or a percentage of bar width (as a string ending in %)."
        },
        "bargap": {
          "description": "Sets the gap (in plot fraction) between bars of adjacent location coordinates.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0,
              "maximum": 1
            }
          ]
        },
        "bargroupgap": {
          "description": "Sets the gap (in plot fraction) between bars of the same location coordinate.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0,
              "maximum": 1,
              "default": 0
            }
          ]
        },
        "barmode": {
          "description": "Determines how bars at the same location coordinate are displayed on the graph. With *stack*, the bars are stacked on top of one another With *relative*, the bars are stacked on top of one another, with negative values below the axis, positive values above With *group*, the bars are plotted next to one another centered around the shared location. With *overlay*, the bars are plotted over one another, you might need to reduce *opacity* to see multiple bars.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "stack",
                "group",
                "overlay",
                "relative"
              ],
              "default": "group"
            }
          ]
        },
        "barnorm": {
          "description": "Sets the normalization for bar traces on the graph. With *fraction*, the value of each bar is divided by the sum of all values at that location coordinate. *percent* is the same but multiplied by 100 to show percentages.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "",
                "fraction",
                "percent"
              ],
              "default": ""
            }
          ]
        },
        "boxgap": {
          "description": "Sets the gap (in plot fraction) between boxes of adjacent location coordinates. Has no effect on traces that have *width* set.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0,
              "maximum": 1,
              "default": 0.3
            }
          ]
        },
        "boxgroupgap": {
          "description": "Sets the gap (in plot fraction) between boxes of the same location coordinate. Has no effect on traces that have *width* set.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0,
              "maximum": 1,
              "default": 0.3
            }
          ]
        },
        "boxmode": {
          "description": "Determines how boxes at the same location coordinate are displayed on the graph. If *group*, the boxes are plotted next to one another centered around the shared location. If *overlay*, the boxes are plotted over one another, you might need to set *opacity* to see them multiple boxes. Has no effect on traces that have *width* set.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "group",
                "overlay"
              ],
              "default": "overlay"
            }
          ]
        },
        "funnelgap": {
          "description": "Sets the gap (in plot fraction) between bars of adjacent location coordinates.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0,
              "maximum": 1
            }
          ]
        },
        "funnelgroupgap": {
          "description": "Sets the gap (in plot fraction) between bars of the same location coordinate.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0,
              "maximum": 1,
              "default": 0
            }
          ]
        },
        "funnelmode": {
          "description": "Determines how bars at the same location coordinate are displayed on the graph. With *stack*, the bars are stacked on top of one another With *group*, the bars are plotted next to one another centered around the shared location. With *overlay*, the bars are plotted over one another, you might need to reduce *opacity* to see multiple bars.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "stack",
                "group",
                "overlay"
              ],
              "default": "stack"
            }
          ]
        },
        "extendfunnelareacolors": {
          "description": "If `true`, the funnelarea slice colors (whether given by `funnelareacolorway` or inherited from `colorway`) will be extended to three times its original length by first repeating every color 20% lighter then each color 20% darker. This is intended to reduce the likelihood of reusing the same color when you have many slices, but you can set `false` to disable. Colors provided in the trace, using `marker.colors`, are never extended.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "funnelareacolorway": {
          "description": "Sets the default funnelarea slice colors. Defaults to the main `colorway` used for trace colors. If you specify a new list here it can still be extended with lighter and darker colors, see `extendfunnelareacolors`.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "$ref": "#/$defs/color"
              }
            }
          ]
        },
        "hiddenlabels": {
          "description": "hiddenlabels is the funnelarea & pie chart analog of visible:'legendonly' but it can contain many labels, and can simultaneously hide slices from several pies/funnelarea charts",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "hiddenlabelssrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hiddenlabels`.",
          "type": "string"
        },
        "extendiciclecolors": {
          "description": "If `true`, the icicle slice colors (whether given by `iciclecolorway` or inherited from `colorway`) will be extended to three times its original length by first repeating every color 20% lighter then each color 20% darker. This is intended to reduce the likelihood of reusing the same color when you have many slices, but you can set `false` to disable. Colors provided in the trace, using `marker.colors`, are never extended.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "iciclecolorway": {
          "description": "Sets the default icicle slice colors. Defaults to the main `colorway` used for trace colors. If you specify a new list here it can still be extended with lighter and darker colors, see `extendiciclecolors`.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "$ref": "#/$defs/color"
              }
            }
          ]
        },
        "extendpiecolors": {
          "description": "If `true`, the pie slice colors (whether given by `piecolorway` or inherited from `colorway`) will be extended to three times its original length by first repeating every color 20% lighter then each color 20% darker. This is intended to reduce the likelihood of reusing the same color when you have many slices, but you can set `false` to disable. Colors provided in the trace, using `marker.colors`, are never extended.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "piecolorway": {
          "description": "Sets the default pie slice colors. Defaults to the main `colorway` used for trace colors. If you specify a new list here it can still be extended with lighter and darker colors, see `extendpiecolors`.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "$ref": "#/$defs/color"
              }
            }
          ]
        },
        "scattergap": {
          "description": "Sets the gap (in plot fraction) between scatter points of adjacent location coordinates. Defaults to `bargap`.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0,
              "maximum": 1
            }
          ]
        },
        "scattermode": {
          "description": "Determines how scatter points at the same location coordinate are displayed on the graph. With *group*, the scatter points are plotted next to one another centered around the shared location. With *overlay*, the scatter points are plotted over one another, you might need to reduce *opacity* to see multiple scatter points.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "group",
                "overlay"
              ],
              "default": "overlay"
            }
          ]
        },
        "extendsunburstcolors": {
          "description": "If `true`, the sunburst slice colors (whether given by `sunburstcolorway` or inherited from `colorway`) will be extended to three times its original length by first repeating every color 20% lighter then each color 20% darker. This is intended to reduce the likelihood of reusing the same color when you have many slices, but you can set `false` to disable. Colors provided in the trace, using `marker.colors`, are never extended.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "sunburstcolorway": {
          "description": "Sets the default sunburst slice colors. Defaults to the main `colorway` used for trace colors. If you specify a new list here it can still be extended with lighter and darker colors, see `extendsunburstcolors`.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "$ref": "#/$defs/color"
              }
            }
          ]
        },
        "extendtreemapcolors": {
          "description": "If `true`, the treemap slice colors (whether given by `treemapcolorway` or inherited from `colorway`) will be extended to three times its original length by first repeating every color 20% lighter then each color 20% darker. This is intended to reduce the likelihood of reusing the same color when you have many slices, but you can set `false` to disable. Colors provided in the trace, using `marker.colors`, are never extended.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "treemapcolorway": {
          "description": "Sets the default treemap slice colors. Defaults to the main `colorway` used for trace colors. If you specify a new list here it can still be extended with lighter and darker colors, see `extendtreemapcolors`.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "$ref": "#/$defs/color"
              }
            }
          ]
        },
        "violingap": {
          "description": "Sets the gap (in plot fraction) between violins of adjacent location coordinates. Has no effect on traces that have *width* set.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0,
              "maximum": 1,
              "default": 0.3
            }
          ]
        },
        "violingroupgap": {
          "description": "Sets the gap (in plot fraction) between violins of the same location coordinate. Has no effect on traces that have *width* set.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0,
              "maximum": 1,
              "default": 0.3
            }
          ]
        },
        "violinmode": {
          "description": "Determines how violins at the same location coordinate are displayed on the graph. If *group*, the violins are plotted next to one another centered around the shared location. If *overlay*, the violins are plotted over one another, you might need to set *opacity* to see them multiple violins. Has no effect on traces that have *width* set.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "group",
                "overlay"
              ],
              "default": "overlay"
            }
          ]
        },
        "waterfallgap": {
          "description": "Sets the gap (in plot fraction) between bars of adjacent location coordinates.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0,
              "maximum": 1
            }
          ]
        },
        "waterfallgroupgap": {
          "description": "Sets the gap (in plot fraction) between bars of the same location coordinate.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0,
              "maximum": 1,
              "default": 0
            }
          ]
        },
        "waterfallmode": {
          "description": "Determines how bars at the same location coordinate are displayed on the graph. With *group*, the bars are plotted next to one another centered around the shared location. With *overlay*, the bars are plotted over one another, you might need to reduce *opacity* to see multiple bars.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "group",
                "overlay"
              ],
              "default": "group"
            }
          ]
        }
      },
      "additionalProperties": false,
      "patternProperties": {
        "xaxis\\d{1,2}": {
          "$ref": "#/$defs/xaxis"
        },
        "yaxis\\d{1,2}": {
          "$ref": "#/$defs/yaxis"
        }
      },
      "type": "object"
    },
    "Level": {
      "description": "Represents a dashboard level with title and description",
      "properties": {
        "title": {
          "description": "Display title for this level",
          "title": "Title",
          "type": "string"
        },
        "description": {
          "description": "Description of this level's purpose",
          "title": "Description",
          "type": "string"
        }
      },
      "required": [
        "title",
        "description"
      ],
      "title": "Level",
      "type": "object"
    },
    "LocalMergeModel": {
      "type": "object",
      "description": "Local Merge Models are models that allow you to merge data from multiple other models locally.\n\n!!! note\n\n    Any joining is done in a local DuckDB database. While more efficient than SQLite,\n    it's still primarily designed for medium-sized datasets.\n\n!!! example {% raw %}\n\n    === \"Internal join External\"\n\n        Here is an example of merging two models that are defined in your project. One that is external and one that is internal.\n        ``` yaml\n        models:\n          - name: local_merge\n            models:\n                - ref(first_domain_model)\n                - ref(external_data_model)\n            sql: SELECT * FROM first_domain_model.model AS fdm JOIN external_data_model.model AS edm ON fdm.external_id = edm.id\n        ```\n\n{% endraw %}",
      "properties": {
        "path": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A unique path to this object",
          "title": "Path"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The unique name of the object across the entire project.",
          "title": "Name"
        },
        "file_path": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The path to the file that contains the object definition.",
          "title": "File Path"
        },
        "sql": {
          "description": "The sql used to generate your base data",
          "title": "Sql",
          "type": "string"
        },
        "models": {
          "description": "A model object defined inline or a ref() to a model.",
          "items": {
            "oneOf": [
              {
                "pattern": "^ref\\(\\s*([a-zA-Z0-9\\s'\\\"\\-_]+)\\s*\\)$",
                "type": "string"
              },
              {
                "pattern": "^\\$\\{.*\\}$",
                "type": "string"
              },
              {
                "$ref": "#/$defs/Model"
              }
            ]
          },
          "title": "Models",
          "type": "array"
        }
      },
      "required": [
        "sql",
        "models"
      ],
      "title": "LocalMergeModel",
      "additionalProperties": false
    },
    "Markdown": {
      "type": "object",
      "description": "The Markdown model represents formatted text content that can be displayed in dashboards.\n\nMarkdown supports [CommonMark](https://commonmark.org/help/) and [GitHub Flavored Markdown](https://github.github.com/gfm/).\nYou can also render raw HTML within your markdown.\n\n### Example\n``` yaml\nmarkdowns:\n  - name: welcome-text\n    content: |\n      # Welcome to Visivo\n\n      This is **formatted** text with support for:\n      - Lists\n      - **Bold** and *italic* text\n      - [Links](https://visivo.io)\n    align: center\n    justify: start\n```\n\nThen reference it in a dashboard item:\n``` yaml\nitems:\n  - width: 1\n    markdown: ref(welcome-text)\n```\n\n## Alignment Options\n\n=== \"Horizontal Alignment (align)\"\n    Controls how text aligns horizontally within the container:\n\n    `align: left` (default)\n    ```\n    [Header     ]\n    [Paragraph  ]\n    [List       ]\n    ```\n\n    `align: center`\n    ```\n    [  Header   ]\n    [ Paragraph ]\n    [   List    ]\n    ```\n\n    `align: right`\n    ```\n    [     Header]\n    [  Paragraph]\n    [      List]\n    ```\n\n=== \"Vertical Distribution (justify)\"\n    Controls how content blocks are distributed vertically in fixed-height containers:\n\n    `justify: start` (default)\n    ```\n    [Header     ]\n    [Paragraph  ]\n    [List       ]\n    [           ]\n    [           ]\n    ```\n\n    `justify: center`\n    ```\n    [           ]\n    [Header     ]\n    [Paragraph  ]\n    [List       ]\n    [           ]\n    ```\n\n    `justify: between`\n    ```\n    [Header     ]\n    [           ]\n    [Paragraph  ]\n    [           ]\n    [List       ]\n    ```\n\n    `justify: around`\n    ```\n    [           ]\n    [Header     ]\n    [           ]\n    [Paragraph  ]\n    [           ]\n    [List       ]\n    [           ]\n    ```\n\n    `justify: evenly`\n    ```\n    [           ]\n    [Header     ]\n    [Paragraph  ]\n    [List       ]\n    [           ]\n    ```\n\n    `justify: end`\n    ```\n    [           ]\n    [           ]\n    [Header     ]\n    [Paragraph  ]\n    [List       ]\n    ```",
      "properties": {
        "path": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A unique path to this object",
          "title": "Path"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The unique name of the object across the entire project.",
          "title": "Name"
        },
        "file_path": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The path to the file that contains the object definition.",
          "title": "File Path"
        },
        "content": {
          "description": "The markdown text content to display. Supports CommonMark and GitHub Flavored Markdown.",
          "title": "Content",
          "type": "string"
        },
        "align": {
          "default": "left",
          "description": "Horizontal alignment of the markdown content. Options are 'left', 'center', or 'right'.",
          "enum": [
            "left",
            "center",
            "right"
          ],
          "title": "Align",
          "type": "string"
        },
        "justify": {
          "default": "start",
          "description": "Vertical distribution of content within its container. Options are 'start', 'end', 'center', 'between', 'around', or 'evenly'.",
          "enum": [
            "start",
            "end",
            "center",
            "between",
            "around",
            "evenly"
          ],
          "title": "Justify",
          "type": "string"
        }
      },
      "required": [
        "content"
      ],
      "title": "Markdown",
      "additionalProperties": false
    },
    "Metric": {
      "type": "object",
      "description": "A Metric represents a reusable aggregate calculation that can be referenced across charts.\n\nMetrics centralize business logic for key measurements, ensuring consistency and\nmaking updates easier. They can be defined at the model level (model-scoped) or\nat the project level (global metrics).\n\n!!! example\n    === \"Model-scoped Metric\"\n        ```yaml\n        models:\n          - name: orders\n            sql: SELECT * FROM orders_table\n            metrics:\n              - name: total_revenue\n                expression: \"SUM(amount)\"\n                description: \"Total revenue from all orders\"\n        ```\n\n    === \"Global Metric (with multiple models)\"\n        ```yaml\n        metrics:\n          - name: revenue_per_user\n            expression: \"${ref(orders).total_revenue} / ${ref(users).total_users}\"\n            description: \"Average revenue per user\"\n        ```",
      "properties": {
        "path": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A unique path to this object",
          "title": "Path"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The unique name of the object across the entire project.",
          "title": "Name"
        },
        "file_path": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The path to the file that contains the object definition.",
          "title": "File Path"
        },
        "expression": {
          "description": "SQL aggregate expression for the metric. For model-scoped metrics, use direct SQL aggregates (e.g., 'SUM(amount)', 'COUNT(DISTINCT id)'). For global metrics, can reference other metrics or fields using ${ref(model).field} or ${ref(metric_name)} syntax. Must be a valid aggregate function and cannot contain raw columns outside of aggregates.",
          "title": "Expression",
          "type": "string"
        },
        "description": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Human-readable description of what this metric represents.",
          "title": "Description"
        }
      },
      "required": [
        "expression"
      ],
      "title": "Metric",
      "additionalProperties": false
    },
    "Model": {
      "type": "object",
      "properties": {
        "path": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A unique path to this object",
          "title": "Path"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The unique name of the object across the entire project.",
          "title": "Name"
        },
        "file_path": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The path to the file that contains the object definition.",
          "title": "File Path"
        }
      },
      "title": "Model",
      "additionalProperties": false
    },
    "MultiSelectDefault": {
      "type": "object",
      "description": "Default value configuration for multi-select inputs.\n\nFor list-based inputs: use 'values' field\nFor range-based inputs: use 'start' and 'end' fields",
      "properties": {
        "values": {
          "anyOf": [
            {
              "items": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "integer"
                  },
                  {
                    "type": "number"
                  },
                  {
                    "type": "boolean"
                  }
                ]
              },
              "type": "array"
            },
            {
              "type": "string"
            },
            {
              "enum": [
                "all",
                "none"
              ],
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Default selected values for list-based inputs. Can be static list, query, 'all' (default), or 'none'.",
          "title": "Values"
        },
        "start": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "integer"
            },
            {
              "type": "number"
            },
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Default lower bound for range-based inputs.",
          "title": "Start"
        },
        "end": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "integer"
            },
            {
              "type": "number"
            },
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Default upper bound for range-based inputs.",
          "title": "End"
        }
      },
      "title": "MultiSelectDefault",
      "additionalProperties": false
    },
    "MultiSelectDisplay": {
      "type": "object",
      "description": "Display configuration for multi-select inputs.",
      "properties": {
        "type": {
          "default": "dropdown",
          "description": "UI component type for rendering the input.",
          "enum": [
            "dropdown",
            "checkboxes",
            "chips",
            "tags",
            "range-slider",
            "date-range"
          ],
          "title": "Type",
          "type": "string"
        },
        "default": {
          "anyOf": [
            {
              "$ref": "#/$defs/MultiSelectDefault"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Default value configuration. If not specified, 'all' is used for list-based."
        }
      },
      "title": "MultiSelectDisplay",
      "additionalProperties": false
    },
    "MultiSelectInput": {
      "type": "object",
      "description": "Multi-select input for choosing multiple values.\n\nOptions can be defined in two ways (mutually exclusive):\n1. List-based ('options' field): Discrete choices from a static list or query\n2. Range-based ('range' field): Continuous/stepped values with start, end, step\n\nSelected values are accessed using these accessors in filters:\n- `.values` - Array of all selected values\n- `.min` - Minimum of selected values\n- `.max` - Maximum of selected values\n- `.first` - First selected value\n- `.last` - Last selected value\n\nExample YAML (list-based):\n    inputs:\n      - name: regions\n        type: multi-select\n        options: ['East', 'West', 'North', 'South']\n        display:\n          type: dropdown\n          default:\n            values: ['East', 'West']\n\n    insights:\n      - name: sales_by_region\n        interactions:\n          - filter: ?{ region IN (${ref(regions).values}) }\n\nExample YAML (range-based):\n    inputs:\n      - name: price_range\n        type: multi-select\n        range:\n          start: 0\n          end: 1000\n          step: 50\n        display:\n          type: range-slider\n          default:\n            start: 100\n            end: 500\n\n    insights:\n      - name: products_in_range\n        interactions:\n          - filter: ?{ price BETWEEN ${ref(price_range).min} AND ${ref(price_range).max} }",
      "properties": {
        "path": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A unique path to this object",
          "title": "Path"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The unique name of the object across the entire project.",
          "title": "Name"
        },
        "file_path": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The path to the file that contains the object definition.",
          "title": "File Path"
        },
        "type": {
          "const": "multi-select",
          "default": "multi-select",
          "description": "Input type identifier.",
          "title": "Type",
          "type": "string"
        },
        "label": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Label shown to the user",
          "title": "Label"
        },
        "options": {
          "anyOf": [
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Available options for list-based multi-select. Can be a static list or a query string. Mutually exclusive with 'range'.",
          "title": "Options"
        },
        "range": {
          "anyOf": [
            {
              "$ref": "#/$defs/RangeConfig"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Range configuration for range-based multi-select. Defines start, end, and step values. Mutually exclusive with 'options'."
        },
        "display": {
          "anyOf": [
            {
              "$ref": "#/$defs/MultiSelectDisplay"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Display configuration including UI component type and default values. If not specified, defaults to dropdown with all options selected."
        }
      },
      "title": "MultiSelectInput",
      "additionalProperties": false
    },
    "MysqlSource": {
      "type": "object",
      "description": "MysqlSources hold the connection information to MySQL data sources.\n\n!!! example\n\n    === \"Simple\"\n\n        ``` yaml\n            sources:\n              - name: mysql_source\n                type: mysql\n                database: database\n                username: {% raw %}{{ env_var('MYSQL_USER') }}{% endraw %}\n                password: {% raw %}{{ env_var('MYSQL_PASSWORD') }}{% endraw %}\n                connection_pool_size: 2\n        ```\n\n!!! note\n\n    Recommended environment variable use is covered in the [sources overview.](/topics/sources/)",
      "properties": {
        "path": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A unique path to this object",
          "title": "Path"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The unique name of the object across the entire project.",
          "title": "Name"
        },
        "file_path": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The path to the file that contains the object definition.",
          "title": "File Path"
        },
        "after_connect": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "After Connect"
        },
        "host": {
          "anyOf": [
            {
              "oneOf": [
                {
                  "type": "string"
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The host url of the database.",
          "title": "Host"
        },
        "port": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The port of the database.",
          "title": "Port"
        },
        "database": {
          "description": "The database that the Visivo project will use in queries.",
          "oneOf": [
            {
              "type": "string"
            }
          ],
          "title": "Database"
        },
        "username": {
          "anyOf": [
            {
              "oneOf": [
                {
                  "type": "string"
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Username for the database.",
          "title": "Username"
        },
        "password": {
          "anyOf": [
            {
              "oneOf": [
                {
                  "type": "string"
                },
                {
                  "format": "password",
                  "type": "string",
                  "writeOnly": true
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Password corresponding to the username.",
          "title": "Password"
        },
        "db_schema": {
          "anyOf": [
            {
              "oneOf": [
                {
                  "type": "string"
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The schema that the Visivo project will use in queries.",
          "title": "Db Schema"
        },
        "type": {
          "const": "mysql",
          "title": "Type",
          "type": "string"
        },
        "connection_pool_size": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": 1,
          "description": "The pool size that is used for this connection.",
          "title": "Connection Pool Size"
        }
      },
      "required": [
        "database",
        "type"
      ],
      "title": "MysqlSource",
      "additionalProperties": false
    },
    "OnFailureEnum": {
      "enum": [
        "exit",
        "continue"
      ],
      "title": "OnFailureEnum",
      "type": "string"
    },
    "PostgresqlSource": {
      "type": "object",
      "description": "PostgresqlSources hold the connection information to PostgreSQL data sources.\n\n!!! example\n\n    === \"Simple\"\n\n        ``` yaml\n            sources:\n              - name: postgresql_source\n                type: postgresql\n                database: database\n                username: {% raw %}{{ env_var('PG_USER') }}{% endraw %}\n                password: {% raw %}{{ env_var('PG_PASSWORD') }}{% endraw %}\n                connection_pool_size: 2\n        ```\n\n!!! note\n\n    Recommended environment variable use is covered in the [sources overview.](/topics/sources/)",
      "properties": {
        "path": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A unique path to this object",
          "title": "Path"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The unique name of the object across the entire project.",
          "title": "Name"
        },
        "file_path": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The path to the file that contains the object definition.",
          "title": "File Path"
        },
        "after_connect": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "After Connect"
        },
        "host": {
          "anyOf": [
            {
              "oneOf": [
                {
                  "type": "string"
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The host url of the database.",
          "title": "Host"
        },
        "port": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The port of the database.",
          "title": "Port"
        },
        "database": {
          "description": "The database that the Visivo project will use in queries.",
          "oneOf": [
            {
              "type": "string"
            }
          ],
          "title": "Database"
        },
        "username": {
          "anyOf": [
            {
              "oneOf": [
                {
                  "type": "string"
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Username for the database.",
          "title": "Username"
        },
        "password": {
          "anyOf": [
            {
              "oneOf": [
                {
                  "type": "string"
                },
                {
                  "format": "password",
                  "type": "string",
                  "writeOnly": true
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Password corresponding to the username.",
          "title": "Password"
        },
        "db_schema": {
          "anyOf": [
            {
              "oneOf": [
                {
                  "type": "string"
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The schema that the Visivo project will use in queries.",
          "title": "Db Schema"
        },
        "type": {
          "const": "postgresql",
          "title": "Type",
          "type": "string"
        },
        "connection_pool_size": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": 1,
          "description": "The pool size that is used for this connection.",
          "title": "Connection Pool Size"
        }
      },
      "required": [
        "database",
        "type"
      ],
      "title": "PostgresqlSource",
      "additionalProperties": false
    },
    "PropType": {
      "enum": [
        "bar",
        "barpolar",
        "box",
        "candlestick",
        "carpet",
        "choropleth",
        "choroplethmap",
        "choroplethmapbox",
        "cone",
        "contour",
        "contourcarpet",
        "densitymap",
        "densitymapbox",
        "funnel",
        "funnelarea",
        "heatmap",
        "histogram",
        "histogram2d",
        "histogram2dcontour",
        "icicle",
        "image",
        "indicator",
        "isosurface",
        "mesh3d",
        "ohlc",
        "parcats",
        "parcoords",
        "pie",
        "sankey",
        "scatter",
        "scatter3d",
        "scattercarpet",
        "scattergeo",
        "scattergl",
        "scattermap",
        "scattermapbox",
        "scatterpolar",
        "scatterpolargl",
        "scattersmith",
        "scatterternary",
        "splom",
        "streamtube",
        "sunburst",
        "surface",
        "treemap",
        "violin",
        "volume",
        "waterfall"
      ],
      "title": "PropType",
      "type": "string"
    },
    "RangeConfig": {
      "type": "object",
      "description": "Configuration for range-based multi-select inputs.\n\nRange inputs generate stepped values between start and end bounds.\nValues are computed at frontend runtime, not during compile/run.",
      "properties": {
        "start": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "integer"
            },
            {
              "type": "number"
            },
            {
              "type": "boolean"
            }
          ],
          "description": "Lower bound. Can be static value, query, or date expression.",
          "title": "Start"
        },
        "end": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "integer"
            },
            {
              "type": "number"
            },
            {
              "type": "boolean"
            }
          ],
          "description": "Upper bound. Can be static value, query, or date expression.",
          "title": "End"
        },
        "step": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "integer"
            },
            {
              "type": "number"
            },
            {
              "type": "boolean"
            }
          ],
          "description": "Step increment. Required. Can be static value, query, or time unit string.",
          "title": "Step"
        }
      },
      "required": [
        "start",
        "end",
        "step"
      ],
      "title": "RangeConfig",
      "additionalProperties": false
    },
    "RedshiftSource": {
      "type": "object",
      "description": "RedshiftSources hold the connection information to Amazon Redshift data sources.\n\n!!! example\n\n    === \"Basic Username/Password\"\n\n        ``` yaml\n            sources:\n              - name: redshift_source\n                type: redshift\n                database: dev\n                host: my-cluster.abcdefghij.us-east-1.redshift.amazonaws.com\n                port: 5439\n                username: {% raw %}{{ env_var('REDSHIFT_USER') }}{% endraw %}\n                password: {% raw %}{{ env_var('REDSHIFT_PASSWORD') }}{% endraw %}\n                db_schema: public\n        ```\n\n    === \"IAM Authentication\"\n\n        ``` yaml\n            sources:\n              - name: redshift_source\n                type: redshift\n                database: dev\n                host: my-cluster.abcdefghij.us-east-1.redshift.amazonaws.com\n                port: 5439\n                username: {% raw %}{{ env_var('REDSHIFT_USER') }}{% endraw %}\n                cluster_identifier: my-cluster\n                region: us-east-1\n                iam: true\n                db_schema: public\n        ```\n\n!!! note\n\n    Recommended environment variable use is covered in the [sources overview.](/topics/sources/)",
      "properties": {
        "path": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A unique path to this object",
          "title": "Path"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The unique name of the object across the entire project.",
          "title": "Name"
        },
        "file_path": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The path to the file that contains the object definition.",
          "title": "File Path"
        },
        "host": {
          "anyOf": [
            {
              "oneOf": [
                {
                  "type": "string"
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The host url of the database.",
          "title": "Host"
        },
        "port": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The port of the database.",
          "title": "Port"
        },
        "database": {
          "description": "The database that the Visivo project will use in queries.",
          "oneOf": [
            {
              "type": "string"
            }
          ],
          "title": "Database"
        },
        "username": {
          "anyOf": [
            {
              "oneOf": [
                {
                  "type": "string"
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Username for the database.",
          "title": "Username"
        },
        "password": {
          "anyOf": [
            {
              "oneOf": [
                {
                  "type": "string"
                },
                {
                  "format": "password",
                  "type": "string",
                  "writeOnly": true
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Password corresponding to the username.",
          "title": "Password"
        },
        "db_schema": {
          "anyOf": [
            {
              "oneOf": [
                {
                  "type": "string"
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The schema that the Visivo project will use in queries.",
          "title": "Db Schema"
        },
        "type": {
          "const": "redshift",
          "title": "Type",
          "type": "string"
        },
        "cluster_identifier": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The cluster identifier for IAM authentication.",
          "title": "Cluster Identifier"
        },
        "region": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The AWS region where your Redshift cluster is located.",
          "title": "Region"
        },
        "iam": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": false,
          "description": "Use IAM authentication instead of username/password.",
          "title": "Iam"
        },
        "ssl": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": true,
          "description": "Use SSL connection to Redshift.",
          "title": "Ssl"
        },
        "connection_pool_size": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": 1,
          "description": "The pool size that is used for this connection.",
          "title": "Connection Pool Size"
        }
      },
      "required": [
        "database",
        "type"
      ],
      "title": "RedshiftSource",
      "additionalProperties": false
    },
    "Relation": {
      "type": "object",
      "description": "A Relation defines how two models can be joined together.\n\nRelations enable cross-model analysis by declaring the join conditions between models.\nThis allows metrics to combine data from multiple models and enables the system to\nautomatically generate the necessary SQL JOINs. The models involved in the relation\nare inferred from the condition.\n\n!!! example\n    ```yaml\n    relations:\n      - name: orders_to_users\n        join_type: inner\n        condition: \"${ref(orders).user_id} = ${ref(users).id}\"\n        is_default: true\n    ```",
      "properties": {
        "path": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A unique path to this object",
          "title": "Path"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The unique name of the object across the entire project.",
          "title": "Name"
        },
        "file_path": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The path to the file that contains the object definition.",
          "title": "File Path"
        },
        "join_type": {
          "default": "inner",
          "description": "Type of SQL join to use when connecting the models.",
          "enum": [
            "inner",
            "left",
            "right",
            "full"
          ],
          "title": "Join Type",
          "type": "string"
        },
        "condition": {
          "description": "SQL condition for joining the models. Use ${ref(model).field} syntax to reference fields. Example: '${ref(orders).user_id} = ${ref(users).id}'. Cannot join on metrics (aggregated values).",
          "title": "Condition",
          "type": "string"
        },
        "is_default": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": false,
          "description": "Whether this is the default relation to use when joining these two models. Useful when multiple relations exist between the same pair of models.",
          "title": "Is Default"
        }
      },
      "required": [
        "condition"
      ],
      "title": "Relation",
      "additionalProperties": false
    },
    "Row": {
      "type": "object",
      "description": "Rows are the horizontal component of the dashboard grid and house 1 to many [Items](./Item/).\n\n!!! tip\n    You can set the height of a row using the `height` attribute on a row\n\n    ??? information \"Row Height Options in Pixels\"\n\n        | Height | Pixels |\n        |------------|-------|\n        | compact | wrapped |\n        | xsmall | 128 |\n        | small | 256 |\n        | medium | 396 |\n        | large | 512 |\n        | xlarge | 768 |\n        | xxlarge | 1024 |",
      "properties": {
        "path": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A unique path to this object",
          "title": "Path"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The unique name of the object across the entire project.",
          "title": "Name"
        },
        "file_path": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The path to the file that contains the object definition.",
          "title": "File Path"
        },
        "height": {
          "$ref": "#/$defs/HeightEnum",
          "default": "medium",
          "description": "Sets the height of the row."
        },
        "items": {
          "default": null,
          "description": "A list of items containing tables, charts or markdown. Items are placed in the row in the order that they are listed from left to right.",
          "items": {
            "$ref": "#/$defs/Item"
          },
          "title": "Items",
          "type": "array"
        }
      },
      "title": "Row",
      "additionalProperties": false
    },
    "RowsPerPageEnum": {
      "enum": [
        3,
        5,
        15,
        25,
        50,
        100,
        500,
        1000
      ],
      "title": "RowsPerPageEnum",
      "type": "integer"
    },
    "Selector": {
      "description": "Selectors enable you to toggle between multiple different traces in your chart.\n\n!!! tip\n    Selectors can also be used to add interactivity between charts different tables. You can read more about using [selectors to add interactivity here](../../../topics/interactivity).\n\nYou can configure selectors to be single select or multi-select. Single select is great if you only want to show a single trace at a time on the chart while the multi-select can be really useful for providing filtering capabilities.\n\n### Example\nHere's how you might use selectors to create interactivity between two different charts.\n``` yaml\ncharts:\n    - name: Chart One\n      selector:\n          name: Common Selector\n          type: single\n          ...\n    - name: Chart Two\n      selector: ref(Common Selector)\n      ...\n```",
      "properties": {
        "path": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A unique path to this object",
          "title": "Path"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The unique name of the object across the entire project.",
          "title": "Name"
        },
        "file_path": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The path to the file that contains the object definition.",
          "title": "File Path"
        },
        "type": {
          "$ref": "#/$defs/SelectorType",
          "default": "multiple",
          "description": "Single or multiple selector"
        },
        "options": {
          "default": [],
          "description": "Optional set of traces, items, or rows to create the choices list",
          "items": {
            "oneOf": [
              {
                "pattern": "^ref\\(\\s*([a-zA-Z0-9\\s'\\\"\\-_]+)\\s*\\)$",
                "type": "string"
              },
              {
                "pattern": "^\\$\\{.*\\}$",
                "type": "string"
              }
            ]
          },
          "title": "Options",
          "type": "array"
        }
      },
      "title": "Selector",
      "type": "object"
    },
    "SelectorType": {
      "enum": [
        "single",
        "multiple"
      ],
      "title": "SelectorType",
      "type": "string"
    },
    "SingleSelectDefault": {
      "type": "object",
      "description": "Default value configuration for single-select inputs.",
      "properties": {
        "value": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "integer"
            },
            {
              "type": "number"
            },
            {
              "type": "boolean"
            }
          ],
          "description": "Default selected value. Can be static value or query.",
          "title": "Value"
        }
      },
      "required": [
        "value"
      ],
      "title": "SingleSelectDefault",
      "additionalProperties": false
    },
    "SingleSelectDisplay": {
      "type": "object",
      "description": "Display configuration for single-select inputs.",
      "properties": {
        "type": {
          "default": "dropdown",
          "description": "UI component type for rendering the input.",
          "enum": [
            "dropdown",
            "radio",
            "toggle",
            "tabs",
            "autocomplete",
            "slider"
          ],
          "title": "Type",
          "type": "string"
        },
        "default": {
          "anyOf": [
            {
              "$ref": "#/$defs/SingleSelectDefault"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Default value configuration. If not specified, first option is used."
        }
      },
      "title": "SingleSelectDisplay",
      "additionalProperties": false
    },
    "SingleSelectInput": {
      "type": "object",
      "description": "Single-select input for choosing one value from a set of options.\n\nOptions can be defined as a static list or a query that returns values.\nThe selected value is accessed using the `.value` accessor in filters.\n\nExample YAML:\n    inputs:\n      - name: region\n        type: single-select\n        options: ['East', 'West', 'North', 'South']\n        display:\n          type: dropdown\n          default:\n            value: 'East'\n\n    insights:\n      - name: sales_by_region\n        interactions:\n          - filter: ?{ region = ${ref(region).value} }",
      "properties": {
        "path": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A unique path to this object",
          "title": "Path"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The unique name of the object across the entire project.",
          "title": "Name"
        },
        "file_path": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The path to the file that contains the object definition.",
          "title": "File Path"
        },
        "type": {
          "const": "single-select",
          "default": "single-select",
          "description": "Input type identifier.",
          "title": "Type",
          "type": "string"
        },
        "label": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Label shown to the user",
          "title": "Label"
        },
        "options": {
          "anyOf": [
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "type": "string"
            }
          ],
          "description": "Available options. Can be a static list or a query string. Query must reference exactly one SqlModel using ${ref(model_name)}.",
          "title": "Options"
        },
        "display": {
          "anyOf": [
            {
              "$ref": "#/$defs/SingleSelectDisplay"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Display configuration including UI component type and default value. If not specified, defaults to dropdown with first option selected."
        }
      },
      "required": [
        "options"
      ],
      "title": "SingleSelectInput",
      "additionalProperties": false
    },
    "SlackDestination": {
      "type": "object",
      "description": "You can configure slack alerts by setting up an incoming message slack webhook. Once you do that, the set up in Visivo is super simple:\n``` yaml\nalerts:\n  - name: slack-destination #any name you choose\n    type: slack\n    webhook_url: {% raw %}{{ env_var(\"SLACK_WEBHOOK\")}}{% endraw %}\n```",
      "properties": {
        "path": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A unique path to this object",
          "title": "Path"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The unique name of the object across the entire project.",
          "title": "Name"
        },
        "file_path": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The path to the file that contains the object definition.",
          "title": "File Path"
        },
        "webhook_url": {
          "default": null,
          "description": "An incoming message slack webhook url. You can set one of those up by following <a href='<https://api.slack.com/messaging/webhooks>'>these instructions</a>.",
          "title": "Webhook Url",
          "type": "string"
        },
        "type": {
          "const": "slack",
          "description": "The type of Destination Destination. Needs to be `slack` to configure a slack destination",
          "title": "Type",
          "type": "string"
        }
      },
      "required": [
        "type"
      ],
      "title": "SlackDestination",
      "additionalProperties": false
    },
    "SnowflakeSource": {
      "type": "object",
      "description": "SnowflakeSources hold the connection information to Snowflake data sources.\n\n!!! example\n\n    === \"Simple\"\n\n        ``` yaml\n            sources:\n              - name: snowflake_source\n                type: snowflake\n                database: DEV\n                warehouse: DEV\n                account: ab12345.us-west-1.aws\n                db_schema: DEFAULT\n                username: {% raw %}{{ env_var('SNOWFLAKE_USER') }}{% endraw %}\n                password: {% raw %}{{ env_var('SNOWFLAKE_PASSWORD') }}{% endraw %}\n        ```\n\n    === \"Key Authentication\"\n\n        ``` yaml\n            sources:\n              - name: snowflake_source\n                type: snowflake\n                database: DEV\n                warehouse: DEV\n                account: ab12345.us-west-1.aws\n                db_schema: DEFAULT\n                username: {% raw %}\"{{ env_var('SNOWFLAKE_USER') }}\"{% endraw %}\n                private_key_path: /path/to/rsa_key.p8\n                private_key_passphrase: {% raw %}\"{{ env_var('DB_PRIVATE_KEY_PASSPHRASE') }}\"{% endraw %}\n        ```\n\nNote: Recommended environment variable use is covered in the [sources overview.](/topics/sources/)",
      "properties": {
        "path": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A unique path to this object",
          "title": "Path"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The unique name of the object across the entire project.",
          "title": "Name"
        },
        "file_path": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The path to the file that contains the object definition.",
          "title": "File Path"
        },
        "after_connect": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "After Connect"
        },
        "host": {
          "anyOf": [
            {
              "oneOf": [
                {
                  "type": "string"
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The host url of the database.",
          "title": "Host"
        },
        "port": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The port of the database.",
          "title": "Port"
        },
        "database": {
          "description": "The database that the Visivo project will use in queries.",
          "oneOf": [
            {
              "type": "string"
            }
          ],
          "title": "Database"
        },
        "username": {
          "anyOf": [
            {
              "oneOf": [
                {
                  "type": "string"
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Username for the database.",
          "title": "Username"
        },
        "password": {
          "anyOf": [
            {
              "oneOf": [
                {
                  "type": "string"
                },
                {
                  "format": "password",
                  "type": "string",
                  "writeOnly": true
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Password corresponding to the username.",
          "title": "Password"
        },
        "db_schema": {
          "anyOf": [
            {
              "oneOf": [
                {
                  "type": "string"
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The schema that the Visivo project will use in queries.",
          "title": "Db Schema"
        },
        "account": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The snowflake account url. Here's how you find this: [snowflake docs](https://docs.snowflake.com/en/user-guide/admin-account-identifier).",
          "title": "Account"
        },
        "warehouse": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The compute warehouse that you want queries from your Visivo project to leverage.",
          "title": "Warehouse"
        },
        "role": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The access role that you want to use when running queries.",
          "title": "Role"
        },
        "timezone": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The timezone that you want to use by default when running queries.",
          "title": "Timezone"
        },
        "private_key_path": {
          "anyOf": [
            {
              "oneOf": [
                {
                  "type": "string"
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Path to the private key file (.p8) for key pair authentication. If provided, password will be ignored.",
          "title": "Private Key Path"
        },
        "private_key_passphrase": {
          "anyOf": [
            {
              "oneOf": [
                {
                  "type": "string"
                },
                {
                  "format": "password",
                  "type": "string",
                  "writeOnly": true
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Passphrase for the private key file if it is encrypted.",
          "title": "Private Key Passphrase"
        },
        "type": {
          "const": "snowflake",
          "title": "Type",
          "type": "string"
        },
        "connection_pool_size": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": 8,
          "description": "The pool size that is used for this connection.",
          "title": "Connection Pool Size"
        }
      },
      "required": [
        "database",
        "type"
      ],
      "title": "SnowflakeSource",
      "additionalProperties": false
    },
    "SqlModel": {
      "type": "object",
      "properties": {
        "path": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A unique path to this object",
          "title": "Path"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The unique name of the object across the entire project.",
          "title": "Name"
        },
        "file_path": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The path to the file that contains the object definition.",
          "title": "File Path"
        },
        "sql": {
          "default": null,
          "description": "The sql used to generate your base data",
          "title": "Sql",
          "type": "string"
        },
        "source": {
          "anyOf": [
            {
              "oneOf": [
                {
                  "pattern": "^ref\\(\\s*([a-zA-Z0-9\\s'\\\"\\-_]+)\\s*\\)$",
                  "type": "string"
                },
                {
                  "pattern": "^\\$\\{.*\\}$",
                  "type": "string"
                },
                {
                  "$ref": "#/$defs/SqliteSource"
                },
                {
                  "$ref": "#/$defs/PostgresqlSource"
                },
                {
                  "$ref": "#/$defs/MysqlSource"
                },
                {
                  "$ref": "#/$defs/SnowflakeSource"
                },
                {
                  "$ref": "#/$defs/BigQuerySource"
                },
                {
                  "$ref": "#/$defs/RedshiftSource"
                },
                {
                  "$ref": "#/$defs/DuckdbSource"
                },
                {
                  "$ref": "#/$defs/CSVFileSource"
                },
                {
                  "$ref": "#/$defs/ExcelFileSource"
                },
                {
                  "$ref": "#/$defs/ClickhouseSource"
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A source object defined inline or a ref() to a chart. Override the defaults.source_name",
          "title": "Source"
        },
        "metrics": {
          "default": [],
          "description": "A list of model-scoped metrics that aggregate data from this model.",
          "items": {
            "$ref": "#/$defs/Metric"
          },
          "title": "Metrics",
          "type": "array"
        },
        "dimensions": {
          "default": [],
          "description": "A list of computed dimensions (row-level calculations) for this model.",
          "items": {
            "$ref": "#/$defs/Dimension"
          },
          "title": "Dimensions",
          "type": "array"
        }
      },
      "title": "SqlModel",
      "additionalProperties": false
    },
    "SqliteSource": {
      "type": "object",
      "description": "SqliteSources hold the connection information to SQLite data sources.\n\n!!! example {% raw %}\n\n    === \"Simple\"\n\n        ``` yaml\n        sources:\n          - name: sqlite_source\n            database: local/file/local.db\n            type: sqlite\n        ```\n\n    === \"Additional Attached\"\n        Attaching other SQLite databases allows you to join models between databases.\n\n        ``` yaml\n        sources:\n          - name: sqlite_source\n            database: local/file/local.db\n            type: sqlite\n            attach:\n              - schema_name: static\n                name: static_source\n                database: local/static/file/local.db\n                type: sqlite\n        ```\n\n        The above source can be then used in a model and the sql for that model might look similar to: `SELECT * FROM local AS l JOIN static.data AS sd ON l.static_id=sd.id`\n{% endraw %}\n\n!!! note\n\n    Recommended environment variable use is covered in the [sources overview.](/topics/sources/)",
      "properties": {
        "path": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A unique path to this object",
          "title": "Path"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The unique name of the object across the entire project.",
          "title": "Name"
        },
        "file_path": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The path to the file that contains the object definition.",
          "title": "File Path"
        },
        "after_connect": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "After Connect"
        },
        "host": {
          "anyOf": [
            {
              "oneOf": [
                {
                  "type": "string"
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The host url of the database.",
          "title": "Host"
        },
        "port": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The port of the database.",
          "title": "Port"
        },
        "database": {
          "description": "The database that the Visivo project will use in queries.",
          "oneOf": [
            {
              "type": "string"
            }
          ],
          "title": "Database"
        },
        "username": {
          "anyOf": [
            {
              "oneOf": [
                {
                  "type": "string"
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Username for the database.",
          "title": "Username"
        },
        "password": {
          "anyOf": [
            {
              "oneOf": [
                {
                  "type": "string"
                },
                {
                  "format": "password",
                  "type": "string",
                  "writeOnly": true
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Password corresponding to the username.",
          "title": "Password"
        },
        "db_schema": {
          "anyOf": [
            {
              "oneOf": [
                {
                  "type": "string"
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The schema that the Visivo project will use in queries.",
          "title": "Db Schema"
        },
        "type": {
          "const": "sqlite",
          "title": "Type",
          "type": "string"
        },
        "attach": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/Attachment"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "List of other local SQLite database sources to attach in the connection that will be available in the base SQL query.",
          "title": "Attach"
        }
      },
      "required": [
        "database",
        "type"
      ],
      "title": "SqliteSource",
      "additionalProperties": false
    },
    "Table": {
      "type": "object",
      "description": "Tables enable you to quickly represent trace data in a tabular format.\n\nSince tables sit on top of trace data, the steps to create a table from scratch are as follows:\n\n1. Create a model.\n1. Create a trace with columns or props that references your model.\n1. Create a table that references the trace. Within the table.columns block you will need to explicitly state the trace columns and header names that you want to include.\n\n### Example\n``` yaml\nmodels:\n  - name: table-model\n    sql: |\n        select\n            project_name,\n            project_created_at,\n            cli_version,\n            stage_name,\n            account_name,\n            stage_archived\n        FROM visivo_project\ntraces:\n  - name: pre-table-trace\n    model: ref(table-model)\n    columns:\n        project_name: project_name\n        project_created_at: project_created_at::varchar\n        cli_version: cli_version\n        stage_name: stage_name\n        account_name: account_name\n        stage_archived: stage_archived::varchar\n    props:\n        type: scatter\n        x: column(project_created_at)\n        y: column(project_name)\ntables:\n  - name: latest-projects-table\n    traces:\n      - ref(pre-table-trace)\n    column_defs:\n      - trace_name: pre-table-trace\n        columns:\n        - header: \"Project Name\"\n          key: columns.project_name\n        - header: \"Project Created At\"\n          key: columns.project_created_at\n        - header: \"Project Json\"\n          key: columns.project_json\n        - header: \"CLI Version\"\n          key: columns.cli_version\n        - header: \"Stage Name\"\n          key: columns.stage_name\n          aggregation: uniqueCount\n        - header: \"Account Name\"\n          key: columns.account_name\n        - header: \"Account Name\"\n          key: columns.stage_archived\n```\nTables are built on the [material react table framework](https://www.material-react-table.com/).",
      "properties": {
        "path": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A unique path to this object",
          "title": "Path"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The unique name of the object across the entire project.",
          "title": "Name"
        },
        "file_path": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The path to the file that contains the object definition.",
          "title": "File Path"
        },
        "selector": {
          "anyOf": [
            {
              "oneOf": [
                {
                  "pattern": "^ref\\(\\s*([a-zA-Z0-9\\s'\\\"\\-_]+)\\s*\\)$",
                  "type": "string"
                },
                {
                  "pattern": "^\\$\\{.*\\}$",
                  "type": "string"
                },
                {
                  "$ref": "#/$defs/Selector"
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The selector for the choosing which trace data is shown.",
          "title": "Selector"
        },
        "traces": {
          "default": [],
          "description": "A ref() to a trace or trace defined in line. Data for the table will come from the trace.",
          "items": {
            "oneOf": [
              {
                "pattern": "^ref\\(\\s*([a-zA-Z0-9\\s'\\\"\\-_]+)\\s*\\)$",
                "type": "string"
              },
              {
                "pattern": "^\\$\\{.*\\}$",
                "type": "string"
              },
              {
                "$ref": "#/$defs/Trace"
              }
            ]
          },
          "title": "Traces",
          "type": "array"
        },
        "insights": {
          "default": [],
          "description": "A ref() to a insight or insight defined in line. Data for the table will come from the insight.",
          "items": {
            "oneOf": [
              {
                "pattern": "^ref\\(\\s*([a-zA-Z0-9\\s'\\\"\\-_]+)\\s*\\)$",
                "type": "string"
              },
              {
                "pattern": "^\\$\\{.*\\}$",
                "type": "string"
              },
              {
                "$ref": "#/$defs/Insight"
              }
            ]
          },
          "title": "Insights",
          "type": "array"
        },
        "column_defs": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/TableColumnDefinition"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A list of column definitions. These definitions define the columns for a given trace included in this table.",
          "title": "Column Defs"
        },
        "rows_per_page": {
          "$ref": "#/$defs/RowsPerPageEnum",
          "default": 50,
          "description": "The number of rows to show per page. Default is 50 rows"
        }
      },
      "title": "Table",
      "additionalProperties": false
    },
    "TableColumn": {
      "type": "object",
      "properties": {
        "path": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A unique path to this object",
          "title": "Path"
        },
        "header": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The display name of the column. Defaults to readable key name.",
          "title": "Header"
        },
        "key": {
          "default": null,
          "description": "The key to the data that will pull back the value.",
          "title": "Key",
          "type": "string"
        },
        "aggregation": {
          "anyOf": [
            {
              "$ref": "#/$defs/AggregationEnum"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The aggregate function that will apply to the column when a user groups the table by a different column. Defaults to none."
        },
        "markdown": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": false,
          "description": "If true, the column content will be rendered as markdown. Defaults to false.",
          "title": "Markdown"
        }
      },
      "title": "TableColumn",
      "additionalProperties": false
    },
    "TableColumnDefinition": {
      "type": "object",
      "description": "Table columns allow you to display a subset of the available trace data.",
      "properties": {
        "path": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A unique path to this object",
          "title": "Path"
        },
        "trace_name": {
          "default": null,
          "description": "The name of the trace that the column defs apply to.",
          "title": "Trace Name",
          "type": "string"
        },
        "insight_name": {
          "default": null,
          "description": "The name of the insight that the column defs apply to.",
          "title": "Insight Name",
          "type": "string"
        },
        "columns": {
          "description": "A list of column definitions that contain `header` and `key`. `header` is the title of the column in the table. `key` is the path to the array property you want to include.  For example 'props.x' or 'columns.x_data'.",
          "items": {
            "$ref": "#/$defs/TableColumn"
          },
          "title": "Columns",
          "type": "array"
        }
      },
      "required": [
        "columns"
      ],
      "title": "TableColumnDefinition",
      "additionalProperties": false
    },
    "Test": {
      "type": "object",
      "properties": {
        "path": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A unique path to this object",
          "title": "Path"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The unique name of the object across the entire project.",
          "title": "Name"
        },
        "file_path": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The path to the file that contains the object definition.",
          "title": "File Path"
        },
        "if_": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "If"
        },
        "on_failure": {
          "$ref": "#/$defs/OnFailureEnum",
          "default": "exit"
        },
        "assertions": {
          "default": null,
          "items": {
            "type": "string"
          },
          "title": "Assertions",
          "type": "array"
        }
      },
      "title": "Test",
      "additionalProperties": false
    },
    "Trace": {
      "type": "object",
      "description": "The Trace is one of the most important objects within a Visivo Project. You can think of a trace as a single series on a chart (ie. one line, a sequence of bars, a big number ect.).\n{% raw %}\n!!! example\n    `Total Revenue by Week` would be a trace. Once you define this metric in a single trace in your project, you can add it to as many charts as you want. This is especially powerful since charts are able to join disparate axis automatically. Meaning you can define a trace for `Revenue Per Week` and then define another trace for `Revenue per Day` and include both of those traces on the same chart with no extra configuration needed.\n\nThis approach has a few key advantages:\n\n* **Modularity**: Traces can appear on multiple charts & tables.\n* **Single Source of Truth**: Traces are a single source of truth.\n* **Testable**: You can write  general & fast tests to ensure that trace data is correct.\n\n## Cohorts\nTo easily cut a trace into multiple cohorts you can use the `cohort_on` attribute.\n!!! example\n    To represent `Revenue Per Week by Account Executive`. You can use the `cohort_on` attribute to split out data into different series within a single trace.\n    ``` yaml\n    traces:\n      - name: rev-per-week-by-account-executive\n        cohort_on: \"account_executive_name\"\n        model: ref(orders)\n        columns:\n          week: date_trunc('week', \"order_date\")\n          orders: count(*)\n        props:\n          type: bar\n          x: column(week)\n          y: column(orders)\n    ```\n\nTraces are also where you define how you want to represent your data visually. Since Visivo leverages plotly for charting, you can set up a number of unique and useful trace types that are also highly customizable. See types below.\n\n## Example\n```  yaml\ntraces:\n  - name: crypto ohlc\n    model:\n      sql: 'SELECT * finance_data_atlas.FINANCE.CMCCD2019'\n    source_name: remote-snowflake\n    cohort_on: ?{ \"Cryptocurrency Name\" }\n    props:\n      type: ohlc\n      x: ?{ date_trunc('week', \"Date\")::date::varchar }\n      close: ?{ max_by(\"Value\", \"Date\") }\n      high: ?{ max(\"Value\") }\n      low: ?{ min(\"Value\") }\n      open: ?{ min_by(\"Value\", \"Date\") }\n      increasing:\n        line:\n          color: 'green'\n      decreasing:\n        line:\n          color: 'red'\n      xaxis: 'x'\n      yaxis: 'y'\n    filters:\n    - ?{\"Date\" >= '2015-01-01'}\n    - ?{ \"Cryptocurrency Name\" in ('Bitcoin (btc)', 'Ethereum (eth)', 'Dogecoin (doge)') }\n    - ?{ \"Measure Name\" = 'Price, USD' }\n```\n{% endraw %}",
      "properties": {
        "path": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A unique path to this object",
          "title": "Path"
        },
        "name": {
          "description": "The unique name of the object across the entire project.",
          "title": "Name",
          "type": "string"
        },
        "file_path": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The path to the file that contains the object definition.",
          "title": "File Path"
        },
        "model": {
          "description": "The model or model ref that Visivo should use to build the trace.",
          "oneOf": [
            {
              "pattern": "^ref\\(\\s*([a-zA-Z0-9\\s'\\\"\\-_]+)\\s*\\)$",
              "type": "string"
            },
            {
              "pattern": "^\\$\\{.*\\}$",
              "type": "string"
            },
            {
              "$ref": "#/$defs/SqlModel"
            },
            {
              "$ref": "#/$defs/CsvScriptModel"
            },
            {
              "$ref": "#/$defs/LocalMergeModel"
            }
          ],
          "title": "Model"
        },
        "cohort_on": {
          "anyOf": [
            {
              "oneOf": [
                {
                  "type": "string"
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "`cohort_on` enables splitting the trace out into different series or cohorts. The column or query referenced here will be used to cut the resulting trace.",
          "title": "Cohort On"
        },
        "order_by": {
          "anyOf": [
            {
              "items": {
                "oneOf": [
                  {
                    "type": "string"
                  }
                ]
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Takes a `column()` or `?{}` reference. Orders the dataset so that information is presented in the correct order when the trace is added to a chart. Order by query statements support using `asc` and `desc`.",
          "title": "Order By"
        },
        "filters": {
          "anyOf": [
            {
              "items": {
                "oneOf": [
                  {
                    "type": "string"
                  }
                ]
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A list of `column()` or `?{}` functions that evaluate to `true` or `false`. Can include aggregations in the sql statement.",
          "title": "Filters"
        },
        "tests": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/Test"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A list of tests to run against the trace data. Enables making assertions about the nullability of data and relationships between data.",
          "title": "Tests"
        },
        "columns": {
          "anyOf": [
            {
              "$ref": "#/$defs/TraceColumns"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Place where you can define named sql select statements. Once they are defined here they can be referenced in the trace props or in tables built on the trace."
        },
        "props": {
          "oneOf": [
            {
              "$ref": "#/$defs/Bar"
            },
            {
              "$ref": "#/$defs/Barpolar"
            },
            {
              "$ref": "#/$defs/Box"
            },
            {
              "$ref": "#/$defs/Candlestick"
            },
            {
              "$ref": "#/$defs/Carpet"
            },
            {
              "$ref": "#/$defs/Choropleth"
            },
            {
              "$ref": "#/$defs/Choroplethmap"
            },
            {
              "$ref": "#/$defs/Choroplethmapbox"
            },
            {
              "$ref": "#/$defs/Cone"
            },
            {
              "$ref": "#/$defs/Contour"
            },
            {
              "$ref": "#/$defs/Contourcarpet"
            },
            {
              "$ref": "#/$defs/Densitymap"
            },
            {
              "$ref": "#/$defs/Densitymapbox"
            },
            {
              "$ref": "#/$defs/Funnel"
            },
            {
              "$ref": "#/$defs/Funnelarea"
            },
            {
              "$ref": "#/$defs/Heatmap"
            },
            {
              "$ref": "#/$defs/Histogram"
            },
            {
              "$ref": "#/$defs/Histogram2d"
            },
            {
              "$ref": "#/$defs/Histogram2dcontour"
            },
            {
              "$ref": "#/$defs/Icicle"
            },
            {
              "$ref": "#/$defs/Image"
            },
            {
              "$ref": "#/$defs/Indicator"
            },
            {
              "$ref": "#/$defs/Isosurface"
            },
            {
              "$ref": "#/$defs/Mesh3d"
            },
            {
              "$ref": "#/$defs/Ohlc"
            },
            {
              "$ref": "#/$defs/Parcats"
            },
            {
              "$ref": "#/$defs/Parcoords"
            },
            {
              "$ref": "#/$defs/Pie"
            },
            {
              "$ref": "#/$defs/Sankey"
            },
            {
              "$ref": "#/$defs/Scatter"
            },
            {
              "$ref": "#/$defs/Scatter3d"
            },
            {
              "$ref": "#/$defs/Scattercarpet"
            },
            {
              "$ref": "#/$defs/Scattergeo"
            },
            {
              "$ref": "#/$defs/Scattergl"
            },
            {
              "$ref": "#/$defs/Scattermap"
            },
            {
              "$ref": "#/$defs/Scattermapbox"
            },
            {
              "$ref": "#/$defs/Scatterpolar"
            },
            {
              "$ref": "#/$defs/Scatterpolargl"
            },
            {
              "$ref": "#/$defs/Scattersmith"
            },
            {
              "$ref": "#/$defs/Scatterternary"
            },
            {
              "$ref": "#/$defs/Splom"
            },
            {
              "$ref": "#/$defs/Streamtube"
            },
            {
              "$ref": "#/$defs/Sunburst"
            },
            {
              "$ref": "#/$defs/Surface"
            },
            {
              "$ref": "#/$defs/Treemap"
            },
            {
              "$ref": "#/$defs/Violin"
            },
            {
              "$ref": "#/$defs/Volume"
            },
            {
              "$ref": "#/$defs/Waterfall"
            }
          ]
        },
        "relations": {
          "anyOf": [
            {
              "items": {
                "oneOf": [
                  {
                    "pattern": "^ref\\(\\s*([a-zA-Z0-9\\s'\\\"\\-_]+)\\s*\\)$",
                    "type": "string"
                  },
                  {
                    "pattern": "^\\$\\{.*\\}$",
                    "type": "string"
                  },
                  {
                    "$ref": "#/$defs/Relation"
                  }
                ]
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "List of relations to use when joining models for metrics. Can be relation names using ref() syntax (e.g., 'ref(orders_to_users)'), context references (e.g., '${orders_to_users}'), or inline Relation objects with 'left_model', 'right_model', 'condition', etc. These define the preferred join paths when metrics from different models are used together.",
          "title": "Relations"
        },
        "layout": {
          "$ref": "#/$defs/Layout"
        }
      },
      "required": [
        "name",
        "model"
      ],
      "title": "Trace",
      "additionalProperties": false
    },
    "TraceColumns": {
      "type": "object",
      "description": "Trace Columns enable you to reuse query elements as columns throughout multiple different areas within the trace.\n!!! tip\n\n    Using Trace Columns can help reduce copy and paste code!\n\nTrace Columns perform the same basic service that the `?{}` function does- allowing you to define sql select statements.\n\n!!! example {% raw %}\n\n    === \"With Inline `?{}` Function\"\n\n        ``` yaml\n        - name: Simple Line\n          model: ref(test-table)\n          props:\n            type: bar\n            x: ?{ x }\n            y: ?{ y }\n            marker:\n              color: ?{ case when x >= 5 then '#713B57' else 'grey' end }\n              line:\n                color: ?{ case when x >= 5 then '#713B57' else 'grey' end }\n            pattern:\n              shape: ?{ case when x = 5 then '/' when x = 6 THEN 'x' else '' end }\n            line:\n              width: ?{ case when x in (5,6) then 2.5 else null end }\n        ```\n\n    === \"With Trace Columns\"\n\n        ``` yaml\n        - name: Simple Line\n          model: ref(test-table)\n          columns:\n            x_data: ?{ x }\n            y_data: ?{ y }\n            color: ?{ case when x >= 5 then '#713B57' else 'grey' end }\n            shape: ?{ case when x = 5 then '/' when x = 6 THEN 'x' else '' end }\n            width: ?{ case when x in (5,6) then 2.5 else null end }\n          props:\n            type: bar\n            x: ${ columns.x_data }\n            y: ${ columns.y_data }\n            marker:\n              color: ${ columns.color }\n              line:\n                color: ${ columns.color }\n            pattern:\n              shape: ${ columns.shape }\n            line:\n              width: ${ columns.width }\n        ```\n{% endraw %}\n\n## Slicing & Indexing Column Arrays\nTrace Columns support slicing and indexing, enabling you to pull out sub-arrays or specific values from a given column array.\n\n### Indexing\nSome trace configurations require numbers or strings as inputs. For example indicator traces require a single number to represent as the\nbig value in the card. Since the `?{}` and `column()` functions always return arrays, indexing allows you to grab a single value\nfrom the array to use in configurations that require a single value.\n\nYou can index columns by using the following syntax:\n``` yaml\ncolumn(column_name)[index]\n```\nThe `index` is a zero-based index that represents the position in the array you want to pull out. Negative indexes are also supported,\nallowing you to count from the end of the array. The last value in the array is represented by -1, the second to last by -2, and so on.\n\n!!! example\n\n    A great example of a situation where you would want to use Column indexing are indicator traces.\n    ``` yaml\n    - name: Indicator Trace\n      model: ref(csv)\n      columns:\n        x_data: ?{ x }\n        y_data: ?{ y }\n      props:\n        type: \"indicator\"\n        mode: \"number+delta\"\n        value: ?{ columns.y_data[0] }\n        number:\n          prefix: \"$\"\n        delta:\n          position: \"top\"\n          reference: ?{ columns.y_data[1] }\n    ```\n    In the trace above `column(y_data)[0]` is pulling the first item in the array as the value and comparing its delta to the second item in the column y_data array.\n\n### Slicing\nSlicing allows you to pull out a sub-array from a given column array. This is useful when you only want to use a portion of the array in\na given configuration, but don't want to filter the whole trace.\n\nYou can slice columns by using the following syntax:\n``` yaml\ncolumn(column_name)[start:stop]\n```\nThe `start` and `stop` values are zero-based indexes that represent the start and end of the slice you want to pull out.\nNegative indexes are also supported, allowing you to count from the end of the array. The last value in the array is represented\nby -1, the second to last by -2, and so on.\n\nIf you omit the stop value, the slice will continue to the end of the array. If you omit the start value, the slice will start at\nthe beginning of the array.\n\n!!! example\n\n    Surface plots can be a really useful place to utilize slicing.\n    ``` yaml\n    - name: Surface Trace\n      model: ${ ref(csv) }\n      columns:\n        x_data: ?{ x }\n        y_data: ?{ y }\n      props:\n        type: surface\n        z:\n          - ${ columns.x_data }\n          - ${ columns.x_data[0:5] }\n          - ${ columns.x_data[5:10] }\n          - ${ columns.y_data }\n          - ${ columns.y_data[0:5] }\n          - ${ columns.y_data[5:10] }\n    ```\n    The trace above is creating a surface plot with lines on the plane of different lengths that represent different portions\n    of the x_data and y_data arrays.",
      "properties": {},
      "title": "TraceColumns",
      "additionalProperties": true
    },
    "TraceProps": {
      "type": "object",
      "properties": {
        "type": {
          "$ref": "#/$defs/PropType",
          "description": "Type of the trace"
        }
      },
      "required": [
        "type"
      ],
      "title": "TraceProps",
      "additionalProperties": true
    },
    "Bar": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "$id": "https://visivo.io/trace-properties/schema",
      "description": "A schema to validate plotly trace properties",
      "type": "object",
      "properties": {
        "type": {
          "const": "bar"
        },
        "alignmentgroup": {
          "default": "",
          "description": "Set several traces linked to the same position axis or matching axes to the same alignmentgroup. This controls whether bars compute their positional range dependently or independently.",
          "type": "string"
        },
        "base": {
          "description": "Sets where the bar base is drawn (in position axis units). In *stack* or *relative* barmode, traces that set *base* will be excluded and drawn in *overlay* mode instead.",
          "oneOf": [
            {
              "default": null
            },
            {
              "type": "array",
              "items": {
                "default": null
              }
            }
          ]
        },
        "basesrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `base`.",
          "type": "string"
        },
        "cliponaxis": {
          "description": "Determines whether the text nodes are clipped about the subplot axes. To show the text nodes above axis lines and tick labels, make sure to set `xaxis.layer` and `yaxis.layer` to *below traces*.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "constraintext": {
          "description": "Constrain the size of text inside or outside a bar to be no larger than the bar itself.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "inside",
                "outside",
                "both",
                "none"
              ],
              "default": "both"
            }
          ]
        },
        "customdata": {
          "description": "Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "customdatasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `customdata`.",
          "type": "string"
        },
        "dx": {
          "description": "Sets the x coordinate step. See `x0` for more info.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": 1
            }
          ]
        },
        "dy": {
          "description": "Sets the y coordinate step. See `y0` for more info.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": 1
            }
          ]
        },
        "error_x": {
          "type": "object",
          "properties": {
            "array": {
              "description": "Sets the data corresponding the length of each error bar. Values are plotted relative to the underlying data.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  }
                }
              ]
            },
            "arrayminus": {
              "description": "Sets the data corresponding the length of each error bar in the bottom (left) direction for vertical (horizontal) bars Values are plotted relative to the underlying data.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  }
                }
              ]
            },
            "arrayminussrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `arrayminus`.",
              "type": "string"
            },
            "arraysrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `array`.",
              "type": "string"
            },
            "color": {
              "description": "Sets the stroke color of the error bars.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "copy_ystyle": {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean"
                }
              ]
            },
            "symmetric": {
              "description": "Determines whether or not the error bars have the same length in both direction (top/bottom for vertical bars, left/right for horizontal bars.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean"
                }
              ]
            },
            "thickness": {
              "description": "Sets the thickness (in px) of the error bars.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 2
                }
              ]
            },
            "traceref": {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "tracerefminus": {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "type": {
              "description": "Determines the rule used to generate the error bars. If *constant`, the bar lengths are of a constant value. Set this constant in `value`. If *percent*, the bar lengths correspond to a percentage of underlying data. Set this percentage in `value`. If *sqrt*, the bar lengths correspond to the square of the underlying data. If *data*, the bar lengths are set with data set `array`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "percent",
                    "constant",
                    "sqrt",
                    "data"
                  ]
                }
              ]
            },
            "value": {
              "description": "Sets the value of either the percentage (if `type` is set to *percent*) or the constant (if `type` is set to *constant*) corresponding to the lengths of the error bars.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 10
                }
              ]
            },
            "valueminus": {
              "description": "Sets the value of either the percentage (if `type` is set to *percent*) or the constant (if `type` is set to *constant*) corresponding to the lengths of the error bars in the bottom (left) direction for vertical (horizontal) bars",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 10
                }
              ]
            },
            "visible": {
              "description": "Determines whether or not this set of error bars is visible.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean"
                }
              ]
            },
            "width": {
              "description": "Sets the width (in px) of the cross-bar at both ends of the error bars.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "error_y": {
          "type": "object",
          "properties": {
            "array": {
              "description": "Sets the data corresponding the length of each error bar. Values are plotted relative to the underlying data.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  }
                }
              ]
            },
            "arrayminus": {
              "description": "Sets the data corresponding the length of each error bar in the bottom (left) direction for vertical (horizontal) bars Values are plotted relative to the underlying data.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  }
                }
              ]
            },
            "arrayminussrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `arrayminus`.",
              "type": "string"
            },
            "arraysrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `array`.",
              "type": "string"
            },
            "color": {
              "description": "Sets the stroke color of the error bars.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "symmetric": {
              "description": "Determines whether or not the error bars have the same length in both direction (top/bottom for vertical bars, left/right for horizontal bars.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean"
                }
              ]
            },
            "thickness": {
              "description": "Sets the thickness (in px) of the error bars.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 2
                }
              ]
            },
            "traceref": {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "tracerefminus": {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "type": {
              "description": "Determines the rule used to generate the error bars. If *constant`, the bar lengths are of a constant value. Set this constant in `value`. If *percent*, the bar lengths correspond to a percentage of underlying data. Set this percentage in `value`. If *sqrt*, the bar lengths correspond to the square of the underlying data. If *data*, the bar lengths are set with data set `array`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "percent",
                    "constant",
                    "sqrt",
                    "data"
                  ]
                }
              ]
            },
            "value": {
              "description": "Sets the value of either the percentage (if `type` is set to *percent*) or the constant (if `type` is set to *constant*) corresponding to the lengths of the error bars.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 10
                }
              ]
            },
            "valueminus": {
              "description": "Sets the value of either the percentage (if `type` is set to *percent*) or the constant (if `type` is set to *constant*) corresponding to the lengths of the error bars in the bottom (left) direction for vertical (horizontal) bars",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 10
                }
              ]
            },
            "visible": {
              "description": "Determines whether or not this set of error bars is visible.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean"
                }
              ]
            },
            "width": {
              "description": "Sets the width (in px) of the cross-bar at both ends of the error bars.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "hoverinfo": {
          "description": "Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired.",
          "oneOf": [
            {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "oneOf": [
                    {
                      "type": "string",
                      "enum": [
                        "all",
                        "none",
                        "skip"
                      ]
                    },
                    {
                      "type": "string",
                      "pattern": "^(x|y|z|text|name)(\\+(x|y|z|text|name))*$"
                    }
                  ],
                  "default": "all"
                }
              ]
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "oneOf": [
                      {
                        "type": "string",
                        "enum": [
                          "all",
                          "none",
                          "skip"
                        ]
                      },
                      {
                        "type": "string",
                        "pattern": "^(x|y|z|text|name)(\\+(x|y|z|text|name))*$"
                      }
                    ],
                    "default": "all"
                  }
                ]
              }
            }
          ]
        },
        "hoverinfosrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.",
          "type": "string"
        },
        "hoverlabel": {
          "type": "object",
          "properties": {
            "align": {
              "description": "Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "left",
                        "right",
                        "auto"
                      ],
                      "default": "auto"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "left",
                          "right",
                          "auto"
                        ],
                        "default": "auto"
                      }
                    ]
                  }
                }
              ]
            },
            "alignsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `align`.",
              "type": "string"
            },
            "bgcolor": {
              "description": "Sets the background color of the hover labels for this trace",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "bgcolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.",
              "type": "string"
            },
            "bordercolor": {
              "description": "Sets the border color of the hover labels for this trace.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "bordercolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.",
              "type": "string"
            },
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "colorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `color`.",
                  "type": "string"
                },
                "family": {
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "oneOf": [
                    {
                      "pattern": ".*\\S.*$",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "pattern": ".*\\S.*$",
                        "type": "string"
                      }
                    },
                    {
                      "$ref": "#/$defs/query-string"
                    }
                  ]
                },
                "familysrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `family`.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "oneOf": [
                              {
                                "type": "string",
                                "enum": [
                                  "none"
                                ]
                              },
                              {
                                "type": "string",
                                "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                              }
                            ],
                            "default": "none"
                          }
                        ]
                      }
                    }
                  ]
                },
                "linepositionsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.",
                  "type": "string"
                },
                "shadow": {
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "oneOf": [
                    {
                      "default": "none",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "default": "none",
                        "type": "string"
                      }
                    }
                  ]
                },
                "shadowsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `shadow`.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 1
                          }
                        ]
                      }
                    }
                  ]
                },
                "sizesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `size`.",
                  "type": "string"
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "italic"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "stylesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `style`.",
                  "type": "string"
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "word caps",
                              "upper",
                              "lower"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "textcasesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `textcase`.",
                  "type": "string"
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "small-caps",
                              "all-small-caps",
                              "all-petite-caps",
                              "petite-caps",
                              "unicase"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "variantsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `variant`.",
                  "type": "string"
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 1000,
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "weightsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `weight`.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "namelength": {
              "description": "Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": -1,
                      "default": 15
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "integer",
                        "minimum": -1,
                        "default": 15
                      }
                    ]
                  }
                }
              ]
            },
            "namelengthsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `namelength`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "hovertemplate": {
          "description": "Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". <https://github.com/d3/d3-format/tree/v1.4.5#d3-format> for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format> for details on the date formatting syntax. The variables available in `hovertemplate` are the ones emitted as event data described at this link <https://plotly.com/javascript/plotlyjs-events/#event-data>. Additionally, every attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `value` and `label`. Anything contained in tag `<extra>` is displayed in the secondary box, for example \"<extra>{fullData.name}</extra>\". To hide the secondary box completely, use an empty tag `<extra></extra>`.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "hovertemplatesrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.",
          "type": "string"
        },
        "hovertext": {
          "description": "Sets hover text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "hovertextsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.",
          "type": "string"
        },
        "ids": {
          "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "idssrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `ids`.",
          "type": "string"
        },
        "insidetextanchor": {
          "description": "Determines if texts are kept at center or start/end points in `textposition` *inside* mode.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "end",
                "middle",
                "start"
              ],
              "default": "end"
            }
          ]
        },
        "insidetextfont": {
          "type": "object",
          "properties": {
            "color": {
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "colorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `color`.",
              "type": "string"
            },
            "family": {
              "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
              "oneOf": [
                {
                  "pattern": ".*\\S.*$",
                  "type": "string"
                },
                {
                  "type": "array",
                  "items": {
                    "pattern": ".*\\S.*$",
                    "type": "string"
                  }
                },
                {
                  "$ref": "#/$defs/query-string"
                }
              ]
            },
            "familysrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `family`.",
              "type": "string"
            },
            "lineposition": {
              "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "oneOf": [
                          {
                            "type": "string",
                            "enum": [
                              "none"
                            ]
                          },
                          {
                            "type": "string",
                            "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                          }
                        ],
                        "default": "none"
                      }
                    ]
                  }
                }
              ]
            },
            "linepositionsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.",
              "type": "string"
            },
            "shadow": {
              "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
              "oneOf": [
                {
                  "default": "none",
                  "type": "string"
                },
                {
                  "type": "array",
                  "items": {
                    "default": "none",
                    "type": "string"
                  }
                }
              ]
            },
            "shadowsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `shadow`.",
              "type": "string"
            },
            "size": {
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 1
                      }
                    ]
                  }
                }
              ]
            },
            "sizesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `size`.",
              "type": "string"
            },
            "style": {
              "description": "Sets whether a font should be styled with a normal or italic face from its family.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "italic"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "stylesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `style`.",
              "type": "string"
            },
            "textcase": {
              "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "word caps",
                          "upper",
                          "lower"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "textcasesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `textcase`.",
              "type": "string"
            },
            "variant": {
              "description": "Sets the variant of the font.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "small-caps",
                          "all-small-caps",
                          "all-petite-caps",
                          "petite-caps",
                          "unicase"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "variantsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `variant`.",
              "type": "string"
            },
            "weight": {
              "description": "Sets the weight (or boldness) of the font.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 1000,
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "weightsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `weight`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "legend": {
          "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "legend",
              "pattern": "^legend([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "legendgroup": {
          "default": "",
          "description": "Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items.",
          "type": "string"
        },
        "legendgrouptitle": {
          "type": "object",
          "properties": {
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "family": {
                  "pattern": ".*\\S.*$",
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                "shadow": {
                  "default": "none",
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "text": {
              "default": "",
              "description": "Sets the title of the legend group.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "legendrank": {
          "description": "Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": 1000
            }
          ]
        },
        "legendwidth": {
          "description": "Sets the width (in px or fraction) of the legend for this trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0
            }
          ]
        },
        "marker": {
          "type": "object",
          "properties": {
            "autocolorscale": {
              "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": true
                }
              ]
            },
            "cauto": {
              "description": "Determines whether or not the color domain is computed with respect to the input data (here in `marker.color`) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if in `marker.color` is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": true
                }
              ]
            },
            "cmax": {
              "description": "Sets the upper bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmin` must be set as well.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": null
                }
              ]
            },
            "cmid": {
              "description": "Sets the mid-point of the color domain by scaling `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color`. Has no effect when `marker.cauto` is `false`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": null
                }
              ]
            },
            "cmin": {
              "description": "Sets the lower bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmax` must be set as well.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": null
                }
              ]
            },
            "color": {
              "description": "Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.cmin` and `marker.cmax` if set.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "coloraxis": {
              "description": "Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "string",
                  "default": null,
                  "pattern": "/^coloraxis([2-9]|[1-9][0-9]+)?$/"
                }
              ]
            },
            "colorbar": {
              "type": "object",
              "properties": {
                "bgcolor": {
                  "description": "Sets the color of padded area.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "bordercolor": {
                  "description": "Sets the axis line color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "borderwidth": {
                  "description": "Sets the width (in px) or the border enclosing this color bar.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 0
                    }
                  ]
                },
                "dtick": {
                  "description": "Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L<f>*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M<n>* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48*"
                },
                "exponentformat": {
                  "description": "Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "none",
                        "e",
                        "E",
                        "power",
                        "SI",
                        "B"
                      ],
                      "default": "B"
                    }
                  ]
                },
                "labelalias": {
                  "default": false,
                  "description": "Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax."
                },
                "len": {
                  "description": "Sets the length of the color bar This measure excludes the padding of both ends. That is, the color bar length is this length minus the padding on both ends.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "lenmode": {
                  "description": "Determines whether this color bar's length (i.e. the measure in the color variation direction) is set in units of plot *fraction* or in *pixels. Use `len` to set the value.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "fraction",
                        "pixels"
                      ],
                      "default": "fraction"
                    }
                  ]
                },
                "minexponent": {
                  "description": "Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 3
                    }
                  ]
                },
                "nticks": {
                  "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 0,
                      "default": 0
                    }
                  ]
                },
                "orientation": {
                  "description": "Sets the orientation of the colorbar.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "h",
                        "v"
                      ],
                      "default": "v"
                    }
                  ]
                },
                "outlinecolor": {
                  "description": "Sets the axis line color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "outlinewidth": {
                  "description": "Sets the width (in px) of the axis line.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "separatethousands": {
                  "description": "If \"true\", even 4-digit integers are separated",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": false
                    }
                  ]
                },
                "showexponent": {
                  "description": "If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "showticklabels": {
                  "description": "Determines whether or not the tick labels are drawn.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                },
                "showtickprefix": {
                  "description": "If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "showticksuffix": {
                  "description": "Same as `showtickprefix` but for tick suffixes.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "thickness": {
                  "description": "Sets the thickness of the color bar This measure excludes the size of the padding, ticks and labels.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 30
                    }
                  ]
                },
                "thicknessmode": {
                  "description": "Determines whether this color bar's thickness (i.e. the measure in the constant color direction) is set in units of plot *fraction* or in *pixels*. Use `thickness` to set the value.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "fraction",
                        "pixels"
                      ],
                      "default": "pixels"
                    }
                  ]
                },
                "tick0": {
                  "description": "Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L<f>* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears."
                },
                "tickangle": {
                  "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": -180,
                      "maximum": 180,
                      "default": "auto"
                    }
                  ]
                },
                "tickcolor": {
                  "description": "Sets the tick color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "tickfont": {
                  "type": "object",
                  "properties": {
                    "color": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    "family": {
                      "pattern": ".*\\S.*$",
                      "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                      "type": "string"
                    },
                    "lineposition": {
                      "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    "shadow": {
                      "default": "none",
                      "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                      "type": "string"
                    },
                    "size": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    "style": {
                      "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "textcase": {
                      "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "variant": {
                      "description": "Sets the variant of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "weight": {
                      "description": "Sets the weight (or boldness) of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    }
                  },
                  "additionalProperties": false
                },
                "tickformat": {
                  "default": "",
                  "description": "Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*",
                  "type": "string"
                },
                "tickformatstops": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "dtickrange": {
                        "description": "range [*min*, *max*], where *min*, *max* - dtick values which describe some zoom level, it is possible to omit *min* or *max* value by passing *null*",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "array",
                            "items": {},
                            "minItems": 2,
                            "maxItems": 2
                          }
                        ]
                      },
                      "enabled": {
                        "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "boolean",
                            "default": true
                          }
                        ]
                      },
                      "name": {
                        "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.",
                        "type": "string"
                      },
                      "templateitemname": {
                        "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.",
                        "type": "string"
                      },
                      "value": {
                        "default": "",
                        "description": "string - dtickformat for described zoom level, the same as *tickformat*",
                        "type": "string"
                      }
                    },
                    "additionalProperties": false
                  },
                  "minItems": 1
                },
                "ticklabeloverflow": {
                  "description": "Determines how we handle tick labels that would overflow either the graph div or the domain of the axis. The default value for inside tick labels is *hide past domain*. In other cases the default is *hide past div*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "allow",
                        "hide past div",
                        "hide past domain"
                      ]
                    }
                  ]
                },
                "ticklabelposition": {
                  "description": "Determines where tick labels are drawn relative to the ticks. Left and right options are used when `orientation` is *h*, top and bottom when `orientation` is *v*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "outside",
                        "inside",
                        "outside top",
                        "inside top",
                        "outside left",
                        "inside left",
                        "outside right",
                        "inside right",
                        "outside bottom",
                        "inside bottom"
                      ],
                      "default": "outside"
                    }
                  ]
                },
                "ticklabelstep": {
                  "description": "Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "default": 1
                    }
                  ]
                },
                "ticklen": {
                  "description": "Sets the tick length (in px).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 5
                    }
                  ]
                },
                "tickmode": {
                  "description": "Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "auto",
                        "linear",
                        "array"
                      ]
                    }
                  ]
                },
                "tickprefix": {
                  "default": "",
                  "description": "Sets a tick label prefix.",
                  "type": "string"
                },
                "ticks": {
                  "description": "Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "outside",
                        "inside",
                        ""
                      ],
                      "default": ""
                    }
                  ]
                },
                "ticksuffix": {
                  "default": "",
                  "description": "Sets a tick label suffix.",
                  "type": "string"
                },
                "ticktext": {
                  "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "string"
                          }
                        ]
                      }
                    }
                  ]
                },
                "ticktextsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.",
                  "type": "string"
                },
                "tickvals": {
                  "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "string"
                          }
                        ]
                      }
                    }
                  ]
                },
                "tickvalssrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.",
                  "type": "string"
                },
                "tickwidth": {
                  "description": "Sets the tick width (in px).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "title": {
                  "type": "object",
                  "properties": {
                    "font": {
                      "type": "object",
                      "properties": {
                        "color": {
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "$ref": "#/$defs/color"
                            }
                          ]
                        },
                        "family": {
                          "pattern": ".*\\S.*$",
                          "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                          "type": "string"
                        },
                        "lineposition": {
                          "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "oneOf": [
                                {
                                  "type": "string",
                                  "enum": [
                                    "none"
                                  ]
                                },
                                {
                                  "type": "string",
                                  "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                                }
                              ],
                              "default": "none"
                            }
                          ]
                        },
                        "shadow": {
                          "default": "none",
                          "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                          "type": "string"
                        },
                        "size": {
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "type": "number",
                              "minimum": 1
                            }
                          ]
                        },
                        "style": {
                          "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "italic"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "textcase": {
                          "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "word caps",
                                "upper",
                                "lower"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "variant": {
                          "description": "Sets the variant of the font.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "small-caps",
                                "all-small-caps",
                                "all-petite-caps",
                                "petite-caps",
                                "unicase"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "weight": {
                          "description": "Sets the weight (or boldness) of the font.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "type": "integer",
                              "minimum": 1,
                              "maximum": 1000,
                              "default": "normal"
                            }
                          ]
                        }
                      },
                      "additionalProperties": false
                    },
                    "side": {
                      "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and  defaults to *right* when `orientation` if *h*.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "right",
                            "top",
                            "bottom"
                          ]
                        }
                      ]
                    },
                    "text": {
                      "description": "Sets the title of the color bar.",
                      "type": "string"
                    }
                  },
                  "additionalProperties": false
                },
                "x": {
                  "description": "Sets the x position with respect to `xref` of the color bar (in plot fraction). When `xref` is *paper*, defaults to 1.02 when `orientation` is *v* and 0.5 when `orientation` is *h*. When `xref` is *container*, defaults to *1* when `orientation` is *v* and 0.5 when `orientation` is *h*. Must be between *0* and *1* if `xref` is *container* and between *-2* and *3* if `xref` is *paper*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number"
                    }
                  ]
                },
                "xanchor": {
                  "description": "Sets this color bar's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the color bar. Defaults to *left* when `orientation` is *v* and *center* when `orientation` is *h*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "left",
                        "center",
                        "right"
                      ]
                    }
                  ]
                },
                "xpad": {
                  "description": "Sets the amount of padding (in px) along the x direction.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 10
                    }
                  ]
                },
                "xref": {
                  "description": "Sets the container `x` refers to. *container* spans the entire `width` of the plot. *paper* refers to the width of the plotting area only.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "container",
                        "paper"
                      ],
                      "default": "paper"
                    }
                  ]
                },
                "y": {
                  "description": "Sets the y position with respect to `yref` of the color bar (in plot fraction). When `yref` is *paper*, defaults to 0.5 when `orientation` is *v* and 1.02 when `orientation` is *h*. When `yref` is *container*, defaults to 0.5 when `orientation` is *v* and 1 when `orientation` is *h*. Must be between *0* and *1* if `yref` is *container* and between *-2* and *3* if `yref` is *paper*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number"
                    }
                  ]
                },
                "yanchor": {
                  "description": "Sets this color bar's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the color bar. Defaults to *middle* when `orientation` is *v* and *bottom* when `orientation` is *h*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "top",
                        "middle",
                        "bottom"
                      ]
                    }
                  ]
                },
                "ypad": {
                  "description": "Sets the amount of padding (in px) along the y direction.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 10
                    }
                  ]
                },
                "yref": {
                  "description": "Sets the container `y` refers to. *container* spans the entire `height` of the plot. *paper* refers to the height of the plotting area only.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "container",
                        "paper"
                      ],
                      "default": "paper"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "colorscale": {
              "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/colorscale",
                  "default": null
                }
              ]
            },
            "colorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `color`.",
              "type": "string"
            },
            "cornerradius": {
              "description": "Sets the rounding of corners. May be an integer number of pixels, or a percentage of bar width (as a string ending in %). Defaults to `layout.barcornerradius`. In stack or relative barmode, the first trace to set cornerradius is used for the whole stack."
            },
            "line": {
              "type": "object",
              "properties": {
                "autocolorscale": {
                  "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.line.colorscale`. Has an effect only if in `marker.line.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                },
                "cauto": {
                  "description": "Determines whether or not the color domain is computed with respect to the input data (here in `marker.line.color`) or the bounds set in `marker.line.cmin` and `marker.line.cmax` Has an effect only if in `marker.line.color` is set to a numerical array. Defaults to `false` when `marker.line.cmin` and `marker.line.cmax` are set by the user.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                },
                "cmax": {
                  "description": "Sets the upper bound of the color domain. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color` and if set, `marker.line.cmin` must be set as well.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "default": null
                    }
                  ]
                },
                "cmid": {
                  "description": "Sets the mid-point of the color domain by scaling `marker.line.cmin` and/or `marker.line.cmax` to be equidistant to this point. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color`. Has no effect when `marker.line.cauto` is `false`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "default": null
                    }
                  ]
                },
                "cmin": {
                  "description": "Sets the lower bound of the color domain. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color` and if set, `marker.line.cmax` must be set as well.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "default": null
                    }
                  ]
                },
                "color": {
                  "description": "Sets the marker.line color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.line.cmin` and `marker.line.cmax` if set.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "coloraxis": {
                  "description": "Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "string",
                      "default": null,
                      "pattern": "/^coloraxis([2-9]|[1-9][0-9]+)?$/"
                    }
                  ]
                },
                "colorscale": {
                  "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/colorscale",
                      "default": null
                    }
                  ]
                },
                "colorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `color`.",
                  "type": "string"
                },
                "reversescale": {
                  "description": "Reverses the color mapping if true. Has an effect only if in `marker.line.color` is set to a numerical array. If true, `marker.line.cmin` will correspond to the last color in the array and `marker.line.cmax` will correspond to the first color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": false
                    }
                  ]
                },
                "width": {
                  "description": "Sets the width (in px) of the lines bounding the marker points.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 0,
                          "default": 0
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 0,
                            "default": 0
                          }
                        ]
                      }
                    }
                  ]
                },
                "widthsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `width`.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "opacity": {
              "description": "Sets the opacity of the bars.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1,
                      "default": 1
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 1,
                        "default": 1
                      }
                    ]
                  }
                }
              ]
            },
            "opacitysrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `opacity`.",
              "type": "string"
            },
            "pattern": {
              "type": "object",
              "properties": {
                "bgcolor": {
                  "description": "When there is no colorscale sets the color of background pattern fill. Defaults to a `marker.color` background when `fillmode` is *overlay*. Otherwise, defaults to a transparent background.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "bgcolorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.",
                  "type": "string"
                },
                "fgcolor": {
                  "description": "When there is no colorscale sets the color of foreground pattern fill. Defaults to a `marker.color` background when `fillmode` is *replace*. Otherwise, defaults to dark grey or white to increase contrast with the `bgcolor`.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "fgcolorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `fgcolor`.",
                  "type": "string"
                },
                "fgopacity": {
                  "description": "Sets the opacity of the foreground pattern fill. Defaults to a 0.5 when `fillmode` is *overlay*. Otherwise, defaults to 1.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1
                    }
                  ]
                },
                "fillmode": {
                  "description": "Determines whether `marker.color` should be used as a default to `bgcolor` or a `fgcolor`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "replace",
                        "overlay"
                      ],
                      "default": "replace"
                    }
                  ]
                },
                "shape": {
                  "description": "Sets the shape of the pattern fill. By default, no pattern is used for filling the area.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "",
                            "/",
                            "\\",
                            "x",
                            "-",
                            "|",
                            "+",
                            "."
                          ],
                          "default": ""
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "",
                              "/",
                              "\\",
                              "x",
                              "-",
                              "|",
                              "+",
                              "."
                            ],
                            "default": ""
                          }
                        ]
                      }
                    }
                  ]
                },
                "shapesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `shape`.",
                  "type": "string"
                },
                "size": {
                  "description": "Sets the size of unit squares of the pattern fill in pixels, which corresponds to the interval of repetition of the pattern.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 0,
                          "default": 8
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 0,
                            "default": 8
                          }
                        ]
                      }
                    }
                  ]
                },
                "sizesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `size`.",
                  "type": "string"
                },
                "solidity": {
                  "description": "Sets the solidity of the pattern fill. Solidity is roughly the fraction of the area filled by the pattern. Solidity of 0 shows only the background color without pattern and solidty of 1 shows only the foreground color without pattern.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 0,
                          "maximum": 1,
                          "default": 0.3
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 0,
                            "maximum": 1,
                            "default": 0.3
                          }
                        ]
                      }
                    }
                  ]
                },
                "soliditysrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `solidity`.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "reversescale": {
              "description": "Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            },
            "showscale": {
              "description": "Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "metasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `meta`.",
          "type": "string"
        },
        "name": {
          "description": "Sets the trace name. The trace name appears as the legend item and on hover.",
          "type": "string"
        },
        "offset": {
          "description": "Shifts the position where the bar is drawn (in position axis units). In *group* barmode, traces that set *offset* will be excluded and drawn in *overlay* mode instead.",
          "oneOf": [
            {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": null
                }
              ]
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "number",
                    "default": null
                  }
                ]
              }
            }
          ]
        },
        "offsetgroup": {
          "default": "",
          "description": "Set several traces linked to the same position axis or matching axes to the same offsetgroup where bars of the same position coordinate will line up.",
          "type": "string"
        },
        "offsetsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `offset`.",
          "type": "string"
        },
        "opacity": {
          "description": "Sets the opacity of the trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0,
              "maximum": 1,
              "default": 1
            }
          ]
        },
        "orientation": {
          "description": "Sets the orientation of the bars. With *v* (*h*), the value of the each bar spans along the vertical (horizontal).",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "v",
                "h"
              ]
            }
          ]
        },
        "outsidetextfont": {
          "type": "object",
          "properties": {
            "color": {
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "colorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `color`.",
              "type": "string"
            },
            "family": {
              "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
              "oneOf": [
                {
                  "pattern": ".*\\S.*$",
                  "type": "string"
                },
                {
                  "type": "array",
                  "items": {
                    "pattern": ".*\\S.*$",
                    "type": "string"
                  }
                },
                {
                  "$ref": "#/$defs/query-string"
                }
              ]
            },
            "familysrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `family`.",
              "type": "string"
            },
            "lineposition": {
              "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "oneOf": [
                          {
                            "type": "string",
                            "enum": [
                              "none"
                            ]
                          },
                          {
                            "type": "string",
                            "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                          }
                        ],
                        "default": "none"
                      }
                    ]
                  }
                }
              ]
            },
            "linepositionsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.",
              "type": "string"
            },
            "shadow": {
              "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
              "oneOf": [
                {
                  "default": "none",
                  "type": "string"
                },
                {
                  "type": "array",
                  "items": {
                    "default": "none",
                    "type": "string"
                  }
                }
              ]
            },
            "shadowsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `shadow`.",
              "type": "string"
            },
            "size": {
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 1
                      }
                    ]
                  }
                }
              ]
            },
            "sizesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `size`.",
              "type": "string"
            },
            "style": {
              "description": "Sets whether a font should be styled with a normal or italic face from its family.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "italic"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "stylesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `style`.",
              "type": "string"
            },
            "textcase": {
              "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "word caps",
                          "upper",
                          "lower"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "textcasesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `textcase`.",
              "type": "string"
            },
            "variant": {
              "description": "Sets the variant of the font.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "small-caps",
                          "all-small-caps",
                          "all-petite-caps",
                          "petite-caps",
                          "unicase"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "variantsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `variant`.",
              "type": "string"
            },
            "weight": {
              "description": "Sets the weight (or boldness) of the font.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 1000,
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "weightsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `weight`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "selected": {
          "type": "object",
          "properties": {
            "marker": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the marker color of selected points.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "opacity": {
                  "description": "Sets the marker opacity of selected points.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "textfont": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the text font color of selected points.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                }
              },
              "additionalProperties": false
            }
          },
          "additionalProperties": false
        },
        "selectedpoints": {
          "description": "Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect."
        },
        "showlegend": {
          "description": "Determines whether or not an item corresponding to this trace is shown in the legend.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "stream": {
          "type": "object",
          "properties": {
            "maxpoints": {
              "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 10000,
                  "default": 500
                }
              ]
            },
            "token": {
              "pattern": ".*\\S.*$",
              "description": "The stream id number links a data trace on a plot with a stream. See <https://chart-studio.plotly.com/settings> for more details.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "text": {
          "description": "Sets text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "textangle": {
          "description": "Sets the angle of the tick labels with respect to the bar. For example, a `tickangle` of -90 draws the tick labels vertically. With *auto* the texts may automatically be rotated to fit with the maximum size in bars.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": -180,
              "maximum": 180,
              "default": "auto"
            }
          ]
        },
        "textfont": {
          "type": "object",
          "properties": {
            "color": {
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "colorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `color`.",
              "type": "string"
            },
            "family": {
              "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
              "oneOf": [
                {
                  "pattern": ".*\\S.*$",
                  "type": "string"
                },
                {
                  "type": "array",
                  "items": {
                    "pattern": ".*\\S.*$",
                    "type": "string"
                  }
                },
                {
                  "$ref": "#/$defs/query-string"
                }
              ]
            },
            "familysrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `family`.",
              "type": "string"
            },
            "lineposition": {
              "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "oneOf": [
                          {
                            "type": "string",
                            "enum": [
                              "none"
                            ]
                          },
                          {
                            "type": "string",
                            "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                          }
                        ],
                        "default": "none"
                      }
                    ]
                  }
                }
              ]
            },
            "linepositionsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.",
              "type": "string"
            },
            "shadow": {
              "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
              "oneOf": [
                {
                  "default": "none",
                  "type": "string"
                },
                {
                  "type": "array",
                  "items": {
                    "default": "none",
                    "type": "string"
                  }
                }
              ]
            },
            "shadowsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `shadow`.",
              "type": "string"
            },
            "size": {
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 1
                      }
                    ]
                  }
                }
              ]
            },
            "sizesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `size`.",
              "type": "string"
            },
            "style": {
              "description": "Sets whether a font should be styled with a normal or italic face from its family.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "italic"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "stylesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `style`.",
              "type": "string"
            },
            "textcase": {
              "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "word caps",
                          "upper",
                          "lower"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "textcasesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `textcase`.",
              "type": "string"
            },
            "variant": {
              "description": "Sets the variant of the font.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "small-caps",
                          "all-small-caps",
                          "all-petite-caps",
                          "petite-caps",
                          "unicase"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "variantsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `variant`.",
              "type": "string"
            },
            "weight": {
              "description": "Sets the weight (or boldness) of the font.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 1000,
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "weightsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `weight`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "textposition": {
          "description": "Specifies the location of the `text`. *inside* positions `text` inside, next to the bar end (rotated and scaled if needed). *outside* positions `text` outside, next to the bar end (scaled if needed), unless there is another bar stacked on this one, then the text gets pushed inside. *auto* tries to position `text` inside the bar, but if the bar is too small and no bar is stacked on this one the text is moved outside. If *none*, no text appears.",
          "oneOf": [
            {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "inside",
                    "outside",
                    "auto",
                    "none"
                  ],
                  "default": "auto"
                }
              ]
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "enum": [
                      "inside",
                      "outside",
                      "auto",
                      "none"
                    ],
                    "default": "auto"
                  }
                ]
              }
            }
          ]
        },
        "textpositionsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `textposition`.",
          "type": "string"
        },
        "textsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `text`.",
          "type": "string"
        },
        "texttemplate": {
          "description": "Template string used for rendering the information text that appear on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". <https://github.com/d3/d3-format/tree/v1.4.5#d3-format> for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format> for details on the date formatting syntax. Every attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `value` and `label`.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "texttemplatesrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.",
          "type": "string"
        },
        "uid": {
          "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.",
          "type": "string"
        },
        "uirevision": {
          "description": "Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves."
        },
        "unselected": {
          "type": "object",
          "properties": {
            "marker": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the marker color of unselected points, applied only when a selection exists.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "opacity": {
                  "description": "Sets the marker opacity of unselected points, applied only when a selection exists.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "textfont": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the text font color of unselected points, applied only when a selection exists.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                }
              },
              "additionalProperties": false
            }
          },
          "additionalProperties": false
        },
        "visible": {
          "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                true,
                false,
                "legendonly"
              ],
              "default": true
            }
          ]
        },
        "width": {
          "description": "Sets the bar width (in position axis units).",
          "oneOf": [
            {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": null
                }
              ]
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "number",
                    "minimum": 0,
                    "default": null
                  }
                ]
              }
            }
          ]
        },
        "widthsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `width`.",
          "type": "string"
        },
        "x": {
          "description": "Sets the x coordinates.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "x0": {
          "default": 0,
          "description": "Alternate to `x`. Builds a linear space of x coordinates. Use with `dx` where `x0` is the starting coordinate and `dx` the step."
        },
        "xaxis": {
          "description": "Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "x",
              "pattern": "^x([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "xcalendar": {
          "description": "Sets the calendar system to use with `x` date data.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "chinese",
                "coptic",
                "discworld",
                "ethiopian",
                "gregorian",
                "hebrew",
                "islamic",
                "jalali",
                "julian",
                "mayan",
                "nanakshahi",
                "nepali",
                "persian",
                "taiwan",
                "thai",
                "ummalqura"
              ],
              "default": "gregorian"
            }
          ]
        },
        "xhoverformat": {
          "default": "",
          "description": "Sets the hover text formatting rulefor `x`  using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.",
          "type": "string"
        },
        "xperiod": {
          "default": 0,
          "description": "Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M<n>* on the x axis. Special values in the form of *M<n>* could be used to declare the number of months. In this case `n` must be a positive integer."
        },
        "xperiod0": {
          "description": "Only relevant when the axis `type` is *date*. Sets the base for period positioning in milliseconds or date string on the x0 axis. When `x0period` is round number of weeks, the `x0period0` by default would be on a Sunday i.e. 2000-01-02, otherwise it would be at 2000-01-01."
        },
        "xperiodalignment": {
          "description": "Only relevant when the axis `type` is *date*. Sets the alignment of data points on the x axis.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "start",
                "middle",
                "end"
              ],
              "default": "middle"
            }
          ]
        },
        "xsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `x`.",
          "type": "string"
        },
        "y": {
          "description": "Sets the y coordinates.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "y0": {
          "default": 0,
          "description": "Alternate to `y`. Builds a linear space of y coordinates. Use with `dy` where `y0` is the starting coordinate and `dy` the step."
        },
        "yaxis": {
          "description": "Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "y",
              "pattern": "^y([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "ycalendar": {
          "description": "Sets the calendar system to use with `y` date data.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "chinese",
                "coptic",
                "discworld",
                "ethiopian",
                "gregorian",
                "hebrew",
                "islamic",
                "jalali",
                "julian",
                "mayan",
                "nanakshahi",
                "nepali",
                "persian",
                "taiwan",
                "thai",
                "ummalqura"
              ],
              "default": "gregorian"
            }
          ]
        },
        "yhoverformat": {
          "default": "",
          "description": "Sets the hover text formatting rulefor `y`  using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.",
          "type": "string"
        },
        "yperiod": {
          "default": 0,
          "description": "Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M<n>* on the y axis. Special values in the form of *M<n>* could be used to declare the number of months. In this case `n` must be a positive integer."
        },
        "yperiod0": {
          "description": "Only relevant when the axis `type` is *date*. Sets the base for period positioning in milliseconds or date string on the y0 axis. When `y0period` is round number of weeks, the `y0period0` by default would be on a Sunday i.e. 2000-01-02, otherwise it would be at 2000-01-01."
        },
        "yperiodalignment": {
          "description": "Only relevant when the axis `type` is *date*. Sets the alignment of data points on the y axis.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "start",
                "middle",
                "end"
              ],
              "default": "middle"
            }
          ]
        },
        "ysrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `y`.",
          "type": "string"
        },
        "zorder": {
          "description": "Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "integer",
              "default": 0
            }
          ]
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false
    },
    "Barpolar": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "$id": "https://visivo.io/trace-properties/schema",
      "description": "A schema to validate plotly trace properties",
      "type": "object",
      "properties": {
        "type": {
          "const": "barpolar"
        },
        "base": {
          "description": "Sets where the bar base is drawn (in radial axis units). In *stack* barmode, traces that set *base* will be excluded and drawn in *overlay* mode instead.",
          "oneOf": [
            {
              "default": null
            },
            {
              "type": "array",
              "items": {
                "default": null
              }
            }
          ]
        },
        "basesrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `base`.",
          "type": "string"
        },
        "customdata": {
          "description": "Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "customdatasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `customdata`.",
          "type": "string"
        },
        "dr": {
          "description": "Sets the r coordinate step.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": 1
            }
          ]
        },
        "dtheta": {
          "description": "Sets the theta coordinate step. By default, the `dtheta` step equals the subplot's period divided by the length of the `r` coordinates.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number"
            }
          ]
        },
        "hoverinfo": {
          "description": "Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired.",
          "oneOf": [
            {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "oneOf": [
                    {
                      "type": "string",
                      "enum": [
                        "all",
                        "none",
                        "skip"
                      ]
                    },
                    {
                      "type": "string",
                      "pattern": "^(r|theta|text|name)(\\+(r|theta|text|name))*$"
                    }
                  ],
                  "default": "all"
                }
              ]
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "oneOf": [
                      {
                        "type": "string",
                        "enum": [
                          "all",
                          "none",
                          "skip"
                        ]
                      },
                      {
                        "type": "string",
                        "pattern": "^(r|theta|text|name)(\\+(r|theta|text|name))*$"
                      }
                    ],
                    "default": "all"
                  }
                ]
              }
            }
          ]
        },
        "hoverinfosrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.",
          "type": "string"
        },
        "hoverlabel": {
          "type": "object",
          "properties": {
            "align": {
              "description": "Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "left",
                        "right",
                        "auto"
                      ],
                      "default": "auto"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "left",
                          "right",
                          "auto"
                        ],
                        "default": "auto"
                      }
                    ]
                  }
                }
              ]
            },
            "alignsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `align`.",
              "type": "string"
            },
            "bgcolor": {
              "description": "Sets the background color of the hover labels for this trace",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "bgcolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.",
              "type": "string"
            },
            "bordercolor": {
              "description": "Sets the border color of the hover labels for this trace.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "bordercolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.",
              "type": "string"
            },
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "colorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `color`.",
                  "type": "string"
                },
                "family": {
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "oneOf": [
                    {
                      "pattern": ".*\\S.*$",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "pattern": ".*\\S.*$",
                        "type": "string"
                      }
                    },
                    {
                      "$ref": "#/$defs/query-string"
                    }
                  ]
                },
                "familysrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `family`.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "oneOf": [
                              {
                                "type": "string",
                                "enum": [
                                  "none"
                                ]
                              },
                              {
                                "type": "string",
                                "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                              }
                            ],
                            "default": "none"
                          }
                        ]
                      }
                    }
                  ]
                },
                "linepositionsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.",
                  "type": "string"
                },
                "shadow": {
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "oneOf": [
                    {
                      "default": "none",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "default": "none",
                        "type": "string"
                      }
                    }
                  ]
                },
                "shadowsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `shadow`.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 1
                          }
                        ]
                      }
                    }
                  ]
                },
                "sizesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `size`.",
                  "type": "string"
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "italic"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "stylesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `style`.",
                  "type": "string"
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "word caps",
                              "upper",
                              "lower"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "textcasesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `textcase`.",
                  "type": "string"
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "small-caps",
                              "all-small-caps",
                              "all-petite-caps",
                              "petite-caps",
                              "unicase"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "variantsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `variant`.",
                  "type": "string"
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 1000,
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "weightsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `weight`.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "namelength": {
              "description": "Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": -1,
                      "default": 15
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "integer",
                        "minimum": -1,
                        "default": 15
                      }
                    ]
                  }
                }
              ]
            },
            "namelengthsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `namelength`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "hovertemplate": {
          "description": "Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". <https://github.com/d3/d3-format/tree/v1.4.5#d3-format> for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format> for details on the date formatting syntax. The variables available in `hovertemplate` are the ones emitted as event data described at this link <https://plotly.com/javascript/plotlyjs-events/#event-data>. Additionally, every attributes that can be specified per-point (the ones that are `arrayOk: true`) are available.  Anything contained in tag `<extra>` is displayed in the secondary box, for example \"<extra>{fullData.name}</extra>\". To hide the secondary box completely, use an empty tag `<extra></extra>`.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "hovertemplatesrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.",
          "type": "string"
        },
        "hovertext": {
          "description": "Same as `text`.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "hovertextsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.",
          "type": "string"
        },
        "ids": {
          "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "idssrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `ids`.",
          "type": "string"
        },
        "legend": {
          "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "legend",
              "pattern": "^legend([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "legendgroup": {
          "default": "",
          "description": "Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items.",
          "type": "string"
        },
        "legendgrouptitle": {
          "type": "object",
          "properties": {
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "family": {
                  "pattern": ".*\\S.*$",
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                "shadow": {
                  "default": "none",
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "text": {
              "default": "",
              "description": "Sets the title of the legend group.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "legendrank": {
          "description": "Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": 1000
            }
          ]
        },
        "legendwidth": {
          "description": "Sets the width (in px or fraction) of the legend for this trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0
            }
          ]
        },
        "marker": {
          "type": "object",
          "properties": {
            "autocolorscale": {
              "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": true
                }
              ]
            },
            "cauto": {
              "description": "Determines whether or not the color domain is computed with respect to the input data (here in `marker.color`) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if in `marker.color` is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": true
                }
              ]
            },
            "cmax": {
              "description": "Sets the upper bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmin` must be set as well.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": null
                }
              ]
            },
            "cmid": {
              "description": "Sets the mid-point of the color domain by scaling `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color`. Has no effect when `marker.cauto` is `false`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": null
                }
              ]
            },
            "cmin": {
              "description": "Sets the lower bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmax` must be set as well.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": null
                }
              ]
            },
            "color": {
              "description": "Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.cmin` and `marker.cmax` if set.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "coloraxis": {
              "description": "Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "string",
                  "default": null,
                  "pattern": "/^coloraxis([2-9]|[1-9][0-9]+)?$/"
                }
              ]
            },
            "colorbar": {
              "type": "object",
              "properties": {
                "bgcolor": {
                  "description": "Sets the color of padded area.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "bordercolor": {
                  "description": "Sets the axis line color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "borderwidth": {
                  "description": "Sets the width (in px) or the border enclosing this color bar.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 0
                    }
                  ]
                },
                "dtick": {
                  "description": "Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L<f>*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M<n>* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48*"
                },
                "exponentformat": {
                  "description": "Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "none",
                        "e",
                        "E",
                        "power",
                        "SI",
                        "B"
                      ],
                      "default": "B"
                    }
                  ]
                },
                "labelalias": {
                  "default": false,
                  "description": "Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax."
                },
                "len": {
                  "description": "Sets the length of the color bar This measure excludes the padding of both ends. That is, the color bar length is this length minus the padding on both ends.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "lenmode": {
                  "description": "Determines whether this color bar's length (i.e. the measure in the color variation direction) is set in units of plot *fraction* or in *pixels. Use `len` to set the value.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "fraction",
                        "pixels"
                      ],
                      "default": "fraction"
                    }
                  ]
                },
                "minexponent": {
                  "description": "Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 3
                    }
                  ]
                },
                "nticks": {
                  "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 0,
                      "default": 0
                    }
                  ]
                },
                "orientation": {
                  "description": "Sets the orientation of the colorbar.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "h",
                        "v"
                      ],
                      "default": "v"
                    }
                  ]
                },
                "outlinecolor": {
                  "description": "Sets the axis line color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "outlinewidth": {
                  "description": "Sets the width (in px) of the axis line.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "separatethousands": {
                  "description": "If \"true\", even 4-digit integers are separated",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": false
                    }
                  ]
                },
                "showexponent": {
                  "description": "If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "showticklabels": {
                  "description": "Determines whether or not the tick labels are drawn.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                },
                "showtickprefix": {
                  "description": "If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "showticksuffix": {
                  "description": "Same as `showtickprefix` but for tick suffixes.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "thickness": {
                  "description": "Sets the thickness of the color bar This measure excludes the size of the padding, ticks and labels.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 30
                    }
                  ]
                },
                "thicknessmode": {
                  "description": "Determines whether this color bar's thickness (i.e. the measure in the constant color direction) is set in units of plot *fraction* or in *pixels*. Use `thickness` to set the value.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "fraction",
                        "pixels"
                      ],
                      "default": "pixels"
                    }
                  ]
                },
                "tick0": {
                  "description": "Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L<f>* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears."
                },
                "tickangle": {
                  "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": -180,
                      "maximum": 180,
                      "default": "auto"
                    }
                  ]
                },
                "tickcolor": {
                  "description": "Sets the tick color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "tickfont": {
                  "type": "object",
                  "properties": {
                    "color": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    "family": {
                      "pattern": ".*\\S.*$",
                      "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                      "type": "string"
                    },
                    "lineposition": {
                      "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    "shadow": {
                      "default": "none",
                      "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                      "type": "string"
                    },
                    "size": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    "style": {
                      "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "textcase": {
                      "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "variant": {
                      "description": "Sets the variant of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "weight": {
                      "description": "Sets the weight (or boldness) of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    }
                  },
                  "additionalProperties": false
                },
                "tickformat": {
                  "default": "",
                  "description": "Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*",
                  "type": "string"
                },
                "tickformatstops": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "dtickrange": {
                        "description": "range [*min*, *max*], where *min*, *max* - dtick values which describe some zoom level, it is possible to omit *min* or *max* value by passing *null*",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "array",
                            "items": {},
                            "minItems": 2,
                            "maxItems": 2
                          }
                        ]
                      },
                      "enabled": {
                        "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "boolean",
                            "default": true
                          }
                        ]
                      },
                      "name": {
                        "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.",
                        "type": "string"
                      },
                      "templateitemname": {
                        "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.",
                        "type": "string"
                      },
                      "value": {
                        "default": "",
                        "description": "string - dtickformat for described zoom level, the same as *tickformat*",
                        "type": "string"
                      }
                    },
                    "additionalProperties": false
                  },
                  "minItems": 1
                },
                "ticklabeloverflow": {
                  "description": "Determines how we handle tick labels that would overflow either the graph div or the domain of the axis. The default value for inside tick labels is *hide past domain*. In other cases the default is *hide past div*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "allow",
                        "hide past div",
                        "hide past domain"
                      ]
                    }
                  ]
                },
                "ticklabelposition": {
                  "description": "Determines where tick labels are drawn relative to the ticks. Left and right options are used when `orientation` is *h*, top and bottom when `orientation` is *v*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "outside",
                        "inside",
                        "outside top",
                        "inside top",
                        "outside left",
                        "inside left",
                        "outside right",
                        "inside right",
                        "outside bottom",
                        "inside bottom"
                      ],
                      "default": "outside"
                    }
                  ]
                },
                "ticklabelstep": {
                  "description": "Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "default": 1
                    }
                  ]
                },
                "ticklen": {
                  "description": "Sets the tick length (in px).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 5
                    }
                  ]
                },
                "tickmode": {
                  "description": "Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "auto",
                        "linear",
                        "array"
                      ]
                    }
                  ]
                },
                "tickprefix": {
                  "default": "",
                  "description": "Sets a tick label prefix.",
                  "type": "string"
                },
                "ticks": {
                  "description": "Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "outside",
                        "inside",
                        ""
                      ],
                      "default": ""
                    }
                  ]
                },
                "ticksuffix": {
                  "default": "",
                  "description": "Sets a tick label suffix.",
                  "type": "string"
                },
                "ticktext": {
                  "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "string"
                          }
                        ]
                      }
                    }
                  ]
                },
                "ticktextsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.",
                  "type": "string"
                },
                "tickvals": {
                  "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "string"
                          }
                        ]
                      }
                    }
                  ]
                },
                "tickvalssrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.",
                  "type": "string"
                },
                "tickwidth": {
                  "description": "Sets the tick width (in px).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "title": {
                  "type": "object",
                  "properties": {
                    "font": {
                      "type": "object",
                      "properties": {
                        "color": {
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "$ref": "#/$defs/color"
                            }
                          ]
                        },
                        "family": {
                          "pattern": ".*\\S.*$",
                          "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                          "type": "string"
                        },
                        "lineposition": {
                          "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "oneOf": [
                                {
                                  "type": "string",
                                  "enum": [
                                    "none"
                                  ]
                                },
                                {
                                  "type": "string",
                                  "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                                }
                              ],
                              "default": "none"
                            }
                          ]
                        },
                        "shadow": {
                          "default": "none",
                          "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                          "type": "string"
                        },
                        "size": {
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "type": "number",
                              "minimum": 1
                            }
                          ]
                        },
                        "style": {
                          "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "italic"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "textcase": {
                          "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "word caps",
                                "upper",
                                "lower"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "variant": {
                          "description": "Sets the variant of the font.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "small-caps",
                                "all-small-caps",
                                "all-petite-caps",
                                "petite-caps",
                                "unicase"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "weight": {
                          "description": "Sets the weight (or boldness) of the font.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "type": "integer",
                              "minimum": 1,
                              "maximum": 1000,
                              "default": "normal"
                            }
                          ]
                        }
                      },
                      "additionalProperties": false
                    },
                    "side": {
                      "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and  defaults to *right* when `orientation` if *h*.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "right",
                            "top",
                            "bottom"
                          ]
                        }
                      ]
                    },
                    "text": {
                      "description": "Sets the title of the color bar.",
                      "type": "string"
                    }
                  },
                  "additionalProperties": false
                },
                "x": {
                  "description": "Sets the x position with respect to `xref` of the color bar (in plot fraction). When `xref` is *paper*, defaults to 1.02 when `orientation` is *v* and 0.5 when `orientation` is *h*. When `xref` is *container*, defaults to *1* when `orientation` is *v* and 0.5 when `orientation` is *h*. Must be between *0* and *1* if `xref` is *container* and between *-2* and *3* if `xref` is *paper*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number"
                    }
                  ]
                },
                "xanchor": {
                  "description": "Sets this color bar's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the color bar. Defaults to *left* when `orientation` is *v* and *center* when `orientation` is *h*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "left",
                        "center",
                        "right"
                      ]
                    }
                  ]
                },
                "xpad": {
                  "description": "Sets the amount of padding (in px) along the x direction.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 10
                    }
                  ]
                },
                "xref": {
                  "description": "Sets the container `x` refers to. *container* spans the entire `width` of the plot. *paper* refers to the width of the plotting area only.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "container",
                        "paper"
                      ],
                      "default": "paper"
                    }
                  ]
                },
                "y": {
                  "description": "Sets the y position with respect to `yref` of the color bar (in plot fraction). When `yref` is *paper*, defaults to 0.5 when `orientation` is *v* and 1.02 when `orientation` is *h*. When `yref` is *container*, defaults to 0.5 when `orientation` is *v* and 1 when `orientation` is *h*. Must be between *0* and *1* if `yref` is *container* and between *-2* and *3* if `yref` is *paper*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number"
                    }
                  ]
                },
                "yanchor": {
                  "description": "Sets this color bar's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the color bar. Defaults to *middle* when `orientation` is *v* and *bottom* when `orientation` is *h*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "top",
                        "middle",
                        "bottom"
                      ]
                    }
                  ]
                },
                "ypad": {
                  "description": "Sets the amount of padding (in px) along the y direction.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 10
                    }
                  ]
                },
                "yref": {
                  "description": "Sets the container `y` refers to. *container* spans the entire `height` of the plot. *paper* refers to the height of the plotting area only.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "container",
                        "paper"
                      ],
                      "default": "paper"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "colorscale": {
              "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/colorscale",
                  "default": null
                }
              ]
            },
            "colorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `color`.",
              "type": "string"
            },
            "line": {
              "type": "object",
              "properties": {
                "autocolorscale": {
                  "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.line.colorscale`. Has an effect only if in `marker.line.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                },
                "cauto": {
                  "description": "Determines whether or not the color domain is computed with respect to the input data (here in `marker.line.color`) or the bounds set in `marker.line.cmin` and `marker.line.cmax` Has an effect only if in `marker.line.color` is set to a numerical array. Defaults to `false` when `marker.line.cmin` and `marker.line.cmax` are set by the user.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                },
                "cmax": {
                  "description": "Sets the upper bound of the color domain. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color` and if set, `marker.line.cmin` must be set as well.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "default": null
                    }
                  ]
                },
                "cmid": {
                  "description": "Sets the mid-point of the color domain by scaling `marker.line.cmin` and/or `marker.line.cmax` to be equidistant to this point. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color`. Has no effect when `marker.line.cauto` is `false`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "default": null
                    }
                  ]
                },
                "cmin": {
                  "description": "Sets the lower bound of the color domain. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color` and if set, `marker.line.cmax` must be set as well.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "default": null
                    }
                  ]
                },
                "color": {
                  "description": "Sets the marker.line color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.line.cmin` and `marker.line.cmax` if set.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "coloraxis": {
                  "description": "Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "string",
                      "default": null,
                      "pattern": "/^coloraxis([2-9]|[1-9][0-9]+)?$/"
                    }
                  ]
                },
                "colorscale": {
                  "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/colorscale",
                      "default": null
                    }
                  ]
                },
                "colorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `color`.",
                  "type": "string"
                },
                "reversescale": {
                  "description": "Reverses the color mapping if true. Has an effect only if in `marker.line.color` is set to a numerical array. If true, `marker.line.cmin` will correspond to the last color in the array and `marker.line.cmax` will correspond to the first color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": false
                    }
                  ]
                },
                "width": {
                  "description": "Sets the width (in px) of the lines bounding the marker points.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 0,
                          "default": 0
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 0,
                            "default": 0
                          }
                        ]
                      }
                    }
                  ]
                },
                "widthsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `width`.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "opacity": {
              "description": "Sets the opacity of the bars.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1,
                      "default": 1
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 1,
                        "default": 1
                      }
                    ]
                  }
                }
              ]
            },
            "opacitysrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `opacity`.",
              "type": "string"
            },
            "pattern": {
              "type": "object",
              "properties": {
                "bgcolor": {
                  "description": "When there is no colorscale sets the color of background pattern fill. Defaults to a `marker.color` background when `fillmode` is *overlay*. Otherwise, defaults to a transparent background.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "bgcolorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.",
                  "type": "string"
                },
                "fgcolor": {
                  "description": "When there is no colorscale sets the color of foreground pattern fill. Defaults to a `marker.color` background when `fillmode` is *replace*. Otherwise, defaults to dark grey or white to increase contrast with the `bgcolor`.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "fgcolorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `fgcolor`.",
                  "type": "string"
                },
                "fgopacity": {
                  "description": "Sets the opacity of the foreground pattern fill. Defaults to a 0.5 when `fillmode` is *overlay*. Otherwise, defaults to 1.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1
                    }
                  ]
                },
                "fillmode": {
                  "description": "Determines whether `marker.color` should be used as a default to `bgcolor` or a `fgcolor`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "replace",
                        "overlay"
                      ],
                      "default": "replace"
                    }
                  ]
                },
                "shape": {
                  "description": "Sets the shape of the pattern fill. By default, no pattern is used for filling the area.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "",
                            "/",
                            "\\",
                            "x",
                            "-",
                            "|",
                            "+",
                            "."
                          ],
                          "default": ""
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "",
                              "/",
                              "\\",
                              "x",
                              "-",
                              "|",
                              "+",
                              "."
                            ],
                            "default": ""
                          }
                        ]
                      }
                    }
                  ]
                },
                "shapesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `shape`.",
                  "type": "string"
                },
                "size": {
                  "description": "Sets the size of unit squares of the pattern fill in pixels, which corresponds to the interval of repetition of the pattern.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 0,
                          "default": 8
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 0,
                            "default": 8
                          }
                        ]
                      }
                    }
                  ]
                },
                "sizesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `size`.",
                  "type": "string"
                },
                "solidity": {
                  "description": "Sets the solidity of the pattern fill. Solidity is roughly the fraction of the area filled by the pattern. Solidity of 0 shows only the background color without pattern and solidty of 1 shows only the foreground color without pattern.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 0,
                          "maximum": 1,
                          "default": 0.3
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 0,
                            "maximum": 1,
                            "default": 0.3
                          }
                        ]
                      }
                    }
                  ]
                },
                "soliditysrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `solidity`.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "reversescale": {
              "description": "Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            },
            "showscale": {
              "description": "Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "metasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `meta`.",
          "type": "string"
        },
        "name": {
          "description": "Sets the trace name. The trace name appears as the legend item and on hover.",
          "type": "string"
        },
        "offset": {
          "description": "Shifts the angular position where the bar is drawn (in *thetatunit* units).",
          "oneOf": [
            {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": null
                }
              ]
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "number",
                    "default": null
                  }
                ]
              }
            }
          ]
        },
        "offsetsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `offset`.",
          "type": "string"
        },
        "opacity": {
          "description": "Sets the opacity of the trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0,
              "maximum": 1,
              "default": 1
            }
          ]
        },
        "r": {
          "description": "Sets the radial coordinates",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "r0": {
          "default": 0,
          "description": "Alternate to `r`. Builds a linear space of r coordinates. Use with `dr` where `r0` is the starting coordinate and `dr` the step."
        },
        "rsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `r`.",
          "type": "string"
        },
        "selected": {
          "type": "object",
          "properties": {
            "marker": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the marker color of selected points.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "opacity": {
                  "description": "Sets the marker opacity of selected points.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "textfont": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the text font color of selected points.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                }
              },
              "additionalProperties": false
            }
          },
          "additionalProperties": false
        },
        "selectedpoints": {
          "description": "Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect."
        },
        "showlegend": {
          "description": "Determines whether or not an item corresponding to this trace is shown in the legend.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "stream": {
          "type": "object",
          "properties": {
            "maxpoints": {
              "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 10000,
                  "default": 500
                }
              ]
            },
            "token": {
              "pattern": ".*\\S.*$",
              "description": "The stream id number links a data trace on a plot with a stream. See <https://chart-studio.plotly.com/settings> for more details.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "subplot": {
          "description": "Sets a reference between this trace's data coordinates and a polar subplot. If *polar* (the default value), the data refer to `layout.polar`. If *polar2*, the data refer to `layout.polar2`, and so on.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "polar",
              "pattern": "^polar([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "text": {
          "description": "Sets hover text elements associated with each bar. If a single string, the same string appears over all bars. If an array of string, the items are mapped in order to the this trace's coordinates.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "textsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `text`.",
          "type": "string"
        },
        "theta": {
          "description": "Sets the angular coordinates",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "theta0": {
          "default": 0,
          "description": "Alternate to `theta`. Builds a linear space of theta coordinates. Use with `dtheta` where `theta0` is the starting coordinate and `dtheta` the step."
        },
        "thetasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `theta`.",
          "type": "string"
        },
        "thetaunit": {
          "description": "Sets the unit of input *theta* values. Has an effect only when on *linear* angular axes.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "radians",
                "degrees",
                "gradians"
              ],
              "default": "degrees"
            }
          ]
        },
        "uid": {
          "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.",
          "type": "string"
        },
        "uirevision": {
          "description": "Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves."
        },
        "unselected": {
          "type": "object",
          "properties": {
            "marker": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the marker color of unselected points, applied only when a selection exists.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "opacity": {
                  "description": "Sets the marker opacity of unselected points, applied only when a selection exists.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "textfont": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the text font color of unselected points, applied only when a selection exists.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                }
              },
              "additionalProperties": false
            }
          },
          "additionalProperties": false
        },
        "visible": {
          "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                true,
                false,
                "legendonly"
              ],
              "default": true
            }
          ]
        },
        "width": {
          "description": "Sets the bar angular width (in *thetaunit* units).",
          "oneOf": [
            {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": null
                }
              ]
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "number",
                    "minimum": 0,
                    "default": null
                  }
                ]
              }
            }
          ]
        },
        "widthsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `width`.",
          "type": "string"
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false
    },
    "Box": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "$id": "https://visivo.io/trace-properties/schema",
      "description": "A schema to validate plotly trace properties",
      "type": "object",
      "properties": {
        "type": {
          "const": "box"
        },
        "alignmentgroup": {
          "default": "",
          "description": "Set several traces linked to the same position axis or matching axes to the same alignmentgroup. This controls whether bars compute their positional range dependently or independently.",
          "type": "string"
        },
        "boxmean": {
          "description": "If *true*, the mean of the box(es)' underlying distribution is drawn as a dashed line inside the box(es). If *sd* the standard deviation is also drawn. Defaults to *true* when `mean` is set. Defaults to *sd* when `sd` is set Otherwise defaults to *false*.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                true,
                "sd",
                false
              ]
            }
          ]
        },
        "boxpoints": {
          "description": "If *outliers*, only the sample points lying outside the whiskers are shown If *suspectedoutliers*, the outlier points are shown and points either less than 4*Q1-3*Q3 or greater than 4*Q3-3*Q1 are highlighted (see `outliercolor`) If *all*, all sample points are shown If *false*, only the box(es) are shown with no sample points Defaults to *suspectedoutliers* when `marker.outliercolor` or `marker.line.outliercolor` is set. Defaults to *all* under the q1/median/q3 signature. Otherwise defaults to *outliers*.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "all",
                "outliers",
                "suspectedoutliers",
                false
              ]
            }
          ]
        },
        "customdata": {
          "description": "Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "customdatasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `customdata`.",
          "type": "string"
        },
        "dx": {
          "description": "Sets the x coordinate step for multi-box traces set using q1/median/q3.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number"
            }
          ]
        },
        "dy": {
          "description": "Sets the y coordinate step for multi-box traces set using q1/median/q3.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number"
            }
          ]
        },
        "fillcolor": {
          "description": "Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "$ref": "#/$defs/color"
            }
          ]
        },
        "hoverinfo": {
          "description": "Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired.",
          "oneOf": [
            {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "oneOf": [
                    {
                      "type": "string",
                      "enum": [
                        "all",
                        "none",
                        "skip"
                      ]
                    },
                    {
                      "type": "string",
                      "pattern": "^(x|y|z|text|name)(\\+(x|y|z|text|name))*$"
                    }
                  ],
                  "default": "all"
                }
              ]
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "oneOf": [
                      {
                        "type": "string",
                        "enum": [
                          "all",
                          "none",
                          "skip"
                        ]
                      },
                      {
                        "type": "string",
                        "pattern": "^(x|y|z|text|name)(\\+(x|y|z|text|name))*$"
                      }
                    ],
                    "default": "all"
                  }
                ]
              }
            }
          ]
        },
        "hoverinfosrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.",
          "type": "string"
        },
        "hoverlabel": {
          "type": "object",
          "properties": {
            "align": {
              "description": "Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "left",
                        "right",
                        "auto"
                      ],
                      "default": "auto"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "left",
                          "right",
                          "auto"
                        ],
                        "default": "auto"
                      }
                    ]
                  }
                }
              ]
            },
            "alignsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `align`.",
              "type": "string"
            },
            "bgcolor": {
              "description": "Sets the background color of the hover labels for this trace",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "bgcolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.",
              "type": "string"
            },
            "bordercolor": {
              "description": "Sets the border color of the hover labels for this trace.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "bordercolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.",
              "type": "string"
            },
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "colorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `color`.",
                  "type": "string"
                },
                "family": {
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "oneOf": [
                    {
                      "pattern": ".*\\S.*$",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "pattern": ".*\\S.*$",
                        "type": "string"
                      }
                    },
                    {
                      "$ref": "#/$defs/query-string"
                    }
                  ]
                },
                "familysrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `family`.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "oneOf": [
                              {
                                "type": "string",
                                "enum": [
                                  "none"
                                ]
                              },
                              {
                                "type": "string",
                                "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                              }
                            ],
                            "default": "none"
                          }
                        ]
                      }
                    }
                  ]
                },
                "linepositionsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.",
                  "type": "string"
                },
                "shadow": {
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "oneOf": [
                    {
                      "default": "none",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "default": "none",
                        "type": "string"
                      }
                    }
                  ]
                },
                "shadowsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `shadow`.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 1
                          }
                        ]
                      }
                    }
                  ]
                },
                "sizesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `size`.",
                  "type": "string"
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "italic"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "stylesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `style`.",
                  "type": "string"
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "word caps",
                              "upper",
                              "lower"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "textcasesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `textcase`.",
                  "type": "string"
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "small-caps",
                              "all-small-caps",
                              "all-petite-caps",
                              "petite-caps",
                              "unicase"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "variantsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `variant`.",
                  "type": "string"
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 1000,
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "weightsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `weight`.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "namelength": {
              "description": "Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": -1,
                      "default": 15
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "integer",
                        "minimum": -1,
                        "default": 15
                      }
                    ]
                  }
                }
              ]
            },
            "namelengthsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `namelength`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "hoveron": {
          "description": "Do the hover effects highlight individual boxes  or sample points or both?",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "pattern": "^(boxes|points)(\\+(boxes|points))*$",
              "default": "boxes+points"
            }
          ]
        },
        "hovertemplate": {
          "description": "Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". <https://github.com/d3/d3-format/tree/v1.4.5#d3-format> for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format> for details on the date formatting syntax. The variables available in `hovertemplate` are the ones emitted as event data described at this link <https://plotly.com/javascript/plotlyjs-events/#event-data>. Additionally, every attributes that can be specified per-point (the ones that are `arrayOk: true`) are available.  Anything contained in tag `<extra>` is displayed in the secondary box, for example \"<extra>{fullData.name}</extra>\". To hide the secondary box completely, use an empty tag `<extra></extra>`.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "hovertemplatesrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.",
          "type": "string"
        },
        "hovertext": {
          "description": "Same as `text`.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "hovertextsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.",
          "type": "string"
        },
        "ids": {
          "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "idssrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `ids`.",
          "type": "string"
        },
        "jitter": {
          "description": "Sets the amount of jitter in the sample points drawn. If *0*, the sample points align along the distribution axis. If *1*, the sample points are drawn in a random jitter of width equal to the width of the box(es).",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0,
              "maximum": 1
            }
          ]
        },
        "legend": {
          "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "legend",
              "pattern": "^legend([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "legendgroup": {
          "default": "",
          "description": "Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items.",
          "type": "string"
        },
        "legendgrouptitle": {
          "type": "object",
          "properties": {
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "family": {
                  "pattern": ".*\\S.*$",
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                "shadow": {
                  "default": "none",
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "text": {
              "default": "",
              "description": "Sets the title of the legend group.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "legendrank": {
          "description": "Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": 1000
            }
          ]
        },
        "legendwidth": {
          "description": "Sets the width (in px or fraction) of the legend for this trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0
            }
          ]
        },
        "line": {
          "type": "object",
          "properties": {
            "color": {
              "description": "Sets the color of line bounding the box(es).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "width": {
              "description": "Sets the width (in px) of line bounding the box(es).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 2
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "lowerfence": {
          "description": "Sets the lower fence values. There should be as many items as the number of boxes desired. This attribute has effect only under the q1/median/q3 signature. If `lowerfence` is not provided but a sample (in `y` or `x`) is set, we compute the lower as the last sample point below 1.5 times the IQR.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "lowerfencesrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `lowerfence`.",
          "type": "string"
        },
        "marker": {
          "type": "object",
          "properties": {
            "angle": {
              "description": "Sets the marker angle in respect to `angleref`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": -180,
                  "maximum": 180,
                  "default": 0
                }
              ]
            },
            "color": {
              "description": "Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.cmin` and `marker.cmax` if set.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "line": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the marker.line color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.line.cmin` and `marker.line.cmax` if set.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "outliercolor": {
                  "description": "Sets the border line color of the outlier sample points. Defaults to marker.color",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "outlierwidth": {
                  "description": "Sets the border line width (in px) of the outlier sample points.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "width": {
                  "description": "Sets the width (in px) of the lines bounding the marker points.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 0
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "opacity": {
              "description": "Sets the marker opacity.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 1,
                  "default": 1
                }
              ]
            },
            "outliercolor": {
              "description": "Sets the color of the outlier sample points.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "size": {
              "description": "Sets the marker size (in px).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 6
                }
              ]
            },
            "symbol": {
              "description": "Sets the marker symbol type. Adding 100 is equivalent to appending *-open* to a symbol name. Adding 200 is equivalent to appending *-dot* to a symbol name. Adding 300 is equivalent to appending *-open-dot* or *dot-open* to a symbol name.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    0,
                    "0",
                    "circle",
                    100,
                    "100",
                    "circle-open",
                    200,
                    "200",
                    "circle-dot",
                    300,
                    "300",
                    "circle-open-dot",
                    1,
                    "1",
                    "square",
                    101,
                    "101",
                    "square-open",
                    201,
                    "201",
                    "square-dot",
                    301,
                    "301",
                    "square-open-dot",
                    2,
                    "2",
                    "diamond",
                    102,
                    "102",
                    "diamond-open",
                    202,
                    "202",
                    "diamond-dot",
                    302,
                    "302",
                    "diamond-open-dot",
                    3,
                    "3",
                    "cross",
                    103,
                    "103",
                    "cross-open",
                    203,
                    "203",
                    "cross-dot",
                    303,
                    "303",
                    "cross-open-dot",
                    4,
                    "4",
                    "x",
                    104,
                    "104",
                    "x-open",
                    204,
                    "204",
                    "x-dot",
                    304,
                    "304",
                    "x-open-dot",
                    5,
                    "5",
                    "triangle-up",
                    105,
                    "105",
                    "triangle-up-open",
                    205,
                    "205",
                    "triangle-up-dot",
                    305,
                    "305",
                    "triangle-up-open-dot",
                    6,
                    "6",
                    "triangle-down",
                    106,
                    "106",
                    "triangle-down-open",
                    206,
                    "206",
                    "triangle-down-dot",
                    306,
                    "306",
                    "triangle-down-open-dot",
                    7,
                    "7",
                    "triangle-left",
                    107,
                    "107",
                    "triangle-left-open",
                    207,
                    "207",
                    "triangle-left-dot",
                    307,
                    "307",
                    "triangle-left-open-dot",
                    8,
                    "8",
                    "triangle-right",
                    108,
                    "108",
                    "triangle-right-open",
                    208,
                    "208",
                    "triangle-right-dot",
                    308,
                    "308",
                    "triangle-right-open-dot",
                    9,
                    "9",
                    "triangle-ne",
                    109,
                    "109",
                    "triangle-ne-open",
                    209,
                    "209",
                    "triangle-ne-dot",
                    309,
                    "309",
                    "triangle-ne-open-dot",
                    10,
                    "10",
                    "triangle-se",
                    110,
                    "110",
                    "triangle-se-open",
                    210,
                    "210",
                    "triangle-se-dot",
                    310,
                    "310",
                    "triangle-se-open-dot",
                    11,
                    "11",
                    "triangle-sw",
                    111,
                    "111",
                    "triangle-sw-open",
                    211,
                    "211",
                    "triangle-sw-dot",
                    311,
                    "311",
                    "triangle-sw-open-dot",
                    12,
                    "12",
                    "triangle-nw",
                    112,
                    "112",
                    "triangle-nw-open",
                    212,
                    "212",
                    "triangle-nw-dot",
                    312,
                    "312",
                    "triangle-nw-open-dot",
                    13,
                    "13",
                    "pentagon",
                    113,
                    "113",
                    "pentagon-open",
                    213,
                    "213",
                    "pentagon-dot",
                    313,
                    "313",
                    "pentagon-open-dot",
                    14,
                    "14",
                    "hexagon",
                    114,
                    "114",
                    "hexagon-open",
                    214,
                    "214",
                    "hexagon-dot",
                    314,
                    "314",
                    "hexagon-open-dot",
                    15,
                    "15",
                    "hexagon2",
                    115,
                    "115",
                    "hexagon2-open",
                    215,
                    "215",
                    "hexagon2-dot",
                    315,
                    "315",
                    "hexagon2-open-dot",
                    16,
                    "16",
                    "octagon",
                    116,
                    "116",
                    "octagon-open",
                    216,
                    "216",
                    "octagon-dot",
                    316,
                    "316",
                    "octagon-open-dot",
                    17,
                    "17",
                    "star",
                    117,
                    "117",
                    "star-open",
                    217,
                    "217",
                    "star-dot",
                    317,
                    "317",
                    "star-open-dot",
                    18,
                    "18",
                    "hexagram",
                    118,
                    "118",
                    "hexagram-open",
                    218,
                    "218",
                    "hexagram-dot",
                    318,
                    "318",
                    "hexagram-open-dot",
                    19,
                    "19",
                    "star-triangle-up",
                    119,
                    "119",
                    "star-triangle-up-open",
                    219,
                    "219",
                    "star-triangle-up-dot",
                    319,
                    "319",
                    "star-triangle-up-open-dot",
                    20,
                    "20",
                    "star-triangle-down",
                    120,
                    "120",
                    "star-triangle-down-open",
                    220,
                    "220",
                    "star-triangle-down-dot",
                    320,
                    "320",
                    "star-triangle-down-open-dot",
                    21,
                    "21",
                    "star-square",
                    121,
                    "121",
                    "star-square-open",
                    221,
                    "221",
                    "star-square-dot",
                    321,
                    "321",
                    "star-square-open-dot",
                    22,
                    "22",
                    "star-diamond",
                    122,
                    "122",
                    "star-diamond-open",
                    222,
                    "222",
                    "star-diamond-dot",
                    322,
                    "322",
                    "star-diamond-open-dot",
                    23,
                    "23",
                    "diamond-tall",
                    123,
                    "123",
                    "diamond-tall-open",
                    223,
                    "223",
                    "diamond-tall-dot",
                    323,
                    "323",
                    "diamond-tall-open-dot",
                    24,
                    "24",
                    "diamond-wide",
                    124,
                    "124",
                    "diamond-wide-open",
                    224,
                    "224",
                    "diamond-wide-dot",
                    324,
                    "324",
                    "diamond-wide-open-dot",
                    25,
                    "25",
                    "hourglass",
                    125,
                    "125",
                    "hourglass-open",
                    26,
                    "26",
                    "bowtie",
                    126,
                    "126",
                    "bowtie-open",
                    27,
                    "27",
                    "circle-cross",
                    127,
                    "127",
                    "circle-cross-open",
                    28,
                    "28",
                    "circle-x",
                    128,
                    "128",
                    "circle-x-open",
                    29,
                    "29",
                    "square-cross",
                    129,
                    "129",
                    "square-cross-open",
                    30,
                    "30",
                    "square-x",
                    130,
                    "130",
                    "square-x-open",
                    31,
                    "31",
                    "diamond-cross",
                    131,
                    "131",
                    "diamond-cross-open",
                    32,
                    "32",
                    "diamond-x",
                    132,
                    "132",
                    "diamond-x-open",
                    33,
                    "33",
                    "cross-thin",
                    133,
                    "133",
                    "cross-thin-open",
                    34,
                    "34",
                    "x-thin",
                    134,
                    "134",
                    "x-thin-open",
                    35,
                    "35",
                    "asterisk",
                    135,
                    "135",
                    "asterisk-open",
                    36,
                    "36",
                    "hash",
                    136,
                    "136",
                    "hash-open",
                    236,
                    "236",
                    "hash-dot",
                    336,
                    "336",
                    "hash-open-dot",
                    37,
                    "37",
                    "y-up",
                    137,
                    "137",
                    "y-up-open",
                    38,
                    "38",
                    "y-down",
                    138,
                    "138",
                    "y-down-open",
                    39,
                    "39",
                    "y-left",
                    139,
                    "139",
                    "y-left-open",
                    40,
                    "40",
                    "y-right",
                    140,
                    "140",
                    "y-right-open",
                    41,
                    "41",
                    "line-ew",
                    141,
                    "141",
                    "line-ew-open",
                    42,
                    "42",
                    "line-ns",
                    142,
                    "142",
                    "line-ns-open",
                    43,
                    "43",
                    "line-ne",
                    143,
                    "143",
                    "line-ne-open",
                    44,
                    "44",
                    "line-nw",
                    144,
                    "144",
                    "line-nw-open",
                    45,
                    "45",
                    "arrow-up",
                    145,
                    "145",
                    "arrow-up-open",
                    46,
                    "46",
                    "arrow-down",
                    146,
                    "146",
                    "arrow-down-open",
                    47,
                    "47",
                    "arrow-left",
                    147,
                    "147",
                    "arrow-left-open",
                    48,
                    "48",
                    "arrow-right",
                    148,
                    "148",
                    "arrow-right-open",
                    49,
                    "49",
                    "arrow-bar-up",
                    149,
                    "149",
                    "arrow-bar-up-open",
                    50,
                    "50",
                    "arrow-bar-down",
                    150,
                    "150",
                    "arrow-bar-down-open",
                    51,
                    "51",
                    "arrow-bar-left",
                    151,
                    "151",
                    "arrow-bar-left-open",
                    52,
                    "52",
                    "arrow-bar-right",
                    152,
                    "152",
                    "arrow-bar-right-open",
                    53,
                    "53",
                    "arrow",
                    153,
                    "153",
                    "arrow-open",
                    54,
                    "54",
                    "arrow-wide",
                    154,
                    "154",
                    "arrow-wide-open"
                  ],
                  "default": "circle"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "mean": {
          "description": "Sets the mean values. There should be as many items as the number of boxes desired. This attribute has effect only under the q1/median/q3 signature. If `mean` is not provided but a sample (in `y` or `x`) is set, we compute the mean for each box using the sample values.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "meansrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `mean`.",
          "type": "string"
        },
        "median": {
          "description": "Sets the median values. There should be as many items as the number of boxes desired.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "mediansrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `median`.",
          "type": "string"
        },
        "metasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `meta`.",
          "type": "string"
        },
        "name": {
          "description": "Sets the trace name. The trace name appears as the legend item and on hover. For box traces, the name will also be used for the position coordinate, if `x` and `x0` (`y` and `y0` if horizontal) are missing and the position axis is categorical",
          "type": "string"
        },
        "notched": {
          "description": "Determines whether or not notches are drawn. Notches displays a confidence interval around the median. We compute the confidence interval as median +/- 1.57 * IQR / sqrt(N), where IQR is the interquartile range and N is the sample size. If two boxes' notches do not overlap there is 95% confidence their medians differ. See <https://sites.google.com/site/davidsstatistics/home/notched-box-plots> for more info. Defaults to *false* unless `notchwidth` or `notchspan` is set.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean"
            }
          ]
        },
        "notchspan": {
          "description": "Sets the notch span from the boxes' `median` values. There should be as many items as the number of boxes desired. This attribute has effect only under the q1/median/q3 signature. If `notchspan` is not provided but a sample (in `y` or `x`) is set, we compute it as 1.57 * IQR / sqrt(N), where N is the sample size.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "notchspansrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `notchspan`.",
          "type": "string"
        },
        "notchwidth": {
          "description": "Sets the width of the notches relative to the box' width. For example, with 0, the notches are as wide as the box(es).",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0,
              "maximum": 0.5,
              "default": 0.25
            }
          ]
        },
        "offsetgroup": {
          "default": "",
          "description": "Set several traces linked to the same position axis or matching axes to the same offsetgroup where bars of the same position coordinate will line up.",
          "type": "string"
        },
        "opacity": {
          "description": "Sets the opacity of the trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0,
              "maximum": 1,
              "default": 1
            }
          ]
        },
        "orientation": {
          "description": "Sets the orientation of the box(es). If *v* (*h*), the distribution is visualized along the vertical (horizontal).",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "v",
                "h"
              ]
            }
          ]
        },
        "pointpos": {
          "description": "Sets the position of the sample points in relation to the box(es). If *0*, the sample points are places over the center of the box(es). Positive (negative) values correspond to positions to the right (left) for vertical boxes and above (below) for horizontal boxes",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": -2,
              "maximum": 2
            }
          ]
        },
        "q1": {
          "description": "Sets the Quartile 1 values. There should be as many items as the number of boxes desired.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "q1src": {
          "description": "Sets the source reference on Chart Studio Cloud for `q1`.",
          "type": "string"
        },
        "q3": {
          "description": "Sets the Quartile 3 values. There should be as many items as the number of boxes desired.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "q3src": {
          "description": "Sets the source reference on Chart Studio Cloud for `q3`.",
          "type": "string"
        },
        "quartilemethod": {
          "description": "Sets the method used to compute the sample's Q1 and Q3 quartiles. The *linear* method uses the 25th percentile for Q1 and 75th percentile for Q3 as computed using method #10 (listed on <http://jse.amstat.org/v14n3/langford.html)>. The *exclusive* method uses the median to divide the ordered dataset into two halves if the sample is odd, it does not include the median in either half - Q1 is then the median of the lower half and Q3 the median of the upper half. The *inclusive* method also uses the median to divide the ordered dataset into two halves but if the sample is odd, it includes the median in both halves - Q1 is then the median of the lower half and Q3 the median of the upper half.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "linear",
                "exclusive",
                "inclusive"
              ],
              "default": "linear"
            }
          ]
        },
        "sd": {
          "description": "Sets the standard deviation values. There should be as many items as the number of boxes desired. This attribute has effect only under the q1/median/q3 signature. If `sd` is not provided but a sample (in `y` or `x`) is set, we compute the standard deviation for each box using the sample values.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "sdmultiple": {
          "description": "Scales the box size when sizemode=sd Allowing boxes to be drawn across any stddev range For example 1-stddev, 3-stddev, 5-stddev",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0,
              "default": 1
            }
          ]
        },
        "sdsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `sd`.",
          "type": "string"
        },
        "selected": {
          "type": "object",
          "properties": {
            "marker": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the marker color of selected points.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "opacity": {
                  "description": "Sets the marker opacity of selected points.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1
                    }
                  ]
                },
                "size": {
                  "description": "Sets the marker size of selected points.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0
                    }
                  ]
                }
              },
              "additionalProperties": false
            }
          },
          "additionalProperties": false
        },
        "selectedpoints": {
          "description": "Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect."
        },
        "showlegend": {
          "description": "Determines whether or not an item corresponding to this trace is shown in the legend.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "showwhiskers": {
          "description": "Determines whether or not whiskers are visible. Defaults to true for `sizemode` *quartiles*, false for *sd*.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean"
            }
          ]
        },
        "sizemode": {
          "description": "Sets the upper and lower bound for the boxes quartiles means box is drawn between Q1 and Q3 SD means the box is drawn between Mean +- Standard Deviation Argument sdmultiple (default 1) to scale the box size So it could be drawn 1-stddev, 3-stddev etc",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "quartiles",
                "sd"
              ],
              "default": "quartiles"
            }
          ]
        },
        "stream": {
          "type": "object",
          "properties": {
            "maxpoints": {
              "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 10000,
                  "default": 500
                }
              ]
            },
            "token": {
              "pattern": ".*\\S.*$",
              "description": "The stream id number links a data trace on a plot with a stream. See <https://chart-studio.plotly.com/settings> for more details.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "text": {
          "description": "Sets the text elements associated with each sample value. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "textsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `text`.",
          "type": "string"
        },
        "uid": {
          "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.",
          "type": "string"
        },
        "uirevision": {
          "description": "Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves."
        },
        "unselected": {
          "type": "object",
          "properties": {
            "marker": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the marker color of unselected points, applied only when a selection exists.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "opacity": {
                  "description": "Sets the marker opacity of unselected points, applied only when a selection exists.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1
                    }
                  ]
                },
                "size": {
                  "description": "Sets the marker size of unselected points, applied only when a selection exists.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0
                    }
                  ]
                }
              },
              "additionalProperties": false
            }
          },
          "additionalProperties": false
        },
        "upperfence": {
          "description": "Sets the upper fence values. There should be as many items as the number of boxes desired. This attribute has effect only under the q1/median/q3 signature. If `upperfence` is not provided but a sample (in `y` or `x`) is set, we compute the upper as the last sample point above 1.5 times the IQR.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "upperfencesrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `upperfence`.",
          "type": "string"
        },
        "visible": {
          "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                true,
                false,
                "legendonly"
              ],
              "default": true
            }
          ]
        },
        "whiskerwidth": {
          "description": "Sets the width of the whiskers relative to the box' width. For example, with 1, the whiskers are as wide as the box(es).",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0,
              "maximum": 1,
              "default": 0.5
            }
          ]
        },
        "width": {
          "description": "Sets the width of the box in data coordinate If *0* (default value) the width is automatically selected based on the positions of other box traces in the same subplot.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0,
              "default": 0
            }
          ]
        },
        "x": {
          "description": "Sets the x sample data or coordinates. See overview for more info.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "x0": {
          "description": "Sets the x coordinate for single-box traces or the starting coordinate for multi-box traces set using q1/median/q3. See overview for more info."
        },
        "xaxis": {
          "description": "Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "x",
              "pattern": "^x([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "xcalendar": {
          "description": "Sets the calendar system to use with `x` date data.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "chinese",
                "coptic",
                "discworld",
                "ethiopian",
                "gregorian",
                "hebrew",
                "islamic",
                "jalali",
                "julian",
                "mayan",
                "nanakshahi",
                "nepali",
                "persian",
                "taiwan",
                "thai",
                "ummalqura"
              ],
              "default": "gregorian"
            }
          ]
        },
        "xhoverformat": {
          "default": "",
          "description": "Sets the hover text formatting rulefor `x`  using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.",
          "type": "string"
        },
        "xperiod": {
          "default": 0,
          "description": "Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M<n>* on the x axis. Special values in the form of *M<n>* could be used to declare the number of months. In this case `n` must be a positive integer."
        },
        "xperiod0": {
          "description": "Only relevant when the axis `type` is *date*. Sets the base for period positioning in milliseconds or date string on the x0 axis. When `x0period` is round number of weeks, the `x0period0` by default would be on a Sunday i.e. 2000-01-02, otherwise it would be at 2000-01-01."
        },
        "xperiodalignment": {
          "description": "Only relevant when the axis `type` is *date*. Sets the alignment of data points on the x axis.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "start",
                "middle",
                "end"
              ],
              "default": "middle"
            }
          ]
        },
        "xsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `x`.",
          "type": "string"
        },
        "y": {
          "description": "Sets the y sample data or coordinates. See overview for more info.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "y0": {
          "description": "Sets the y coordinate for single-box traces or the starting coordinate for multi-box traces set using q1/median/q3. See overview for more info."
        },
        "yaxis": {
          "description": "Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "y",
              "pattern": "^y([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "ycalendar": {
          "description": "Sets the calendar system to use with `y` date data.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "chinese",
                "coptic",
                "discworld",
                "ethiopian",
                "gregorian",
                "hebrew",
                "islamic",
                "jalali",
                "julian",
                "mayan",
                "nanakshahi",
                "nepali",
                "persian",
                "taiwan",
                "thai",
                "ummalqura"
              ],
              "default": "gregorian"
            }
          ]
        },
        "yhoverformat": {
          "default": "",
          "description": "Sets the hover text formatting rulefor `y`  using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.",
          "type": "string"
        },
        "yperiod": {
          "default": 0,
          "description": "Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M<n>* on the y axis. Special values in the form of *M<n>* could be used to declare the number of months. In this case `n` must be a positive integer."
        },
        "yperiod0": {
          "description": "Only relevant when the axis `type` is *date*. Sets the base for period positioning in milliseconds or date string on the y0 axis. When `y0period` is round number of weeks, the `y0period0` by default would be on a Sunday i.e. 2000-01-02, otherwise it would be at 2000-01-01."
        },
        "yperiodalignment": {
          "description": "Only relevant when the axis `type` is *date*. Sets the alignment of data points on the y axis.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "start",
                "middle",
                "end"
              ],
              "default": "middle"
            }
          ]
        },
        "ysrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `y`.",
          "type": "string"
        },
        "zorder": {
          "description": "Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "integer",
              "default": 0
            }
          ]
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false
    },
    "Candlestick": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "$id": "https://visivo.io/trace-properties/schema",
      "description": "A schema to validate plotly trace properties",
      "type": "object",
      "properties": {
        "type": {
          "const": "candlestick"
        },
        "close": {
          "description": "Sets the close values.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "closesrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `close`.",
          "type": "string"
        },
        "customdata": {
          "description": "Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "customdatasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `customdata`.",
          "type": "string"
        },
        "decreasing": {
          "type": "object",
          "properties": {
            "fillcolor": {
              "description": "Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "line": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the color of line bounding the box(es).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "width": {
                  "description": "Sets the width (in px) of line bounding the box(es).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 2
                    }
                  ]
                }
              },
              "additionalProperties": false
            }
          },
          "additionalProperties": false
        },
        "high": {
          "description": "Sets the high values.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "highsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `high`.",
          "type": "string"
        },
        "hoverinfo": {
          "description": "Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired.",
          "oneOf": [
            {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "oneOf": [
                    {
                      "type": "string",
                      "enum": [
                        "all",
                        "none",
                        "skip"
                      ]
                    },
                    {
                      "type": "string",
                      "pattern": "^(x|y|z|text|name)(\\+(x|y|z|text|name))*$"
                    }
                  ],
                  "default": "all"
                }
              ]
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "oneOf": [
                      {
                        "type": "string",
                        "enum": [
                          "all",
                          "none",
                          "skip"
                        ]
                      },
                      {
                        "type": "string",
                        "pattern": "^(x|y|z|text|name)(\\+(x|y|z|text|name))*$"
                      }
                    ],
                    "default": "all"
                  }
                ]
              }
            }
          ]
        },
        "hoverinfosrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.",
          "type": "string"
        },
        "hoverlabel": {
          "type": "object",
          "properties": {
            "align": {
              "description": "Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "left",
                        "right",
                        "auto"
                      ],
                      "default": "auto"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "left",
                          "right",
                          "auto"
                        ],
                        "default": "auto"
                      }
                    ]
                  }
                }
              ]
            },
            "alignsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `align`.",
              "type": "string"
            },
            "bgcolor": {
              "description": "Sets the background color of the hover labels for this trace",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "bgcolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.",
              "type": "string"
            },
            "bordercolor": {
              "description": "Sets the border color of the hover labels for this trace.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "bordercolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.",
              "type": "string"
            },
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "colorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `color`.",
                  "type": "string"
                },
                "family": {
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "oneOf": [
                    {
                      "pattern": ".*\\S.*$",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "pattern": ".*\\S.*$",
                        "type": "string"
                      }
                    },
                    {
                      "$ref": "#/$defs/query-string"
                    }
                  ]
                },
                "familysrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `family`.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "oneOf": [
                              {
                                "type": "string",
                                "enum": [
                                  "none"
                                ]
                              },
                              {
                                "type": "string",
                                "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                              }
                            ],
                            "default": "none"
                          }
                        ]
                      }
                    }
                  ]
                },
                "linepositionsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.",
                  "type": "string"
                },
                "shadow": {
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "oneOf": [
                    {
                      "default": "none",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "default": "none",
                        "type": "string"
                      }
                    }
                  ]
                },
                "shadowsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `shadow`.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 1
                          }
                        ]
                      }
                    }
                  ]
                },
                "sizesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `size`.",
                  "type": "string"
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "italic"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "stylesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `style`.",
                  "type": "string"
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "word caps",
                              "upper",
                              "lower"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "textcasesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `textcase`.",
                  "type": "string"
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "small-caps",
                              "all-small-caps",
                              "all-petite-caps",
                              "petite-caps",
                              "unicase"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "variantsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `variant`.",
                  "type": "string"
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 1000,
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "weightsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `weight`.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "namelength": {
              "description": "Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": -1,
                      "default": 15
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "integer",
                        "minimum": -1,
                        "default": 15
                      }
                    ]
                  }
                }
              ]
            },
            "namelengthsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `namelength`.",
              "type": "string"
            },
            "split": {
              "description": "Show hover information (open, close, high, low) in separate labels.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "hovertext": {
          "description": "Same as `text`.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "hovertextsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.",
          "type": "string"
        },
        "ids": {
          "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "idssrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `ids`.",
          "type": "string"
        },
        "increasing": {
          "type": "object",
          "properties": {
            "fillcolor": {
              "description": "Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "line": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the color of line bounding the box(es).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "width": {
                  "description": "Sets the width (in px) of line bounding the box(es).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 2
                    }
                  ]
                }
              },
              "additionalProperties": false
            }
          },
          "additionalProperties": false
        },
        "legend": {
          "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "legend",
              "pattern": "^legend([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "legendgroup": {
          "default": "",
          "description": "Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items.",
          "type": "string"
        },
        "legendgrouptitle": {
          "type": "object",
          "properties": {
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "family": {
                  "pattern": ".*\\S.*$",
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                "shadow": {
                  "default": "none",
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "text": {
              "default": "",
              "description": "Sets the title of the legend group.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "legendrank": {
          "description": "Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": 1000
            }
          ]
        },
        "legendwidth": {
          "description": "Sets the width (in px or fraction) of the legend for this trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0
            }
          ]
        },
        "line": {
          "type": "object",
          "properties": {
            "width": {
              "description": "Sets the width (in px) of line bounding the box(es). Note that this style setting can also be set per direction via `increasing.line.width` and `decreasing.line.width`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 2
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "low": {
          "description": "Sets the low values.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "lowsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `low`.",
          "type": "string"
        },
        "metasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `meta`.",
          "type": "string"
        },
        "name": {
          "description": "Sets the trace name. The trace name appears as the legend item and on hover.",
          "type": "string"
        },
        "opacity": {
          "description": "Sets the opacity of the trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0,
              "maximum": 1,
              "default": 1
            }
          ]
        },
        "open": {
          "description": "Sets the open values.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "opensrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `open`.",
          "type": "string"
        },
        "selectedpoints": {
          "description": "Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect."
        },
        "showlegend": {
          "description": "Determines whether or not an item corresponding to this trace is shown in the legend.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "stream": {
          "type": "object",
          "properties": {
            "maxpoints": {
              "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 10000,
                  "default": 500
                }
              ]
            },
            "token": {
              "pattern": ".*\\S.*$",
              "description": "The stream id number links a data trace on a plot with a stream. See <https://chart-studio.plotly.com/settings> for more details.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "text": {
          "description": "Sets hover text elements associated with each sample point. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to this trace's sample points.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "textsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `text`.",
          "type": "string"
        },
        "uid": {
          "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.",
          "type": "string"
        },
        "uirevision": {
          "description": "Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves."
        },
        "visible": {
          "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                true,
                false,
                "legendonly"
              ],
              "default": true
            }
          ]
        },
        "whiskerwidth": {
          "description": "Sets the width of the whiskers relative to the box' width. For example, with 1, the whiskers are as wide as the box(es).",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0,
              "maximum": 1,
              "default": 0
            }
          ]
        },
        "x": {
          "description": "Sets the x coordinates. If absent, linear coordinate will be generated.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "xaxis": {
          "description": "Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "x",
              "pattern": "^x([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "xcalendar": {
          "description": "Sets the calendar system to use with `x` date data.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "chinese",
                "coptic",
                "discworld",
                "ethiopian",
                "gregorian",
                "hebrew",
                "islamic",
                "jalali",
                "julian",
                "mayan",
                "nanakshahi",
                "nepali",
                "persian",
                "taiwan",
                "thai",
                "ummalqura"
              ],
              "default": "gregorian"
            }
          ]
        },
        "xhoverformat": {
          "default": "",
          "description": "Sets the hover text formatting rulefor `x`  using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.",
          "type": "string"
        },
        "xperiod": {
          "default": 0,
          "description": "Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M<n>* on the x axis. Special values in the form of *M<n>* could be used to declare the number of months. In this case `n` must be a positive integer."
        },
        "xperiod0": {
          "description": "Only relevant when the axis `type` is *date*. Sets the base for period positioning in milliseconds or date string on the x0 axis. When `x0period` is round number of weeks, the `x0period0` by default would be on a Sunday i.e. 2000-01-02, otherwise it would be at 2000-01-01."
        },
        "xperiodalignment": {
          "description": "Only relevant when the axis `type` is *date*. Sets the alignment of data points on the x axis.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "start",
                "middle",
                "end"
              ],
              "default": "middle"
            }
          ]
        },
        "xsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `x`.",
          "type": "string"
        },
        "yaxis": {
          "description": "Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "y",
              "pattern": "^y([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "yhoverformat": {
          "default": "",
          "description": "Sets the hover text formatting rulefor `y`  using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.",
          "type": "string"
        },
        "zorder": {
          "description": "Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "integer",
              "default": 0
            }
          ]
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false
    },
    "Carpet": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "$id": "https://visivo.io/trace-properties/schema",
      "description": "A schema to validate plotly trace properties",
      "type": "object",
      "properties": {
        "type": {
          "const": "carpet"
        },
        "a": {
          "description": "An array containing values of the first parameter value",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "a0": {
          "description": "Alternate to `a`. Builds a linear space of a coordinates. Use with `da` where `a0` is the starting coordinate and `da` the step.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": 0
            }
          ]
        },
        "aaxis": {
          "type": "object",
          "properties": {
            "arraydtick": {
              "description": "The stride between grid lines along the axis",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 1,
                  "default": 1
                }
              ]
            },
            "arraytick0": {
              "description": "The starting index of grid lines along the axis",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "autorange": {
              "description": "Determines whether or not the range of this axis is computed in relation to the input data. See `rangemode` for more info. If `range` is provided, then `autorange` is set to *false*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    true,
                    false,
                    "reversed"
                  ],
                  "default": true
                }
              ]
            },
            "autotypenumbers": {
              "description": "Using *strict* a numeric string in trace data is not converted to a number. Using *convert types* a numeric string in trace data may be treated as a number during automatic axis `type` detection. Defaults to layout.autotypenumbers.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "convert types",
                    "strict"
                  ],
                  "default": "convert types"
                }
              ]
            },
            "categoryarray": {
              "description": "Sets the order in which categories on this axis appear. Only has an effect if `categoryorder` is set to *array*. Used with `categoryorder`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  }
                }
              ]
            },
            "categoryarraysrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `categoryarray`.",
              "type": "string"
            },
            "categoryorder": {
              "description": "Specifies the ordering logic for the case of categorical variables. By default, plotly uses *trace*, which specifies the order that is present in the data supplied. Set `categoryorder` to *category ascending* or *category descending* if order should be determined by the alphanumerical order of the category names. Set `categoryorder` to *array* to derive the ordering from the attribute `categoryarray`. If a category is not found in the `categoryarray` array, the sorting behavior for that attribute will be identical to the *trace* mode. The unspecified categories will follow the categories in `categoryarray`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "trace",
                    "category ascending",
                    "category descending",
                    "array"
                  ],
                  "default": "trace"
                }
              ]
            },
            "cheatertype": {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "index",
                    "value"
                  ],
                  "default": "value"
                }
              ]
            },
            "color": {
              "description": "Sets default for all colors associated with this axis all at once: line, font, tick, and grid colors. Grid color is lightened by blending this with the plot background Individual pieces can override this.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "dtick": {
              "description": "The stride between grid lines along the axis",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 1
                }
              ]
            },
            "endline": {
              "description": "Determines whether or not a line is drawn at along the final value of this axis. If *true*, the end line is drawn on top of the grid lines.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean"
                }
              ]
            },
            "endlinecolor": {
              "description": "Sets the line color of the end line.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "endlinewidth": {
              "description": "Sets the width (in px) of the end line.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": 1
                }
              ]
            },
            "exponentformat": {
              "description": "Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "none",
                    "e",
                    "E",
                    "power",
                    "SI",
                    "B"
                  ],
                  "default": "B"
                }
              ]
            },
            "fixedrange": {
              "description": "Determines whether or not this axis is zoom-able. If true, then zoom is disabled.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            },
            "gridcolor": {
              "description": "Sets the axis line color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "griddash": {
              "default": "solid",
              "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).",
              "type": "string"
            },
            "gridwidth": {
              "description": "Sets the width (in px) of the axis line.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 1
                }
              ]
            },
            "labelalias": {
              "default": false,
              "description": "Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax."
            },
            "labelpadding": {
              "description": "Extra padding between label and the axis",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "default": 10
                }
              ]
            },
            "labelprefix": {
              "description": "Sets a axis label prefix.",
              "type": "string"
            },
            "labelsuffix": {
              "default": "",
              "description": "Sets a axis label suffix.",
              "type": "string"
            },
            "linecolor": {
              "description": "Sets the axis line color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "linewidth": {
              "description": "Sets the width (in px) of the axis line.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 1
                }
              ]
            },
            "minexponent": {
              "description": "Hide SI prefix for 10^n if |n| is below this number",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 3
                }
              ]
            },
            "minorgridcolor": {
              "description": "Sets the color of the grid lines.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "minorgridcount": {
              "description": "Sets the number of minor grid ticks per major grid tick",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "minorgriddash": {
              "default": "solid",
              "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).",
              "type": "string"
            },
            "minorgridwidth": {
              "description": "Sets the width (in px) of the grid lines.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 1
                }
              ]
            },
            "nticks": {
              "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "range": {
              "description": "Sets the range of this axis. If the axis `type` is *log*, then you must take the log of your desired range (e.g. to set the range from 1 to 100, set the range from 0 to 2). If the axis `type` is *date*, it should be date strings, like date data, though Date objects and unix milliseconds will be accepted and converted to strings. If the axis `type` is *category*, it should be numbers, using the scale where each category is assigned a serial number from zero in the order it appears.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {},
                  "minItems": 2,
                  "maxItems": 2
                }
              ]
            },
            "rangemode": {
              "description": "If *normal*, the range is computed in relation to the extrema of the input data. If *tozero*`, the range extends to 0, regardless of the input data If *nonnegative*, the range is non-negative, regardless of the input data.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "normal",
                    "tozero",
                    "nonnegative"
                  ],
                  "default": "normal"
                }
              ]
            },
            "separatethousands": {
              "description": "If \"true\", even 4-digit integers are separated",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            },
            "showexponent": {
              "description": "If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "all",
                    "first",
                    "last",
                    "none"
                  ],
                  "default": "all"
                }
              ]
            },
            "showgrid": {
              "description": "Determines whether or not grid lines are drawn. If *true*, the grid lines are drawn at every tick mark.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": true
                }
              ]
            },
            "showline": {
              "description": "Determines whether or not a line bounding this axis is drawn.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            },
            "showticklabels": {
              "description": "Determines whether axis labels are drawn on the low side, the high side, both, or neither side of the axis.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "start",
                    "end",
                    "both",
                    "none"
                  ],
                  "default": "start"
                }
              ]
            },
            "showtickprefix": {
              "description": "If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "all",
                    "first",
                    "last",
                    "none"
                  ],
                  "default": "all"
                }
              ]
            },
            "showticksuffix": {
              "description": "Same as `showtickprefix` but for tick suffixes.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "all",
                    "first",
                    "last",
                    "none"
                  ],
                  "default": "all"
                }
              ]
            },
            "smoothing": {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 1.3,
                  "default": 1
                }
              ]
            },
            "startline": {
              "description": "Determines whether or not a line is drawn at along the starting value of this axis. If *true*, the start line is drawn on top of the grid lines.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean"
                }
              ]
            },
            "startlinecolor": {
              "description": "Sets the line color of the start line.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "startlinewidth": {
              "description": "Sets the width (in px) of the start line.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": 1
                }
              ]
            },
            "tick0": {
              "description": "The starting index of grid lines along the axis",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "tickangle": {
              "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": -180,
                  "maximum": 180,
                  "default": "auto"
                }
              ]
            },
            "tickfont": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "family": {
                  "pattern": ".*\\S.*$",
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                "shadow": {
                  "default": "none",
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "tickformat": {
              "default": "",
              "description": "Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*",
              "type": "string"
            },
            "tickformatstops": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "dtickrange": {
                    "description": "range [*min*, *max*], where *min*, *max* - dtick values which describe some zoom level, it is possible to omit *min* or *max* value by passing *null*",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "array",
                        "items": {},
                        "minItems": 2,
                        "maxItems": 2
                      }
                    ]
                  },
                  "enabled": {
                    "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "boolean",
                        "default": true
                      }
                    ]
                  },
                  "name": {
                    "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.",
                    "type": "string"
                  },
                  "templateitemname": {
                    "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.",
                    "type": "string"
                  },
                  "value": {
                    "default": "",
                    "description": "string - dtickformat for described zoom level, the same as *tickformat*",
                    "type": "string"
                  }
                },
                "additionalProperties": false
              },
              "minItems": 1
            },
            "tickmode": {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "linear",
                    "array"
                  ],
                  "default": "array"
                }
              ]
            },
            "tickprefix": {
              "default": "",
              "description": "Sets a tick label prefix.",
              "type": "string"
            },
            "ticksuffix": {
              "default": "",
              "description": "Sets a tick label suffix.",
              "type": "string"
            },
            "ticktext": {
              "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  }
                }
              ]
            },
            "ticktextsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.",
              "type": "string"
            },
            "tickvals": {
              "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  }
                }
              ]
            },
            "tickvalssrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.",
              "type": "string"
            },
            "title": {
              "type": "object",
              "properties": {
                "font": {
                  "type": "object",
                  "properties": {
                    "color": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    "family": {
                      "pattern": ".*\\S.*$",
                      "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                      "type": "string"
                    },
                    "lineposition": {
                      "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    "shadow": {
                      "default": "none",
                      "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                      "type": "string"
                    },
                    "size": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    "style": {
                      "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "textcase": {
                      "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "variant": {
                      "description": "Sets the variant of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "weight": {
                      "description": "Sets the weight (or boldness) of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    }
                  },
                  "additionalProperties": false
                },
                "offset": {
                  "description": "An additional amount by which to offset the title from the tick labels, given in pixels.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "default": 10
                    }
                  ]
                },
                "text": {
                  "default": "",
                  "description": "Sets the title of this axis.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "type": {
              "description": "Sets the axis type. By default, plotly attempts to determined the axis type by looking into the data of the traces that referenced the axis in question.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "-",
                    "linear",
                    "date",
                    "category"
                  ],
                  "default": "-"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "asrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `a`.",
          "type": "string"
        },
        "b": {
          "description": "A two dimensional array of y coordinates at each carpet point.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "b0": {
          "description": "Alternate to `b`. Builds a linear space of a coordinates. Use with `db` where `b0` is the starting coordinate and `db` the step.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": 0
            }
          ]
        },
        "baxis": {
          "type": "object",
          "properties": {
            "arraydtick": {
              "description": "The stride between grid lines along the axis",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 1,
                  "default": 1
                }
              ]
            },
            "arraytick0": {
              "description": "The starting index of grid lines along the axis",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "autorange": {
              "description": "Determines whether or not the range of this axis is computed in relation to the input data. See `rangemode` for more info. If `range` is provided, then `autorange` is set to *false*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    true,
                    false,
                    "reversed"
                  ],
                  "default": true
                }
              ]
            },
            "autotypenumbers": {
              "description": "Using *strict* a numeric string in trace data is not converted to a number. Using *convert types* a numeric string in trace data may be treated as a number during automatic axis `type` detection. Defaults to layout.autotypenumbers.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "convert types",
                    "strict"
                  ],
                  "default": "convert types"
                }
              ]
            },
            "categoryarray": {
              "description": "Sets the order in which categories on this axis appear. Only has an effect if `categoryorder` is set to *array*. Used with `categoryorder`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  }
                }
              ]
            },
            "categoryarraysrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `categoryarray`.",
              "type": "string"
            },
            "categoryorder": {
              "description": "Specifies the ordering logic for the case of categorical variables. By default, plotly uses *trace*, which specifies the order that is present in the data supplied. Set `categoryorder` to *category ascending* or *category descending* if order should be determined by the alphanumerical order of the category names. Set `categoryorder` to *array* to derive the ordering from the attribute `categoryarray`. If a category is not found in the `categoryarray` array, the sorting behavior for that attribute will be identical to the *trace* mode. The unspecified categories will follow the categories in `categoryarray`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "trace",
                    "category ascending",
                    "category descending",
                    "array"
                  ],
                  "default": "trace"
                }
              ]
            },
            "cheatertype": {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "index",
                    "value"
                  ],
                  "default": "value"
                }
              ]
            },
            "color": {
              "description": "Sets default for all colors associated with this axis all at once: line, font, tick, and grid colors. Grid color is lightened by blending this with the plot background Individual pieces can override this.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "dtick": {
              "description": "The stride between grid lines along the axis",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 1
                }
              ]
            },
            "endline": {
              "description": "Determines whether or not a line is drawn at along the final value of this axis. If *true*, the end line is drawn on top of the grid lines.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean"
                }
              ]
            },
            "endlinecolor": {
              "description": "Sets the line color of the end line.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "endlinewidth": {
              "description": "Sets the width (in px) of the end line.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": 1
                }
              ]
            },
            "exponentformat": {
              "description": "Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "none",
                    "e",
                    "E",
                    "power",
                    "SI",
                    "B"
                  ],
                  "default": "B"
                }
              ]
            },
            "fixedrange": {
              "description": "Determines whether or not this axis is zoom-able. If true, then zoom is disabled.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            },
            "gridcolor": {
              "description": "Sets the axis line color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "griddash": {
              "default": "solid",
              "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).",
              "type": "string"
            },
            "gridwidth": {
              "description": "Sets the width (in px) of the axis line.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 1
                }
              ]
            },
            "labelalias": {
              "default": false,
              "description": "Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax."
            },
            "labelpadding": {
              "description": "Extra padding between label and the axis",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "default": 10
                }
              ]
            },
            "labelprefix": {
              "description": "Sets a axis label prefix.",
              "type": "string"
            },
            "labelsuffix": {
              "default": "",
              "description": "Sets a axis label suffix.",
              "type": "string"
            },
            "linecolor": {
              "description": "Sets the axis line color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "linewidth": {
              "description": "Sets the width (in px) of the axis line.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 1
                }
              ]
            },
            "minexponent": {
              "description": "Hide SI prefix for 10^n if |n| is below this number",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 3
                }
              ]
            },
            "minorgridcolor": {
              "description": "Sets the color of the grid lines.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "minorgridcount": {
              "description": "Sets the number of minor grid ticks per major grid tick",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "minorgriddash": {
              "default": "solid",
              "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).",
              "type": "string"
            },
            "minorgridwidth": {
              "description": "Sets the width (in px) of the grid lines.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 1
                }
              ]
            },
            "nticks": {
              "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "range": {
              "description": "Sets the range of this axis. If the axis `type` is *log*, then you must take the log of your desired range (e.g. to set the range from 1 to 100, set the range from 0 to 2). If the axis `type` is *date*, it should be date strings, like date data, though Date objects and unix milliseconds will be accepted and converted to strings. If the axis `type` is *category*, it should be numbers, using the scale where each category is assigned a serial number from zero in the order it appears.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {},
                  "minItems": 2,
                  "maxItems": 2
                }
              ]
            },
            "rangemode": {
              "description": "If *normal*, the range is computed in relation to the extrema of the input data. If *tozero*`, the range extends to 0, regardless of the input data If *nonnegative*, the range is non-negative, regardless of the input data.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "normal",
                    "tozero",
                    "nonnegative"
                  ],
                  "default": "normal"
                }
              ]
            },
            "separatethousands": {
              "description": "If \"true\", even 4-digit integers are separated",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            },
            "showexponent": {
              "description": "If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "all",
                    "first",
                    "last",
                    "none"
                  ],
                  "default": "all"
                }
              ]
            },
            "showgrid": {
              "description": "Determines whether or not grid lines are drawn. If *true*, the grid lines are drawn at every tick mark.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": true
                }
              ]
            },
            "showline": {
              "description": "Determines whether or not a line bounding this axis is drawn.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            },
            "showticklabels": {
              "description": "Determines whether axis labels are drawn on the low side, the high side, both, or neither side of the axis.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "start",
                    "end",
                    "both",
                    "none"
                  ],
                  "default": "start"
                }
              ]
            },
            "showtickprefix": {
              "description": "If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "all",
                    "first",
                    "last",
                    "none"
                  ],
                  "default": "all"
                }
              ]
            },
            "showticksuffix": {
              "description": "Same as `showtickprefix` but for tick suffixes.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "all",
                    "first",
                    "last",
                    "none"
                  ],
                  "default": "all"
                }
              ]
            },
            "smoothing": {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 1.3,
                  "default": 1
                }
              ]
            },
            "startline": {
              "description": "Determines whether or not a line is drawn at along the starting value of this axis. If *true*, the start line is drawn on top of the grid lines.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean"
                }
              ]
            },
            "startlinecolor": {
              "description": "Sets the line color of the start line.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "startlinewidth": {
              "description": "Sets the width (in px) of the start line.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": 1
                }
              ]
            },
            "tick0": {
              "description": "The starting index of grid lines along the axis",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "tickangle": {
              "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": -180,
                  "maximum": 180,
                  "default": "auto"
                }
              ]
            },
            "tickfont": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "family": {
                  "pattern": ".*\\S.*$",
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                "shadow": {
                  "default": "none",
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "tickformat": {
              "default": "",
              "description": "Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*",
              "type": "string"
            },
            "tickformatstops": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "dtickrange": {
                    "description": "range [*min*, *max*], where *min*, *max* - dtick values which describe some zoom level, it is possible to omit *min* or *max* value by passing *null*",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "array",
                        "items": {},
                        "minItems": 2,
                        "maxItems": 2
                      }
                    ]
                  },
                  "enabled": {
                    "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "boolean",
                        "default": true
                      }
                    ]
                  },
                  "name": {
                    "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.",
                    "type": "string"
                  },
                  "templateitemname": {
                    "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.",
                    "type": "string"
                  },
                  "value": {
                    "default": "",
                    "description": "string - dtickformat for described zoom level, the same as *tickformat*",
                    "type": "string"
                  }
                },
                "additionalProperties": false
              },
              "minItems": 1
            },
            "tickmode": {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "linear",
                    "array"
                  ],
                  "default": "array"
                }
              ]
            },
            "tickprefix": {
              "default": "",
              "description": "Sets a tick label prefix.",
              "type": "string"
            },
            "ticksuffix": {
              "default": "",
              "description": "Sets a tick label suffix.",
              "type": "string"
            },
            "ticktext": {
              "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  }
                }
              ]
            },
            "ticktextsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.",
              "type": "string"
            },
            "tickvals": {
              "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  }
                }
              ]
            },
            "tickvalssrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.",
              "type": "string"
            },
            "title": {
              "type": "object",
              "properties": {
                "font": {
                  "type": "object",
                  "properties": {
                    "color": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    "family": {
                      "pattern": ".*\\S.*$",
                      "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                      "type": "string"
                    },
                    "lineposition": {
                      "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    "shadow": {
                      "default": "none",
                      "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                      "type": "string"
                    },
                    "size": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    "style": {
                      "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "textcase": {
                      "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "variant": {
                      "description": "Sets the variant of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "weight": {
                      "description": "Sets the weight (or boldness) of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    }
                  },
                  "additionalProperties": false
                },
                "offset": {
                  "description": "An additional amount by which to offset the title from the tick labels, given in pixels.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "default": 10
                    }
                  ]
                },
                "text": {
                  "default": "",
                  "description": "Sets the title of this axis.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "type": {
              "description": "Sets the axis type. By default, plotly attempts to determined the axis type by looking into the data of the traces that referenced the axis in question.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "-",
                    "linear",
                    "date",
                    "category"
                  ],
                  "default": "-"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "bsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `b`.",
          "type": "string"
        },
        "carpet": {
          "description": "An identifier for this carpet, so that `scattercarpet` and `contourcarpet` traces can specify a carpet plot on which they lie",
          "type": "string"
        },
        "cheaterslope": {
          "description": "The shift applied to each successive row of data in creating a cheater plot. Only used if `x` is been omitted.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": 1
            }
          ]
        },
        "color": {
          "description": "Sets default for all colors associated with this axis all at once: line, font, tick, and grid colors. Grid color is lightened by blending this with the plot background Individual pieces can override this.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "$ref": "#/$defs/color"
            }
          ]
        },
        "customdata": {
          "description": "Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "customdatasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `customdata`.",
          "type": "string"
        },
        "da": {
          "description": "Sets the a coordinate step. See `a0` for more info.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": 1
            }
          ]
        },
        "db": {
          "description": "Sets the b coordinate step. See `b0` for more info.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": 1
            }
          ]
        },
        "font": {
          "type": "object",
          "properties": {
            "color": {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "family": {
              "default": "\"Open Sans\", verdana, arial, sans-serif",
              "pattern": ".*\\S.*$",
              "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
              "type": "string"
            },
            "lineposition": {
              "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "oneOf": [
                    {
                      "type": "string",
                      "enum": [
                        "none"
                      ]
                    },
                    {
                      "type": "string",
                      "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                    }
                  ],
                  "default": "none"
                }
              ]
            },
            "shadow": {
              "default": "none",
              "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
              "type": "string"
            },
            "size": {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 1,
                  "default": 12
                }
              ]
            },
            "style": {
              "description": "Sets whether a font should be styled with a normal or italic face from its family.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "normal",
                    "italic"
                  ],
                  "default": "normal"
                }
              ]
            },
            "textcase": {
              "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "normal",
                    "word caps",
                    "upper",
                    "lower"
                  ],
                  "default": "normal"
                }
              ]
            },
            "variant": {
              "description": "Sets the variant of the font.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "normal",
                    "small-caps",
                    "all-small-caps",
                    "all-petite-caps",
                    "petite-caps",
                    "unicase"
                  ],
                  "default": "normal"
                }
              ]
            },
            "weight": {
              "description": "Sets the weight (or boldness) of the font.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 1,
                  "maximum": 1000,
                  "default": "normal"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "ids": {
          "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "idssrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `ids`.",
          "type": "string"
        },
        "legend": {
          "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "legend",
              "pattern": "^legend([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "legendgrouptitle": {
          "type": "object",
          "properties": {
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "family": {
                  "pattern": ".*\\S.*$",
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                "shadow": {
                  "default": "none",
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "text": {
              "default": "",
              "description": "Sets the title of the legend group.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "legendrank": {
          "description": "Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": 1000
            }
          ]
        },
        "legendwidth": {
          "description": "Sets the width (in px or fraction) of the legend for this trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0
            }
          ]
        },
        "metasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `meta`.",
          "type": "string"
        },
        "name": {
          "description": "Sets the trace name. The trace name appears as the legend item and on hover.",
          "type": "string"
        },
        "opacity": {
          "description": "Sets the opacity of the trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0,
              "maximum": 1,
              "default": 1
            }
          ]
        },
        "stream": {
          "type": "object",
          "properties": {
            "maxpoints": {
              "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 10000,
                  "default": 500
                }
              ]
            },
            "token": {
              "pattern": ".*\\S.*$",
              "description": "The stream id number links a data trace on a plot with a stream. See <https://chart-studio.plotly.com/settings> for more details.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "uid": {
          "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.",
          "type": "string"
        },
        "uirevision": {
          "description": "Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves."
        },
        "visible": {
          "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                true,
                false,
                "legendonly"
              ],
              "default": true
            }
          ]
        },
        "x": {
          "description": "A two dimensional array of x coordinates at each carpet point. If omitted, the plot is a cheater plot and the xaxis is hidden by default.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "xaxis": {
          "description": "Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "x",
              "pattern": "^x([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "xsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `x`.",
          "type": "string"
        },
        "y": {
          "description": "A two dimensional array of y coordinates at each carpet point.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "yaxis": {
          "description": "Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "y",
              "pattern": "^y([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "ysrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `y`.",
          "type": "string"
        },
        "zorder": {
          "description": "Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "integer",
              "default": 0
            }
          ]
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false
    },
    "Choropleth": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "$id": "https://visivo.io/trace-properties/schema",
      "description": "A schema to validate plotly trace properties",
      "type": "object",
      "properties": {
        "type": {
          "const": "choropleth"
        },
        "autocolorscale": {
          "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "coloraxis": {
          "description": "Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": null,
              "pattern": "/^coloraxis([2-9]|[1-9][0-9]+)?$/"
            }
          ]
        },
        "colorbar": {
          "type": "object",
          "properties": {
            "bgcolor": {
              "description": "Sets the color of padded area.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "bordercolor": {
              "description": "Sets the axis line color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "borderwidth": {
              "description": "Sets the width (in px) or the border enclosing this color bar.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "dtick": {
              "description": "Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L<f>*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M<n>* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48*"
            },
            "exponentformat": {
              "description": "Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "none",
                    "e",
                    "E",
                    "power",
                    "SI",
                    "B"
                  ],
                  "default": "B"
                }
              ]
            },
            "labelalias": {
              "default": false,
              "description": "Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax."
            },
            "len": {
              "description": "Sets the length of the color bar This measure excludes the padding of both ends. That is, the color bar length is this length minus the padding on both ends.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 1
                }
              ]
            },
            "lenmode": {
              "description": "Determines whether this color bar's length (i.e. the measure in the color variation direction) is set in units of plot *fraction* or in *pixels. Use `len` to set the value.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "fraction",
                    "pixels"
                  ],
                  "default": "fraction"
                }
              ]
            },
            "minexponent": {
              "description": "Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 3
                }
              ]
            },
            "nticks": {
              "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "orientation": {
              "description": "Sets the orientation of the colorbar.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "h",
                    "v"
                  ],
                  "default": "v"
                }
              ]
            },
            "outlinecolor": {
              "description": "Sets the axis line color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "outlinewidth": {
              "description": "Sets the width (in px) of the axis line.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 1
                }
              ]
            },
            "separatethousands": {
              "description": "If \"true\", even 4-digit integers are separated",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            },
            "showexponent": {
              "description": "If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "all",
                    "first",
                    "last",
                    "none"
                  ],
                  "default": "all"
                }
              ]
            },
            "showticklabels": {
              "description": "Determines whether or not the tick labels are drawn.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": true
                }
              ]
            },
            "showtickprefix": {
              "description": "If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "all",
                    "first",
                    "last",
                    "none"
                  ],
                  "default": "all"
                }
              ]
            },
            "showticksuffix": {
              "description": "Same as `showtickprefix` but for tick suffixes.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "all",
                    "first",
                    "last",
                    "none"
                  ],
                  "default": "all"
                }
              ]
            },
            "thickness": {
              "description": "Sets the thickness of the color bar This measure excludes the size of the padding, ticks and labels.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 30
                }
              ]
            },
            "thicknessmode": {
              "description": "Determines whether this color bar's thickness (i.e. the measure in the constant color direction) is set in units of plot *fraction* or in *pixels*. Use `thickness` to set the value.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "fraction",
                    "pixels"
                  ],
                  "default": "pixels"
                }
              ]
            },
            "tick0": {
              "description": "Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L<f>* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears."
            },
            "tickangle": {
              "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": -180,
                  "maximum": 180,
                  "default": "auto"
                }
              ]
            },
            "tickcolor": {
              "description": "Sets the tick color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "tickfont": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "family": {
                  "pattern": ".*\\S.*$",
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                "shadow": {
                  "default": "none",
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "tickformat": {
              "default": "",
              "description": "Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*",
              "type": "string"
            },
            "tickformatstops": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "dtickrange": {
                    "description": "range [*min*, *max*], where *min*, *max* - dtick values which describe some zoom level, it is possible to omit *min* or *max* value by passing *null*",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "array",
                        "items": {},
                        "minItems": 2,
                        "maxItems": 2
                      }
                    ]
                  },
                  "enabled": {
                    "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "boolean",
                        "default": true
                      }
                    ]
                  },
                  "name": {
                    "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.",
                    "type": "string"
                  },
                  "templateitemname": {
                    "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.",
                    "type": "string"
                  },
                  "value": {
                    "default": "",
                    "description": "string - dtickformat for described zoom level, the same as *tickformat*",
                    "type": "string"
                  }
                },
                "additionalProperties": false
              },
              "minItems": 1
            },
            "ticklabeloverflow": {
              "description": "Determines how we handle tick labels that would overflow either the graph div or the domain of the axis. The default value for inside tick labels is *hide past domain*. In other cases the default is *hide past div*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "allow",
                    "hide past div",
                    "hide past domain"
                  ]
                }
              ]
            },
            "ticklabelposition": {
              "description": "Determines where tick labels are drawn relative to the ticks. Left and right options are used when `orientation` is *h*, top and bottom when `orientation` is *v*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "outside",
                    "inside",
                    "outside top",
                    "inside top",
                    "outside left",
                    "inside left",
                    "outside right",
                    "inside right",
                    "outside bottom",
                    "inside bottom"
                  ],
                  "default": "outside"
                }
              ]
            },
            "ticklabelstep": {
              "description": "Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 1,
                  "default": 1
                }
              ]
            },
            "ticklen": {
              "description": "Sets the tick length (in px).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 5
                }
              ]
            },
            "tickmode": {
              "description": "Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "auto",
                    "linear",
                    "array"
                  ]
                }
              ]
            },
            "tickprefix": {
              "default": "",
              "description": "Sets a tick label prefix.",
              "type": "string"
            },
            "ticks": {
              "description": "Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "outside",
                    "inside",
                    ""
                  ],
                  "default": ""
                }
              ]
            },
            "ticksuffix": {
              "default": "",
              "description": "Sets a tick label suffix.",
              "type": "string"
            },
            "ticktext": {
              "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  }
                }
              ]
            },
            "ticktextsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.",
              "type": "string"
            },
            "tickvals": {
              "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  }
                }
              ]
            },
            "tickvalssrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.",
              "type": "string"
            },
            "tickwidth": {
              "description": "Sets the tick width (in px).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 1
                }
              ]
            },
            "title": {
              "type": "object",
              "properties": {
                "font": {
                  "type": "object",
                  "properties": {
                    "color": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    "family": {
                      "pattern": ".*\\S.*$",
                      "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                      "type": "string"
                    },
                    "lineposition": {
                      "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    "shadow": {
                      "default": "none",
                      "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                      "type": "string"
                    },
                    "size": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    "style": {
                      "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "textcase": {
                      "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "variant": {
                      "description": "Sets the variant of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "weight": {
                      "description": "Sets the weight (or boldness) of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    }
                  },
                  "additionalProperties": false
                },
                "side": {
                  "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and  defaults to *right* when `orientation` if *h*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "right",
                        "top",
                        "bottom"
                      ]
                    }
                  ]
                },
                "text": {
                  "description": "Sets the title of the color bar.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "x": {
              "description": "Sets the x position with respect to `xref` of the color bar (in plot fraction). When `xref` is *paper*, defaults to 1.02 when `orientation` is *v* and 0.5 when `orientation` is *h*. When `xref` is *container*, defaults to *1* when `orientation` is *v* and 0.5 when `orientation` is *h*. Must be between *0* and *1* if `xref` is *container* and between *-2* and *3* if `xref` is *paper*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number"
                }
              ]
            },
            "xanchor": {
              "description": "Sets this color bar's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the color bar. Defaults to *left* when `orientation` is *v* and *center* when `orientation` is *h*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "left",
                    "center",
                    "right"
                  ]
                }
              ]
            },
            "xpad": {
              "description": "Sets the amount of padding (in px) along the x direction.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 10
                }
              ]
            },
            "xref": {
              "description": "Sets the container `x` refers to. *container* spans the entire `width` of the plot. *paper* refers to the width of the plotting area only.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "container",
                    "paper"
                  ],
                  "default": "paper"
                }
              ]
            },
            "y": {
              "description": "Sets the y position with respect to `yref` of the color bar (in plot fraction). When `yref` is *paper*, defaults to 0.5 when `orientation` is *v* and 1.02 when `orientation` is *h*. When `yref` is *container*, defaults to 0.5 when `orientation` is *v* and 1 when `orientation` is *h*. Must be between *0* and *1* if `yref` is *container* and between *-2* and *3* if `yref` is *paper*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number"
                }
              ]
            },
            "yanchor": {
              "description": "Sets this color bar's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the color bar. Defaults to *middle* when `orientation` is *v* and *bottom* when `orientation` is *h*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "top",
                    "middle",
                    "bottom"
                  ]
                }
              ]
            },
            "ypad": {
              "description": "Sets the amount of padding (in px) along the y direction.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 10
                }
              ]
            },
            "yref": {
              "description": "Sets the container `y` refers to. *container* spans the entire `height` of the plot. *paper* refers to the height of the plotting area only.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "container",
                    "paper"
                  ],
                  "default": "paper"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "colorscale": {
          "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "$ref": "#/$defs/colorscale",
              "default": null
            }
          ]
        },
        "customdata": {
          "description": "Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "customdatasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `customdata`.",
          "type": "string"
        },
        "featureidkey": {
          "default": "id",
          "description": "Sets the key in GeoJSON features which is used as id to match the items included in the `locations` array. Only has an effect when `geojson` is set. Support nested property, for example *properties.name*.",
          "type": "string"
        },
        "geo": {
          "description": "Sets a reference between this trace's geospatial coordinates and a geographic map. If *geo* (the default value), the geospatial coordinates refer to `layout.geo`. If *geo2*, the geospatial coordinates refer to `layout.geo2`, and so on.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "geo",
              "pattern": "^geo([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "geojson": {
          "description": "Sets optional GeoJSON data associated with this trace. If not given, the features on the base map are used. It can be set as a valid GeoJSON object or as a URL string. Note that we only accept GeoJSONs of type *FeatureCollection* or *Feature* with geometries of type *Polygon* or *MultiPolygon*."
        },
        "hoverinfo": {
          "description": "Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired.",
          "oneOf": [
            {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "oneOf": [
                    {
                      "type": "string",
                      "enum": [
                        "all",
                        "none",
                        "skip"
                      ]
                    },
                    {
                      "type": "string",
                      "pattern": "^(location|z|text|name)(\\+(location|z|text|name))*$"
                    }
                  ],
                  "default": "all"
                }
              ]
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "oneOf": [
                      {
                        "type": "string",
                        "enum": [
                          "all",
                          "none",
                          "skip"
                        ]
                      },
                      {
                        "type": "string",
                        "pattern": "^(location|z|text|name)(\\+(location|z|text|name))*$"
                      }
                    ],
                    "default": "all"
                  }
                ]
              }
            }
          ]
        },
        "hoverinfosrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.",
          "type": "string"
        },
        "hoverlabel": {
          "type": "object",
          "properties": {
            "align": {
              "description": "Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "left",
                        "right",
                        "auto"
                      ],
                      "default": "auto"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "left",
                          "right",
                          "auto"
                        ],
                        "default": "auto"
                      }
                    ]
                  }
                }
              ]
            },
            "alignsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `align`.",
              "type": "string"
            },
            "bgcolor": {
              "description": "Sets the background color of the hover labels for this trace",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "bgcolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.",
              "type": "string"
            },
            "bordercolor": {
              "description": "Sets the border color of the hover labels for this trace.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "bordercolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.",
              "type": "string"
            },
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "colorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `color`.",
                  "type": "string"
                },
                "family": {
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "oneOf": [
                    {
                      "pattern": ".*\\S.*$",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "pattern": ".*\\S.*$",
                        "type": "string"
                      }
                    },
                    {
                      "$ref": "#/$defs/query-string"
                    }
                  ]
                },
                "familysrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `family`.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "oneOf": [
                              {
                                "type": "string",
                                "enum": [
                                  "none"
                                ]
                              },
                              {
                                "type": "string",
                                "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                              }
                            ],
                            "default": "none"
                          }
                        ]
                      }
                    }
                  ]
                },
                "linepositionsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.",
                  "type": "string"
                },
                "shadow": {
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "oneOf": [
                    {
                      "default": "none",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "default": "none",
                        "type": "string"
                      }
                    }
                  ]
                },
                "shadowsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `shadow`.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 1
                          }
                        ]
                      }
                    }
                  ]
                },
                "sizesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `size`.",
                  "type": "string"
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "italic"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "stylesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `style`.",
                  "type": "string"
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "word caps",
                              "upper",
                              "lower"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "textcasesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `textcase`.",
                  "type": "string"
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "small-caps",
                              "all-small-caps",
                              "all-petite-caps",
                              "petite-caps",
                              "unicase"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "variantsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `variant`.",
                  "type": "string"
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 1000,
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "weightsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `weight`.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "namelength": {
              "description": "Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": -1,
                      "default": 15
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "integer",
                        "minimum": -1,
                        "default": 15
                      }
                    ]
                  }
                }
              ]
            },
            "namelengthsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `namelength`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "hovertemplate": {
          "description": "Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". <https://github.com/d3/d3-format/tree/v1.4.5#d3-format> for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format> for details on the date formatting syntax. The variables available in `hovertemplate` are the ones emitted as event data described at this link <https://plotly.com/javascript/plotlyjs-events/#event-data>. Additionally, every attributes that can be specified per-point (the ones that are `arrayOk: true`) are available.  Anything contained in tag `<extra>` is displayed in the secondary box, for example \"<extra>{fullData.name}</extra>\". To hide the secondary box completely, use an empty tag `<extra></extra>`.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "hovertemplatesrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.",
          "type": "string"
        },
        "hovertext": {
          "description": "Same as `text`.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "hovertextsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.",
          "type": "string"
        },
        "ids": {
          "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "idssrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `ids`.",
          "type": "string"
        },
        "legend": {
          "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "legend",
              "pattern": "^legend([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "legendgroup": {
          "default": "",
          "description": "Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items.",
          "type": "string"
        },
        "legendgrouptitle": {
          "type": "object",
          "properties": {
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "family": {
                  "pattern": ".*\\S.*$",
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                "shadow": {
                  "default": "none",
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "text": {
              "default": "",
              "description": "Sets the title of the legend group.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "legendrank": {
          "description": "Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": 1000
            }
          ]
        },
        "legendwidth": {
          "description": "Sets the width (in px or fraction) of the legend for this trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0
            }
          ]
        },
        "locationmode": {
          "description": "Determines the set of locations used to match entries in `locations` to regions on the map. Values *ISO-3*, *USA-states*, *country names* correspond to features on the base map and value *geojson-id* corresponds to features from a custom GeoJSON linked to the `geojson` attribute.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "ISO-3",
                "USA-states",
                "country names",
                "geojson-id"
              ],
              "default": "ISO-3"
            }
          ]
        },
        "locations": {
          "description": "Sets the coordinates via location IDs or names. See `locationmode` for more info.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "locationssrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `locations`.",
          "type": "string"
        },
        "marker": {
          "type": "object",
          "properties": {
            "line": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the marker.line color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.line.cmin` and `marker.line.cmax` if set.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "colorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `color`.",
                  "type": "string"
                },
                "width": {
                  "description": "Sets the width (in px) of the lines bounding the marker points.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 0,
                          "default": 1
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 0,
                            "default": 1
                          }
                        ]
                      }
                    }
                  ]
                },
                "widthsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `width`.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "opacity": {
              "description": "Sets the opacity of the locations.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1,
                      "default": 1
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 1,
                        "default": 1
                      }
                    ]
                  }
                }
              ]
            },
            "opacitysrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `opacity`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "metasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `meta`.",
          "type": "string"
        },
        "name": {
          "description": "Sets the trace name. The trace name appears as the legend item and on hover.",
          "type": "string"
        },
        "reversescale": {
          "description": "Reverses the color mapping if true. If true, `zmin` will correspond to the last color in the array and `zmax` will correspond to the first color.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": false
            }
          ]
        },
        "selected": {
          "type": "object",
          "properties": {
            "marker": {
              "type": "object",
              "properties": {
                "opacity": {
                  "description": "Sets the marker opacity of selected points.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1
                    }
                  ]
                }
              },
              "additionalProperties": false
            }
          },
          "additionalProperties": false
        },
        "selectedpoints": {
          "description": "Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect."
        },
        "showlegend": {
          "description": "Determines whether or not an item corresponding to this trace is shown in the legend.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": false
            }
          ]
        },
        "showscale": {
          "description": "Determines whether or not a colorbar is displayed for this trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "stream": {
          "type": "object",
          "properties": {
            "maxpoints": {
              "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 10000,
                  "default": 500
                }
              ]
            },
            "token": {
              "pattern": ".*\\S.*$",
              "description": "The stream id number links a data trace on a plot with a stream. See <https://chart-studio.plotly.com/settings> for more details.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "text": {
          "description": "Sets the text elements associated with each location.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "textsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `text`.",
          "type": "string"
        },
        "uid": {
          "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.",
          "type": "string"
        },
        "uirevision": {
          "description": "Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves."
        },
        "unselected": {
          "type": "object",
          "properties": {
            "marker": {
              "type": "object",
              "properties": {
                "opacity": {
                  "description": "Sets the marker opacity of unselected points, applied only when a selection exists.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1
                    }
                  ]
                }
              },
              "additionalProperties": false
            }
          },
          "additionalProperties": false
        },
        "visible": {
          "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                true,
                false,
                "legendonly"
              ],
              "default": true
            }
          ]
        },
        "z": {
          "description": "Sets the color values.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "zauto": {
          "description": "Determines whether or not the color domain is computed with respect to the input data (here in `z`) or the bounds set in `zmin` and `zmax` Defaults to `false` when `zmin` and `zmax` are set by the user.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "zmax": {
          "description": "Sets the upper bound of the color domain. Value should have the same units as in `z` and if set, `zmin` must be set as well.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": null
            }
          ]
        },
        "zmid": {
          "description": "Sets the mid-point of the color domain by scaling `zmin` and/or `zmax` to be equidistant to this point. Value should have the same units as in `z`. Has no effect when `zauto` is `false`.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": null
            }
          ]
        },
        "zmin": {
          "description": "Sets the lower bound of the color domain. Value should have the same units as in `z` and if set, `zmax` must be set as well.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": null
            }
          ]
        },
        "zsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `z`.",
          "type": "string"
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false
    },
    "Choroplethmap": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "$id": "https://visivo.io/trace-properties/schema",
      "description": "A schema to validate plotly trace properties",
      "type": "object",
      "properties": {
        "type": {
          "const": "choroplethmap"
        },
        "autocolorscale": {
          "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "below": {
          "description": "Determines if the choropleth polygons will be inserted before the layer with the specified ID. By default, choroplethmap traces are placed above the water layers. If set to '', the layer will be inserted above every existing layer.",
          "type": "string"
        },
        "coloraxis": {
          "description": "Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": null,
              "pattern": "/^coloraxis([2-9]|[1-9][0-9]+)?$/"
            }
          ]
        },
        "colorbar": {
          "type": "object",
          "properties": {
            "bgcolor": {
              "description": "Sets the color of padded area.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "bordercolor": {
              "description": "Sets the axis line color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "borderwidth": {
              "description": "Sets the width (in px) or the border enclosing this color bar.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "dtick": {
              "description": "Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L<f>*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M<n>* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48*"
            },
            "exponentformat": {
              "description": "Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "none",
                    "e",
                    "E",
                    "power",
                    "SI",
                    "B"
                  ],
                  "default": "B"
                }
              ]
            },
            "labelalias": {
              "default": false,
              "description": "Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax."
            },
            "len": {
              "description": "Sets the length of the color bar This measure excludes the padding of both ends. That is, the color bar length is this length minus the padding on both ends.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 1
                }
              ]
            },
            "lenmode": {
              "description": "Determines whether this color bar's length (i.e. the measure in the color variation direction) is set in units of plot *fraction* or in *pixels. Use `len` to set the value.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "fraction",
                    "pixels"
                  ],
                  "default": "fraction"
                }
              ]
            },
            "minexponent": {
              "description": "Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 3
                }
              ]
            },
            "nticks": {
              "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "orientation": {
              "description": "Sets the orientation of the colorbar.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "h",
                    "v"
                  ],
                  "default": "v"
                }
              ]
            },
            "outlinecolor": {
              "description": "Sets the axis line color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "outlinewidth": {
              "description": "Sets the width (in px) of the axis line.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 1
                }
              ]
            },
            "separatethousands": {
              "description": "If \"true\", even 4-digit integers are separated",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            },
            "showexponent": {
              "description": "If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "all",
                    "first",
                    "last",
                    "none"
                  ],
                  "default": "all"
                }
              ]
            },
            "showticklabels": {
              "description": "Determines whether or not the tick labels are drawn.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": true
                }
              ]
            },
            "showtickprefix": {
              "description": "If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "all",
                    "first",
                    "last",
                    "none"
                  ],
                  "default": "all"
                }
              ]
            },
            "showticksuffix": {
              "description": "Same as `showtickprefix` but for tick suffixes.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "all",
                    "first",
                    "last",
                    "none"
                  ],
                  "default": "all"
                }
              ]
            },
            "thickness": {
              "description": "Sets the thickness of the color bar This measure excludes the size of the padding, ticks and labels.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 30
                }
              ]
            },
            "thicknessmode": {
              "description": "Determines whether this color bar's thickness (i.e. the measure in the constant color direction) is set in units of plot *fraction* or in *pixels*. Use `thickness` to set the value.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "fraction",
                    "pixels"
                  ],
                  "default": "pixels"
                }
              ]
            },
            "tick0": {
              "description": "Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L<f>* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears."
            },
            "tickangle": {
              "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": -180,
                  "maximum": 180,
                  "default": "auto"
                }
              ]
            },
            "tickcolor": {
              "description": "Sets the tick color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "tickfont": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "family": {
                  "pattern": ".*\\S.*$",
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                "shadow": {
                  "default": "none",
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "tickformat": {
              "default": "",
              "description": "Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*",
              "type": "string"
            },
            "tickformatstops": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "dtickrange": {
                    "description": "range [*min*, *max*], where *min*, *max* - dtick values which describe some zoom level, it is possible to omit *min* or *max* value by passing *null*",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "array",
                        "items": {},
                        "minItems": 2,
                        "maxItems": 2
                      }
                    ]
                  },
                  "enabled": {
                    "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "boolean",
                        "default": true
                      }
                    ]
                  },
                  "name": {
                    "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.",
                    "type": "string"
                  },
                  "templateitemname": {
                    "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.",
                    "type": "string"
                  },
                  "value": {
                    "default": "",
                    "description": "string - dtickformat for described zoom level, the same as *tickformat*",
                    "type": "string"
                  }
                },
                "additionalProperties": false
              },
              "minItems": 1
            },
            "ticklabeloverflow": {
              "description": "Determines how we handle tick labels that would overflow either the graph div or the domain of the axis. The default value for inside tick labels is *hide past domain*. In other cases the default is *hide past div*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "allow",
                    "hide past div",
                    "hide past domain"
                  ]
                }
              ]
            },
            "ticklabelposition": {
              "description": "Determines where tick labels are drawn relative to the ticks. Left and right options are used when `orientation` is *h*, top and bottom when `orientation` is *v*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "outside",
                    "inside",
                    "outside top",
                    "inside top",
                    "outside left",
                    "inside left",
                    "outside right",
                    "inside right",
                    "outside bottom",
                    "inside bottom"
                  ],
                  "default": "outside"
                }
              ]
            },
            "ticklabelstep": {
              "description": "Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 1,
                  "default": 1
                }
              ]
            },
            "ticklen": {
              "description": "Sets the tick length (in px).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 5
                }
              ]
            },
            "tickmode": {
              "description": "Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "auto",
                    "linear",
                    "array"
                  ]
                }
              ]
            },
            "tickprefix": {
              "default": "",
              "description": "Sets a tick label prefix.",
              "type": "string"
            },
            "ticks": {
              "description": "Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "outside",
                    "inside",
                    ""
                  ],
                  "default": ""
                }
              ]
            },
            "ticksuffix": {
              "default": "",
              "description": "Sets a tick label suffix.",
              "type": "string"
            },
            "ticktext": {
              "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  }
                }
              ]
            },
            "ticktextsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.",
              "type": "string"
            },
            "tickvals": {
              "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  }
                }
              ]
            },
            "tickvalssrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.",
              "type": "string"
            },
            "tickwidth": {
              "description": "Sets the tick width (in px).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 1
                }
              ]
            },
            "title": {
              "type": "object",
              "properties": {
                "font": {
                  "type": "object",
                  "properties": {
                    "color": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    "family": {
                      "pattern": ".*\\S.*$",
                      "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                      "type": "string"
                    },
                    "lineposition": {
                      "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    "shadow": {
                      "default": "none",
                      "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                      "type": "string"
                    },
                    "size": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    "style": {
                      "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "textcase": {
                      "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "variant": {
                      "description": "Sets the variant of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "weight": {
                      "description": "Sets the weight (or boldness) of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    }
                  },
                  "additionalProperties": false
                },
                "side": {
                  "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and  defaults to *right* when `orientation` if *h*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "right",
                        "top",
                        "bottom"
                      ]
                    }
                  ]
                },
                "text": {
                  "description": "Sets the title of the color bar.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "x": {
              "description": "Sets the x position with respect to `xref` of the color bar (in plot fraction). When `xref` is *paper*, defaults to 1.02 when `orientation` is *v* and 0.5 when `orientation` is *h*. When `xref` is *container*, defaults to *1* when `orientation` is *v* and 0.5 when `orientation` is *h*. Must be between *0* and *1* if `xref` is *container* and between *-2* and *3* if `xref` is *paper*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number"
                }
              ]
            },
            "xanchor": {
              "description": "Sets this color bar's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the color bar. Defaults to *left* when `orientation` is *v* and *center* when `orientation` is *h*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "left",
                    "center",
                    "right"
                  ]
                }
              ]
            },
            "xpad": {
              "description": "Sets the amount of padding (in px) along the x direction.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 10
                }
              ]
            },
            "xref": {
              "description": "Sets the container `x` refers to. *container* spans the entire `width` of the plot. *paper* refers to the width of the plotting area only.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "container",
                    "paper"
                  ],
                  "default": "paper"
                }
              ]
            },
            "y": {
              "description": "Sets the y position with respect to `yref` of the color bar (in plot fraction). When `yref` is *paper*, defaults to 0.5 when `orientation` is *v* and 1.02 when `orientation` is *h*. When `yref` is *container*, defaults to 0.5 when `orientation` is *v* and 1 when `orientation` is *h*. Must be between *0* and *1* if `yref` is *container* and between *-2* and *3* if `yref` is *paper*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number"
                }
              ]
            },
            "yanchor": {
              "description": "Sets this color bar's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the color bar. Defaults to *middle* when `orientation` is *v* and *bottom* when `orientation` is *h*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "top",
                    "middle",
                    "bottom"
                  ]
                }
              ]
            },
            "ypad": {
              "description": "Sets the amount of padding (in px) along the y direction.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 10
                }
              ]
            },
            "yref": {
              "description": "Sets the container `y` refers to. *container* spans the entire `height` of the plot. *paper* refers to the height of the plotting area only.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "container",
                    "paper"
                  ],
                  "default": "paper"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "colorscale": {
          "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "$ref": "#/$defs/colorscale",
              "default": null
            }
          ]
        },
        "customdata": {
          "description": "Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "customdatasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `customdata`.",
          "type": "string"
        },
        "featureidkey": {
          "default": "id",
          "description": "Sets the key in GeoJSON features which is used as id to match the items included in the `locations` array. Support nested property, for example *properties.name*.",
          "type": "string"
        },
        "geojson": {
          "description": "Sets the GeoJSON data associated with this trace. It can be set as a valid GeoJSON object or as a URL string. Note that we only accept GeoJSONs of type *FeatureCollection* or *Feature* with geometries of type *Polygon* or *MultiPolygon*."
        },
        "hoverinfo": {
          "description": "Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired.",
          "oneOf": [
            {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "oneOf": [
                    {
                      "type": "string",
                      "enum": [
                        "all",
                        "none",
                        "skip"
                      ]
                    },
                    {
                      "type": "string",
                      "pattern": "^(location|z|text|name)(\\+(location|z|text|name))*$"
                    }
                  ],
                  "default": "all"
                }
              ]
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "oneOf": [
                      {
                        "type": "string",
                        "enum": [
                          "all",
                          "none",
                          "skip"
                        ]
                      },
                      {
                        "type": "string",
                        "pattern": "^(location|z|text|name)(\\+(location|z|text|name))*$"
                      }
                    ],
                    "default": "all"
                  }
                ]
              }
            }
          ]
        },
        "hoverinfosrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.",
          "type": "string"
        },
        "hoverlabel": {
          "type": "object",
          "properties": {
            "align": {
              "description": "Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "left",
                        "right",
                        "auto"
                      ],
                      "default": "auto"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "left",
                          "right",
                          "auto"
                        ],
                        "default": "auto"
                      }
                    ]
                  }
                }
              ]
            },
            "alignsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `align`.",
              "type": "string"
            },
            "bgcolor": {
              "description": "Sets the background color of the hover labels for this trace",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "bgcolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.",
              "type": "string"
            },
            "bordercolor": {
              "description": "Sets the border color of the hover labels for this trace.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "bordercolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.",
              "type": "string"
            },
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "colorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `color`.",
                  "type": "string"
                },
                "family": {
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "oneOf": [
                    {
                      "pattern": ".*\\S.*$",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "pattern": ".*\\S.*$",
                        "type": "string"
                      }
                    },
                    {
                      "$ref": "#/$defs/query-string"
                    }
                  ]
                },
                "familysrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `family`.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "oneOf": [
                              {
                                "type": "string",
                                "enum": [
                                  "none"
                                ]
                              },
                              {
                                "type": "string",
                                "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                              }
                            ],
                            "default": "none"
                          }
                        ]
                      }
                    }
                  ]
                },
                "linepositionsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.",
                  "type": "string"
                },
                "shadow": {
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "oneOf": [
                    {
                      "default": "none",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "default": "none",
                        "type": "string"
                      }
                    }
                  ]
                },
                "shadowsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `shadow`.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 1
                          }
                        ]
                      }
                    }
                  ]
                },
                "sizesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `size`.",
                  "type": "string"
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "italic"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "stylesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `style`.",
                  "type": "string"
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "word caps",
                              "upper",
                              "lower"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "textcasesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `textcase`.",
                  "type": "string"
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "small-caps",
                              "all-small-caps",
                              "all-petite-caps",
                              "petite-caps",
                              "unicase"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "variantsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `variant`.",
                  "type": "string"
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 1000,
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "weightsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `weight`.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "namelength": {
              "description": "Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": -1,
                      "default": 15
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "integer",
                        "minimum": -1,
                        "default": 15
                      }
                    ]
                  }
                }
              ]
            },
            "namelengthsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `namelength`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "hovertemplate": {
          "description": "Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". <https://github.com/d3/d3-format/tree/v1.4.5#d3-format> for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format> for details on the date formatting syntax. The variables available in `hovertemplate` are the ones emitted as event data described at this link <https://plotly.com/javascript/plotlyjs-events/#event-data>. Additionally, every attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variable `properties` Anything contained in tag `<extra>` is displayed in the secondary box, for example \"<extra>{fullData.name}</extra>\". To hide the secondary box completely, use an empty tag `<extra></extra>`.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "hovertemplatesrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.",
          "type": "string"
        },
        "hovertext": {
          "description": "Same as `text`.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "hovertextsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.",
          "type": "string"
        },
        "ids": {
          "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "idssrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `ids`.",
          "type": "string"
        },
        "legend": {
          "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "legend",
              "pattern": "^legend([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "legendgroup": {
          "default": "",
          "description": "Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items.",
          "type": "string"
        },
        "legendgrouptitle": {
          "type": "object",
          "properties": {
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "family": {
                  "pattern": ".*\\S.*$",
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                "shadow": {
                  "default": "none",
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "text": {
              "default": "",
              "description": "Sets the title of the legend group.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "legendrank": {
          "description": "Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": 1000
            }
          ]
        },
        "legendwidth": {
          "description": "Sets the width (in px or fraction) of the legend for this trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0
            }
          ]
        },
        "locations": {
          "description": "Sets which features found in *geojson* to plot using their feature `id` field.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "locationssrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `locations`.",
          "type": "string"
        },
        "marker": {
          "type": "object",
          "properties": {
            "line": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the marker.line color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.line.cmin` and `marker.line.cmax` if set.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "colorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `color`.",
                  "type": "string"
                },
                "width": {
                  "description": "Sets the width (in px) of the lines bounding the marker points.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 0,
                          "default": 1
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 0,
                            "default": 1
                          }
                        ]
                      }
                    }
                  ]
                },
                "widthsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `width`.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "opacity": {
              "description": "Sets the opacity of the locations.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1,
                      "default": 1
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 1,
                        "default": 1
                      }
                    ]
                  }
                }
              ]
            },
            "opacitysrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `opacity`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "metasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `meta`.",
          "type": "string"
        },
        "name": {
          "description": "Sets the trace name. The trace name appears as the legend item and on hover.",
          "type": "string"
        },
        "reversescale": {
          "description": "Reverses the color mapping if true. If true, `zmin` will correspond to the last color in the array and `zmax` will correspond to the first color.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": false
            }
          ]
        },
        "selected": {
          "type": "object",
          "properties": {
            "marker": {
              "type": "object",
              "properties": {
                "opacity": {
                  "description": "Sets the marker opacity of selected points.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1
                    }
                  ]
                }
              },
              "additionalProperties": false
            }
          },
          "additionalProperties": false
        },
        "selectedpoints": {
          "description": "Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect."
        },
        "showlegend": {
          "description": "Determines whether or not an item corresponding to this trace is shown in the legend.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": false
            }
          ]
        },
        "showscale": {
          "description": "Determines whether or not a colorbar is displayed for this trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "stream": {
          "type": "object",
          "properties": {
            "maxpoints": {
              "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 10000,
                  "default": 500
                }
              ]
            },
            "token": {
              "pattern": ".*\\S.*$",
              "description": "The stream id number links a data trace on a plot with a stream. See <https://chart-studio.plotly.com/settings> for more details.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "subplot": {
          "description": "Sets a reference between this trace's data coordinates and a map subplot. If *map* (the default value), the data refer to `layout.map`. If *map2*, the data refer to `layout.map2`, and so on.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "map",
              "pattern": "^map([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "text": {
          "description": "Sets the text elements associated with each location.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "textsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `text`.",
          "type": "string"
        },
        "uid": {
          "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.",
          "type": "string"
        },
        "uirevision": {
          "description": "Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves."
        },
        "unselected": {
          "type": "object",
          "properties": {
            "marker": {
              "type": "object",
              "properties": {
                "opacity": {
                  "description": "Sets the marker opacity of unselected points, applied only when a selection exists.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1
                    }
                  ]
                }
              },
              "additionalProperties": false
            }
          },
          "additionalProperties": false
        },
        "visible": {
          "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                true,
                false,
                "legendonly"
              ],
              "default": true
            }
          ]
        },
        "z": {
          "description": "Sets the color values.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "zauto": {
          "description": "Determines whether or not the color domain is computed with respect to the input data (here in `z`) or the bounds set in `zmin` and `zmax` Defaults to `false` when `zmin` and `zmax` are set by the user.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "zmax": {
          "description": "Sets the upper bound of the color domain. Value should have the same units as in `z` and if set, `zmin` must be set as well.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": null
            }
          ]
        },
        "zmid": {
          "description": "Sets the mid-point of the color domain by scaling `zmin` and/or `zmax` to be equidistant to this point. Value should have the same units as in `z`. Has no effect when `zauto` is `false`.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": null
            }
          ]
        },
        "zmin": {
          "description": "Sets the lower bound of the color domain. Value should have the same units as in `z` and if set, `zmax` must be set as well.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": null
            }
          ]
        },
        "zsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `z`.",
          "type": "string"
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false
    },
    "Choroplethmapbox": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "$id": "https://visivo.io/trace-properties/schema",
      "description": "A schema to validate plotly trace properties",
      "type": "object",
      "properties": {
        "type": {
          "const": "choroplethmapbox"
        },
        "autocolorscale": {
          "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "below": {
          "description": "Determines if the choropleth polygons will be inserted before the layer with the specified ID. By default, choroplethmapbox traces are placed above the water layers. If set to '', the layer will be inserted above every existing layer.",
          "type": "string"
        },
        "coloraxis": {
          "description": "Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": null,
              "pattern": "/^coloraxis([2-9]|[1-9][0-9]+)?$/"
            }
          ]
        },
        "colorbar": {
          "type": "object",
          "properties": {
            "bgcolor": {
              "description": "Sets the color of padded area.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "bordercolor": {
              "description": "Sets the axis line color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "borderwidth": {
              "description": "Sets the width (in px) or the border enclosing this color bar.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "dtick": {
              "description": "Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L<f>*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M<n>* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48*"
            },
            "exponentformat": {
              "description": "Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "none",
                    "e",
                    "E",
                    "power",
                    "SI",
                    "B"
                  ],
                  "default": "B"
                }
              ]
            },
            "labelalias": {
              "default": false,
              "description": "Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax."
            },
            "len": {
              "description": "Sets the length of the color bar This measure excludes the padding of both ends. That is, the color bar length is this length minus the padding on both ends.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 1
                }
              ]
            },
            "lenmode": {
              "description": "Determines whether this color bar's length (i.e. the measure in the color variation direction) is set in units of plot *fraction* or in *pixels. Use `len` to set the value.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "fraction",
                    "pixels"
                  ],
                  "default": "fraction"
                }
              ]
            },
            "minexponent": {
              "description": "Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 3
                }
              ]
            },
            "nticks": {
              "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "orientation": {
              "description": "Sets the orientation of the colorbar.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "h",
                    "v"
                  ],
                  "default": "v"
                }
              ]
            },
            "outlinecolor": {
              "description": "Sets the axis line color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "outlinewidth": {
              "description": "Sets the width (in px) of the axis line.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 1
                }
              ]
            },
            "separatethousands": {
              "description": "If \"true\", even 4-digit integers are separated",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            },
            "showexponent": {
              "description": "If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "all",
                    "first",
                    "last",
                    "none"
                  ],
                  "default": "all"
                }
              ]
            },
            "showticklabels": {
              "description": "Determines whether or not the tick labels are drawn.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": true
                }
              ]
            },
            "showtickprefix": {
              "description": "If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "all",
                    "first",
                    "last",
                    "none"
                  ],
                  "default": "all"
                }
              ]
            },
            "showticksuffix": {
              "description": "Same as `showtickprefix` but for tick suffixes.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "all",
                    "first",
                    "last",
                    "none"
                  ],
                  "default": "all"
                }
              ]
            },
            "thickness": {
              "description": "Sets the thickness of the color bar This measure excludes the size of the padding, ticks and labels.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 30
                }
              ]
            },
            "thicknessmode": {
              "description": "Determines whether this color bar's thickness (i.e. the measure in the constant color direction) is set in units of plot *fraction* or in *pixels*. Use `thickness` to set the value.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "fraction",
                    "pixels"
                  ],
                  "default": "pixels"
                }
              ]
            },
            "tick0": {
              "description": "Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L<f>* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears."
            },
            "tickangle": {
              "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": -180,
                  "maximum": 180,
                  "default": "auto"
                }
              ]
            },
            "tickcolor": {
              "description": "Sets the tick color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "tickfont": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "family": {
                  "pattern": ".*\\S.*$",
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                "shadow": {
                  "default": "none",
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "tickformat": {
              "default": "",
              "description": "Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*",
              "type": "string"
            },
            "tickformatstops": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "dtickrange": {
                    "description": "range [*min*, *max*], where *min*, *max* - dtick values which describe some zoom level, it is possible to omit *min* or *max* value by passing *null*",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "array",
                        "items": {},
                        "minItems": 2,
                        "maxItems": 2
                      }
                    ]
                  },
                  "enabled": {
                    "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "boolean",
                        "default": true
                      }
                    ]
                  },
                  "name": {
                    "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.",
                    "type": "string"
                  },
                  "templateitemname": {
                    "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.",
                    "type": "string"
                  },
                  "value": {
                    "default": "",
                    "description": "string - dtickformat for described zoom level, the same as *tickformat*",
                    "type": "string"
                  }
                },
                "additionalProperties": false
              },
              "minItems": 1
            },
            "ticklabeloverflow": {
              "description": "Determines how we handle tick labels that would overflow either the graph div or the domain of the axis. The default value for inside tick labels is *hide past domain*. In other cases the default is *hide past div*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "allow",
                    "hide past div",
                    "hide past domain"
                  ]
                }
              ]
            },
            "ticklabelposition": {
              "description": "Determines where tick labels are drawn relative to the ticks. Left and right options are used when `orientation` is *h*, top and bottom when `orientation` is *v*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "outside",
                    "inside",
                    "outside top",
                    "inside top",
                    "outside left",
                    "inside left",
                    "outside right",
                    "inside right",
                    "outside bottom",
                    "inside bottom"
                  ],
                  "default": "outside"
                }
              ]
            },
            "ticklabelstep": {
              "description": "Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 1,
                  "default": 1
                }
              ]
            },
            "ticklen": {
              "description": "Sets the tick length (in px).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 5
                }
              ]
            },
            "tickmode": {
              "description": "Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "auto",
                    "linear",
                    "array"
                  ]
                }
              ]
            },
            "tickprefix": {
              "default": "",
              "description": "Sets a tick label prefix.",
              "type": "string"
            },
            "ticks": {
              "description": "Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "outside",
                    "inside",
                    ""
                  ],
                  "default": ""
                }
              ]
            },
            "ticksuffix": {
              "default": "",
              "description": "Sets a tick label suffix.",
              "type": "string"
            },
            "ticktext": {
              "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  }
                }
              ]
            },
            "ticktextsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.",
              "type": "string"
            },
            "tickvals": {
              "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  }
                }
              ]
            },
            "tickvalssrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.",
              "type": "string"
            },
            "tickwidth": {
              "description": "Sets the tick width (in px).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 1
                }
              ]
            },
            "title": {
              "type": "object",
              "properties": {
                "font": {
                  "type": "object",
                  "properties": {
                    "color": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    "family": {
                      "pattern": ".*\\S.*$",
                      "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                      "type": "string"
                    },
                    "lineposition": {
                      "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    "shadow": {
                      "default": "none",
                      "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                      "type": "string"
                    },
                    "size": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    "style": {
                      "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "textcase": {
                      "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "variant": {
                      "description": "Sets the variant of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "weight": {
                      "description": "Sets the weight (or boldness) of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    }
                  },
                  "additionalProperties": false
                },
                "side": {
                  "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and  defaults to *right* when `orientation` if *h*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "right",
                        "top",
                        "bottom"
                      ]
                    }
                  ]
                },
                "text": {
                  "description": "Sets the title of the color bar.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "x": {
              "description": "Sets the x position with respect to `xref` of the color bar (in plot fraction). When `xref` is *paper*, defaults to 1.02 when `orientation` is *v* and 0.5 when `orientation` is *h*. When `xref` is *container*, defaults to *1* when `orientation` is *v* and 0.5 when `orientation` is *h*. Must be between *0* and *1* if `xref` is *container* and between *-2* and *3* if `xref` is *paper*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number"
                }
              ]
            },
            "xanchor": {
              "description": "Sets this color bar's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the color bar. Defaults to *left* when `orientation` is *v* and *center* when `orientation` is *h*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "left",
                    "center",
                    "right"
                  ]
                }
              ]
            },
            "xpad": {
              "description": "Sets the amount of padding (in px) along the x direction.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 10
                }
              ]
            },
            "xref": {
              "description": "Sets the container `x` refers to. *container* spans the entire `width` of the plot. *paper* refers to the width of the plotting area only.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "container",
                    "paper"
                  ],
                  "default": "paper"
                }
              ]
            },
            "y": {
              "description": "Sets the y position with respect to `yref` of the color bar (in plot fraction). When `yref` is *paper*, defaults to 0.5 when `orientation` is *v* and 1.02 when `orientation` is *h*. When `yref` is *container*, defaults to 0.5 when `orientation` is *v* and 1 when `orientation` is *h*. Must be between *0* and *1* if `yref` is *container* and between *-2* and *3* if `yref` is *paper*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number"
                }
              ]
            },
            "yanchor": {
              "description": "Sets this color bar's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the color bar. Defaults to *middle* when `orientation` is *v* and *bottom* when `orientation` is *h*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "top",
                    "middle",
                    "bottom"
                  ]
                }
              ]
            },
            "ypad": {
              "description": "Sets the amount of padding (in px) along the y direction.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 10
                }
              ]
            },
            "yref": {
              "description": "Sets the container `y` refers to. *container* spans the entire `height` of the plot. *paper* refers to the height of the plotting area only.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "container",
                    "paper"
                  ],
                  "default": "paper"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "colorscale": {
          "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "$ref": "#/$defs/colorscale",
              "default": null
            }
          ]
        },
        "customdata": {
          "description": "Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "customdatasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `customdata`.",
          "type": "string"
        },
        "featureidkey": {
          "default": "id",
          "description": "Sets the key in GeoJSON features which is used as id to match the items included in the `locations` array. Support nested property, for example *properties.name*.",
          "type": "string"
        },
        "geojson": {
          "description": "Sets the GeoJSON data associated with this trace. It can be set as a valid GeoJSON object or as a URL string. Note that we only accept GeoJSONs of type *FeatureCollection* or *Feature* with geometries of type *Polygon* or *MultiPolygon*."
        },
        "hoverinfo": {
          "description": "Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired.",
          "oneOf": [
            {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "oneOf": [
                    {
                      "type": "string",
                      "enum": [
                        "all",
                        "none",
                        "skip"
                      ]
                    },
                    {
                      "type": "string",
                      "pattern": "^(location|z|text|name)(\\+(location|z|text|name))*$"
                    }
                  ],
                  "default": "all"
                }
              ]
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "oneOf": [
                      {
                        "type": "string",
                        "enum": [
                          "all",
                          "none",
                          "skip"
                        ]
                      },
                      {
                        "type": "string",
                        "pattern": "^(location|z|text|name)(\\+(location|z|text|name))*$"
                      }
                    ],
                    "default": "all"
                  }
                ]
              }
            }
          ]
        },
        "hoverinfosrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.",
          "type": "string"
        },
        "hoverlabel": {
          "type": "object",
          "properties": {
            "align": {
              "description": "Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "left",
                        "right",
                        "auto"
                      ],
                      "default": "auto"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "left",
                          "right",
                          "auto"
                        ],
                        "default": "auto"
                      }
                    ]
                  }
                }
              ]
            },
            "alignsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `align`.",
              "type": "string"
            },
            "bgcolor": {
              "description": "Sets the background color of the hover labels for this trace",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "bgcolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.",
              "type": "string"
            },
            "bordercolor": {
              "description": "Sets the border color of the hover labels for this trace.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "bordercolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.",
              "type": "string"
            },
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "colorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `color`.",
                  "type": "string"
                },
                "family": {
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "oneOf": [
                    {
                      "pattern": ".*\\S.*$",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "pattern": ".*\\S.*$",
                        "type": "string"
                      }
                    },
                    {
                      "$ref": "#/$defs/query-string"
                    }
                  ]
                },
                "familysrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `family`.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "oneOf": [
                              {
                                "type": "string",
                                "enum": [
                                  "none"
                                ]
                              },
                              {
                                "type": "string",
                                "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                              }
                            ],
                            "default": "none"
                          }
                        ]
                      }
                    }
                  ]
                },
                "linepositionsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.",
                  "type": "string"
                },
                "shadow": {
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "oneOf": [
                    {
                      "default": "none",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "default": "none",
                        "type": "string"
                      }
                    }
                  ]
                },
                "shadowsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `shadow`.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 1
                          }
                        ]
                      }
                    }
                  ]
                },
                "sizesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `size`.",
                  "type": "string"
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "italic"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "stylesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `style`.",
                  "type": "string"
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "word caps",
                              "upper",
                              "lower"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "textcasesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `textcase`.",
                  "type": "string"
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "small-caps",
                              "all-small-caps",
                              "all-petite-caps",
                              "petite-caps",
                              "unicase"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "variantsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `variant`.",
                  "type": "string"
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 1000,
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "weightsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `weight`.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "namelength": {
              "description": "Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": -1,
                      "default": 15
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "integer",
                        "minimum": -1,
                        "default": 15
                      }
                    ]
                  }
                }
              ]
            },
            "namelengthsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `namelength`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "hovertemplate": {
          "description": "Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". <https://github.com/d3/d3-format/tree/v1.4.5#d3-format> for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format> for details on the date formatting syntax. The variables available in `hovertemplate` are the ones emitted as event data described at this link <https://plotly.com/javascript/plotlyjs-events/#event-data>. Additionally, every attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variable `properties` Anything contained in tag `<extra>` is displayed in the secondary box, for example \"<extra>{fullData.name}</extra>\". To hide the secondary box completely, use an empty tag `<extra></extra>`.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "hovertemplatesrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.",
          "type": "string"
        },
        "hovertext": {
          "description": "Same as `text`.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "hovertextsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.",
          "type": "string"
        },
        "ids": {
          "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "idssrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `ids`.",
          "type": "string"
        },
        "legend": {
          "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "legend",
              "pattern": "^legend([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "legendgroup": {
          "default": "",
          "description": "Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items.",
          "type": "string"
        },
        "legendgrouptitle": {
          "type": "object",
          "properties": {
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "family": {
                  "pattern": ".*\\S.*$",
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                "shadow": {
                  "default": "none",
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "text": {
              "default": "",
              "description": "Sets the title of the legend group.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "legendrank": {
          "description": "Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": 1000
            }
          ]
        },
        "legendwidth": {
          "description": "Sets the width (in px or fraction) of the legend for this trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0
            }
          ]
        },
        "locations": {
          "description": "Sets which features found in *geojson* to plot using their feature `id` field.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "locationssrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `locations`.",
          "type": "string"
        },
        "marker": {
          "type": "object",
          "properties": {
            "line": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the marker.line color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.line.cmin` and `marker.line.cmax` if set.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "colorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `color`.",
                  "type": "string"
                },
                "width": {
                  "description": "Sets the width (in px) of the lines bounding the marker points.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 0,
                          "default": 1
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 0,
                            "default": 1
                          }
                        ]
                      }
                    }
                  ]
                },
                "widthsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `width`.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "opacity": {
              "description": "Sets the opacity of the locations.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1,
                      "default": 1
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 1,
                        "default": 1
                      }
                    ]
                  }
                }
              ]
            },
            "opacitysrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `opacity`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "metasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `meta`.",
          "type": "string"
        },
        "name": {
          "description": "Sets the trace name. The trace name appears as the legend item and on hover.",
          "type": "string"
        },
        "reversescale": {
          "description": "Reverses the color mapping if true. If true, `zmin` will correspond to the last color in the array and `zmax` will correspond to the first color.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": false
            }
          ]
        },
        "selected": {
          "type": "object",
          "properties": {
            "marker": {
              "type": "object",
              "properties": {
                "opacity": {
                  "description": "Sets the marker opacity of selected points.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1
                    }
                  ]
                }
              },
              "additionalProperties": false
            }
          },
          "additionalProperties": false
        },
        "selectedpoints": {
          "description": "Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect."
        },
        "showlegend": {
          "description": "Determines whether or not an item corresponding to this trace is shown in the legend.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": false
            }
          ]
        },
        "showscale": {
          "description": "Determines whether or not a colorbar is displayed for this trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "stream": {
          "type": "object",
          "properties": {
            "maxpoints": {
              "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 10000,
                  "default": 500
                }
              ]
            },
            "token": {
              "pattern": ".*\\S.*$",
              "description": "The stream id number links a data trace on a plot with a stream. See <https://chart-studio.plotly.com/settings> for more details.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "subplot": {
          "description": "mapbox subplots and traces are deprecated! Please consider switching to `map` subplots and traces. Learn more at: <https://plotly.com/python/maplibre-migration/> as well as <https://plotly.com/javascript/maplibre-migration/> Sets a reference between this trace's data coordinates and a mapbox subplot. If *mapbox* (the default value), the data refer to `layout.mapbox`. If *mapbox2*, the data refer to `layout.mapbox2`, and so on.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "mapbox",
              "pattern": "^mapbox([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "text": {
          "description": "Sets the text elements associated with each location.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "textsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `text`.",
          "type": "string"
        },
        "uid": {
          "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.",
          "type": "string"
        },
        "uirevision": {
          "description": "Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves."
        },
        "unselected": {
          "type": "object",
          "properties": {
            "marker": {
              "type": "object",
              "properties": {
                "opacity": {
                  "description": "Sets the marker opacity of unselected points, applied only when a selection exists.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1
                    }
                  ]
                }
              },
              "additionalProperties": false
            }
          },
          "additionalProperties": false
        },
        "visible": {
          "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                true,
                false,
                "legendonly"
              ],
              "default": true
            }
          ]
        },
        "z": {
          "description": "Sets the color values.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "zauto": {
          "description": "Determines whether or not the color domain is computed with respect to the input data (here in `z`) or the bounds set in `zmin` and `zmax` Defaults to `false` when `zmin` and `zmax` are set by the user.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "zmax": {
          "description": "Sets the upper bound of the color domain. Value should have the same units as in `z` and if set, `zmin` must be set as well.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": null
            }
          ]
        },
        "zmid": {
          "description": "Sets the mid-point of the color domain by scaling `zmin` and/or `zmax` to be equidistant to this point. Value should have the same units as in `z`. Has no effect when `zauto` is `false`.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": null
            }
          ]
        },
        "zmin": {
          "description": "Sets the lower bound of the color domain. Value should have the same units as in `z` and if set, `zmax` must be set as well.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": null
            }
          ]
        },
        "zsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `z`.",
          "type": "string"
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false
    },
    "Cone": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "$id": "https://visivo.io/trace-properties/schema",
      "description": "A schema to validate plotly trace properties",
      "type": "object",
      "properties": {
        "type": {
          "const": "cone"
        },
        "anchor": {
          "description": "Sets the cones' anchor with respect to their x/y/z positions. Note that *cm* denote the cone's center of mass which corresponds to 1/4 from the tail to tip.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "tip",
                "tail",
                "cm",
                "center"
              ],
              "default": "cm"
            }
          ]
        },
        "autocolorscale": {
          "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "cauto": {
          "description": "Determines whether or not the color domain is computed with respect to the input data (here u/v/w norm) or the bounds set in `cmin` and `cmax` Defaults to `false` when `cmin` and `cmax` are set by the user.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "cmax": {
          "description": "Sets the upper bound of the color domain. Value should have the same units as u/v/w norm and if set, `cmin` must be set as well.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": null
            }
          ]
        },
        "cmid": {
          "description": "Sets the mid-point of the color domain by scaling `cmin` and/or `cmax` to be equidistant to this point. Value should have the same units as u/v/w norm. Has no effect when `cauto` is `false`.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": null
            }
          ]
        },
        "cmin": {
          "description": "Sets the lower bound of the color domain. Value should have the same units as u/v/w norm and if set, `cmax` must be set as well.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": null
            }
          ]
        },
        "coloraxis": {
          "description": "Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": null,
              "pattern": "/^coloraxis([2-9]|[1-9][0-9]+)?$/"
            }
          ]
        },
        "colorbar": {
          "type": "object",
          "properties": {
            "bgcolor": {
              "description": "Sets the color of padded area.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "bordercolor": {
              "description": "Sets the axis line color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "borderwidth": {
              "description": "Sets the width (in px) or the border enclosing this color bar.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "dtick": {
              "description": "Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L<f>*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M<n>* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48*"
            },
            "exponentformat": {
              "description": "Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "none",
                    "e",
                    "E",
                    "power",
                    "SI",
                    "B"
                  ],
                  "default": "B"
                }
              ]
            },
            "labelalias": {
              "default": false,
              "description": "Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax."
            },
            "len": {
              "description": "Sets the length of the color bar This measure excludes the padding of both ends. That is, the color bar length is this length minus the padding on both ends.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 1
                }
              ]
            },
            "lenmode": {
              "description": "Determines whether this color bar's length (i.e. the measure in the color variation direction) is set in units of plot *fraction* or in *pixels. Use `len` to set the value.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "fraction",
                    "pixels"
                  ],
                  "default": "fraction"
                }
              ]
            },
            "minexponent": {
              "description": "Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 3
                }
              ]
            },
            "nticks": {
              "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "orientation": {
              "description": "Sets the orientation of the colorbar.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "h",
                    "v"
                  ],
                  "default": "v"
                }
              ]
            },
            "outlinecolor": {
              "description": "Sets the axis line color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "outlinewidth": {
              "description": "Sets the width (in px) of the axis line.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 1
                }
              ]
            },
            "separatethousands": {
              "description": "If \"true\", even 4-digit integers are separated",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            },
            "showexponent": {
              "description": "If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "all",
                    "first",
                    "last",
                    "none"
                  ],
                  "default": "all"
                }
              ]
            },
            "showticklabels": {
              "description": "Determines whether or not the tick labels are drawn.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": true
                }
              ]
            },
            "showtickprefix": {
              "description": "If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "all",
                    "first",
                    "last",
                    "none"
                  ],
                  "default": "all"
                }
              ]
            },
            "showticksuffix": {
              "description": "Same as `showtickprefix` but for tick suffixes.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "all",
                    "first",
                    "last",
                    "none"
                  ],
                  "default": "all"
                }
              ]
            },
            "thickness": {
              "description": "Sets the thickness of the color bar This measure excludes the size of the padding, ticks and labels.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 30
                }
              ]
            },
            "thicknessmode": {
              "description": "Determines whether this color bar's thickness (i.e. the measure in the constant color direction) is set in units of plot *fraction* or in *pixels*. Use `thickness` to set the value.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "fraction",
                    "pixels"
                  ],
                  "default": "pixels"
                }
              ]
            },
            "tick0": {
              "description": "Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L<f>* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears."
            },
            "tickangle": {
              "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": -180,
                  "maximum": 180,
                  "default": "auto"
                }
              ]
            },
            "tickcolor": {
              "description": "Sets the tick color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "tickfont": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "family": {
                  "pattern": ".*\\S.*$",
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                "shadow": {
                  "default": "none",
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "tickformat": {
              "default": "",
              "description": "Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*",
              "type": "string"
            },
            "tickformatstops": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "dtickrange": {
                    "description": "range [*min*, *max*], where *min*, *max* - dtick values which describe some zoom level, it is possible to omit *min* or *max* value by passing *null*",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "array",
                        "items": {},
                        "minItems": 2,
                        "maxItems": 2
                      }
                    ]
                  },
                  "enabled": {
                    "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "boolean",
                        "default": true
                      }
                    ]
                  },
                  "name": {
                    "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.",
                    "type": "string"
                  },
                  "templateitemname": {
                    "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.",
                    "type": "string"
                  },
                  "value": {
                    "default": "",
                    "description": "string - dtickformat for described zoom level, the same as *tickformat*",
                    "type": "string"
                  }
                },
                "additionalProperties": false
              },
              "minItems": 1
            },
            "ticklabeloverflow": {
              "description": "Determines how we handle tick labels that would overflow either the graph div or the domain of the axis. The default value for inside tick labels is *hide past domain*. In other cases the default is *hide past div*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "allow",
                    "hide past div",
                    "hide past domain"
                  ]
                }
              ]
            },
            "ticklabelposition": {
              "description": "Determines where tick labels are drawn relative to the ticks. Left and right options are used when `orientation` is *h*, top and bottom when `orientation` is *v*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "outside",
                    "inside",
                    "outside top",
                    "inside top",
                    "outside left",
                    "inside left",
                    "outside right",
                    "inside right",
                    "outside bottom",
                    "inside bottom"
                  ],
                  "default": "outside"
                }
              ]
            },
            "ticklabelstep": {
              "description": "Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 1,
                  "default": 1
                }
              ]
            },
            "ticklen": {
              "description": "Sets the tick length (in px).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 5
                }
              ]
            },
            "tickmode": {
              "description": "Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "auto",
                    "linear",
                    "array"
                  ]
                }
              ]
            },
            "tickprefix": {
              "default": "",
              "description": "Sets a tick label prefix.",
              "type": "string"
            },
            "ticks": {
              "description": "Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "outside",
                    "inside",
                    ""
                  ],
                  "default": ""
                }
              ]
            },
            "ticksuffix": {
              "default": "",
              "description": "Sets a tick label suffix.",
              "type": "string"
            },
            "ticktext": {
              "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  }
                }
              ]
            },
            "ticktextsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.",
              "type": "string"
            },
            "tickvals": {
              "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  }
                }
              ]
            },
            "tickvalssrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.",
              "type": "string"
            },
            "tickwidth": {
              "description": "Sets the tick width (in px).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 1
                }
              ]
            },
            "title": {
              "type": "object",
              "properties": {
                "font": {
                  "type": "object",
                  "properties": {
                    "color": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    "family": {
                      "pattern": ".*\\S.*$",
                      "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                      "type": "string"
                    },
                    "lineposition": {
                      "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    "shadow": {
                      "default": "none",
                      "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                      "type": "string"
                    },
                    "size": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    "style": {
                      "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "textcase": {
                      "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "variant": {
                      "description": "Sets the variant of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "weight": {
                      "description": "Sets the weight (or boldness) of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    }
                  },
                  "additionalProperties": false
                },
                "side": {
                  "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and  defaults to *right* when `orientation` if *h*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "right",
                        "top",
                        "bottom"
                      ]
                    }
                  ]
                },
                "text": {
                  "description": "Sets the title of the color bar.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "x": {
              "description": "Sets the x position with respect to `xref` of the color bar (in plot fraction). When `xref` is *paper*, defaults to 1.02 when `orientation` is *v* and 0.5 when `orientation` is *h*. When `xref` is *container*, defaults to *1* when `orientation` is *v* and 0.5 when `orientation` is *h*. Must be between *0* and *1* if `xref` is *container* and between *-2* and *3* if `xref` is *paper*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number"
                }
              ]
            },
            "xanchor": {
              "description": "Sets this color bar's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the color bar. Defaults to *left* when `orientation` is *v* and *center* when `orientation` is *h*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "left",
                    "center",
                    "right"
                  ]
                }
              ]
            },
            "xpad": {
              "description": "Sets the amount of padding (in px) along the x direction.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 10
                }
              ]
            },
            "xref": {
              "description": "Sets the container `x` refers to. *container* spans the entire `width` of the plot. *paper* refers to the width of the plotting area only.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "container",
                    "paper"
                  ],
                  "default": "paper"
                }
              ]
            },
            "y": {
              "description": "Sets the y position with respect to `yref` of the color bar (in plot fraction). When `yref` is *paper*, defaults to 0.5 when `orientation` is *v* and 1.02 when `orientation` is *h*. When `yref` is *container*, defaults to 0.5 when `orientation` is *v* and 1 when `orientation` is *h*. Must be between *0* and *1* if `yref` is *container* and between *-2* and *3* if `yref` is *paper*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number"
                }
              ]
            },
            "yanchor": {
              "description": "Sets this color bar's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the color bar. Defaults to *middle* when `orientation` is *v* and *bottom* when `orientation` is *h*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "top",
                    "middle",
                    "bottom"
                  ]
                }
              ]
            },
            "ypad": {
              "description": "Sets the amount of padding (in px) along the y direction.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 10
                }
              ]
            },
            "yref": {
              "description": "Sets the container `y` refers to. *container* spans the entire `height` of the plot. *paper* refers to the height of the plotting area only.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "container",
                    "paper"
                  ],
                  "default": "paper"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "colorscale": {
          "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "$ref": "#/$defs/colorscale",
              "default": null
            }
          ]
        },
        "customdata": {
          "description": "Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "customdatasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `customdata`.",
          "type": "string"
        },
        "hoverinfo": {
          "description": "Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired.",
          "oneOf": [
            {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "oneOf": [
                    {
                      "type": "string",
                      "enum": [
                        "all",
                        "none",
                        "skip"
                      ]
                    },
                    {
                      "type": "string",
                      "pattern": "^(x|y|z|u|v|w|norm|text|name)(\\+(x|y|z|u|v|w|norm|text|name))*$"
                    }
                  ],
                  "default": "x+y+z+norm+text+name"
                }
              ]
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "oneOf": [
                      {
                        "type": "string",
                        "enum": [
                          "all",
                          "none",
                          "skip"
                        ]
                      },
                      {
                        "type": "string",
                        "pattern": "^(x|y|z|u|v|w|norm|text|name)(\\+(x|y|z|u|v|w|norm|text|name))*$"
                      }
                    ],
                    "default": "x+y+z+norm+text+name"
                  }
                ]
              }
            }
          ]
        },
        "hoverinfosrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.",
          "type": "string"
        },
        "hoverlabel": {
          "type": "object",
          "properties": {
            "align": {
              "description": "Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "left",
                        "right",
                        "auto"
                      ],
                      "default": "auto"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "left",
                          "right",
                          "auto"
                        ],
                        "default": "auto"
                      }
                    ]
                  }
                }
              ]
            },
            "alignsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `align`.",
              "type": "string"
            },
            "bgcolor": {
              "description": "Sets the background color of the hover labels for this trace",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "bgcolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.",
              "type": "string"
            },
            "bordercolor": {
              "description": "Sets the border color of the hover labels for this trace.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "bordercolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.",
              "type": "string"
            },
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "colorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `color`.",
                  "type": "string"
                },
                "family": {
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "oneOf": [
                    {
                      "pattern": ".*\\S.*$",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "pattern": ".*\\S.*$",
                        "type": "string"
                      }
                    },
                    {
                      "$ref": "#/$defs/query-string"
                    }
                  ]
                },
                "familysrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `family`.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "oneOf": [
                              {
                                "type": "string",
                                "enum": [
                                  "none"
                                ]
                              },
                              {
                                "type": "string",
                                "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                              }
                            ],
                            "default": "none"
                          }
                        ]
                      }
                    }
                  ]
                },
                "linepositionsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.",
                  "type": "string"
                },
                "shadow": {
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "oneOf": [
                    {
                      "default": "none",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "default": "none",
                        "type": "string"
                      }
                    }
                  ]
                },
                "shadowsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `shadow`.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 1
                          }
                        ]
                      }
                    }
                  ]
                },
                "sizesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `size`.",
                  "type": "string"
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "italic"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "stylesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `style`.",
                  "type": "string"
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "word caps",
                              "upper",
                              "lower"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "textcasesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `textcase`.",
                  "type": "string"
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "small-caps",
                              "all-small-caps",
                              "all-petite-caps",
                              "petite-caps",
                              "unicase"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "variantsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `variant`.",
                  "type": "string"
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 1000,
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "weightsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `weight`.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "namelength": {
              "description": "Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": -1,
                      "default": 15
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "integer",
                        "minimum": -1,
                        "default": 15
                      }
                    ]
                  }
                }
              ]
            },
            "namelengthsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `namelength`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "hovertemplate": {
          "description": "Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". <https://github.com/d3/d3-format/tree/v1.4.5#d3-format> for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format> for details on the date formatting syntax. The variables available in `hovertemplate` are the ones emitted as event data described at this link <https://plotly.com/javascript/plotlyjs-events/#event-data>. Additionally, every attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variable `norm` Anything contained in tag `<extra>` is displayed in the secondary box, for example \"<extra>{fullData.name}</extra>\". To hide the secondary box completely, use an empty tag `<extra></extra>`.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "hovertemplatesrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.",
          "type": "string"
        },
        "hovertext": {
          "description": "Same as `text`.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "hovertextsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.",
          "type": "string"
        },
        "ids": {
          "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "idssrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `ids`.",
          "type": "string"
        },
        "legend": {
          "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "legend",
              "pattern": "^legend([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "legendgroup": {
          "default": "",
          "description": "Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items.",
          "type": "string"
        },
        "legendgrouptitle": {
          "type": "object",
          "properties": {
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "family": {
                  "pattern": ".*\\S.*$",
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                "shadow": {
                  "default": "none",
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "text": {
              "default": "",
              "description": "Sets the title of the legend group.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "legendrank": {
          "description": "Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": 1000
            }
          ]
        },
        "legendwidth": {
          "description": "Sets the width (in px or fraction) of the legend for this trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0
            }
          ]
        },
        "lighting": {
          "type": "object",
          "properties": {
            "ambient": {
              "description": "Ambient light increases overall color visibility but can wash out the image.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 1,
                  "default": 0.8
                }
              ]
            },
            "diffuse": {
              "description": "Represents the extent that incident rays are reflected in a range of angles.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 1,
                  "default": 0.8
                }
              ]
            },
            "facenormalsepsilon": {
              "description": "Epsilon for face normals calculation avoids math issues arising from degenerate geometry.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 1,
                  "default": 1e-6
                }
              ]
            },
            "fresnel": {
              "description": "Represents the reflectance as a dependency of the viewing angle; e.g. paper is reflective when viewing it from the edge of the paper (almost 90 degrees), causing shine.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 5,
                  "default": 0.2
                }
              ]
            },
            "roughness": {
              "description": "Alters specular reflection; the rougher the surface, the wider and less contrasty the shine.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 1,
                  "default": 0.5
                }
              ]
            },
            "specular": {
              "description": "Represents the level that incident rays are reflected in a single direction, causing shine.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 2,
                  "default": 0.05
                }
              ]
            },
            "vertexnormalsepsilon": {
              "description": "Epsilon for vertex normals calculation avoids math issues arising from degenerate geometry.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 1,
                  "default": 1e-12
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "lightposition": {
          "type": "object",
          "properties": {
            "x": {
              "description": "Numeric vector, representing the X coordinate for each vertex.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": -100000,
                  "maximum": 100000,
                  "default": 100000
                }
              ]
            },
            "y": {
              "description": "Numeric vector, representing the Y coordinate for each vertex.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": -100000,
                  "maximum": 100000,
                  "default": 100000
                }
              ]
            },
            "z": {
              "description": "Numeric vector, representing the Z coordinate for each vertex.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": -100000,
                  "maximum": 100000,
                  "default": 0
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "metasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `meta`.",
          "type": "string"
        },
        "name": {
          "description": "Sets the trace name. The trace name appears as the legend item and on hover.",
          "type": "string"
        },
        "opacity": {
          "description": "Sets the opacity of the surface. Please note that in the case of using high `opacity` values for example a value greater than or equal to 0.5 on two surfaces (and 0.25 with four surfaces), an overlay of multiple transparent surfaces may not perfectly be sorted in depth by the webgl API. This behavior may be improved in the near future and is subject to change.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0,
              "maximum": 1,
              "default": 1
            }
          ]
        },
        "reversescale": {
          "description": "Reverses the color mapping if true. If true, `cmin` will correspond to the last color in the array and `cmax` will correspond to the first color.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": false
            }
          ]
        },
        "scene": {
          "description": "Sets a reference between this trace's 3D coordinate system and a 3D scene. If *scene* (the default value), the (x,y,z) coordinates refer to `layout.scene`. If *scene2*, the (x,y,z) coordinates refer to `layout.scene2`, and so on.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "scene",
              "pattern": "^scene([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "showlegend": {
          "description": "Determines whether or not an item corresponding to this trace is shown in the legend.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": false
            }
          ]
        },
        "showscale": {
          "description": "Determines whether or not a colorbar is displayed for this trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "sizemode": {
          "description": "Determines whether `sizeref` is set as a *scaled* (i.e unitless) scalar (normalized by the max u/v/w norm in the vector field) or as *absolute* value (in the same units as the vector field). To display sizes in actual vector length use *raw*.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "scaled",
                "absolute",
                "raw"
              ],
              "default": "scaled"
            }
          ]
        },
        "sizeref": {
          "description": "Adjusts the cone size scaling. The size of the cones is determined by their u/v/w norm multiplied a factor and `sizeref`. This factor (computed internally) corresponds to the minimum \"time\" to travel across two successive x/y/z positions at the average velocity of those two successive positions. All cones in a given trace use the same factor. With `sizemode` set to *raw*, its default value is *1*. With `sizemode` set to *scaled*, `sizeref` is unitless, its default value is *0.5*. With `sizemode` set to *absolute*, `sizeref` has the same units as the u/v/w vector field, its the default value is half the sample's maximum vector norm.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0
            }
          ]
        },
        "stream": {
          "type": "object",
          "properties": {
            "maxpoints": {
              "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 10000,
                  "default": 500
                }
              ]
            },
            "token": {
              "pattern": ".*\\S.*$",
              "description": "The stream id number links a data trace on a plot with a stream. See <https://chart-studio.plotly.com/settings> for more details.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "text": {
          "description": "Sets the text elements associated with the cones. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "textsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `text`.",
          "type": "string"
        },
        "u": {
          "description": "Sets the x components of the vector field.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "uhoverformat": {
          "default": "",
          "description": "Sets the hover text formatting rulefor `u`  using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By> default the values are formatted using generic number format.",
          "type": "string"
        },
        "uid": {
          "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.",
          "type": "string"
        },
        "uirevision": {
          "description": "Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves."
        },
        "usrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `u`.",
          "type": "string"
        },
        "v": {
          "description": "Sets the y components of the vector field.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "vhoverformat": {
          "default": "",
          "description": "Sets the hover text formatting rulefor `v`  using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By> default the values are formatted using generic number format.",
          "type": "string"
        },
        "visible": {
          "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                true,
                false,
                "legendonly"
              ],
              "default": true
            }
          ]
        },
        "vsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `v`.",
          "type": "string"
        },
        "w": {
          "description": "Sets the z components of the vector field.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "whoverformat": {
          "default": "",
          "description": "Sets the hover text formatting rulefor `w`  using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By> default the values are formatted using generic number format.",
          "type": "string"
        },
        "wsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `w`.",
          "type": "string"
        },
        "x": {
          "description": "Sets the x coordinates of the vector field and of the displayed cones.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "xhoverformat": {
          "default": "",
          "description": "Sets the hover text formatting rulefor `x`  using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.",
          "type": "string"
        },
        "xsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `x`.",
          "type": "string"
        },
        "y": {
          "description": "Sets the y coordinates of the vector field and of the displayed cones.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "yhoverformat": {
          "default": "",
          "description": "Sets the hover text formatting rulefor `y`  using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.",
          "type": "string"
        },
        "ysrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `y`.",
          "type": "string"
        },
        "z": {
          "description": "Sets the z coordinates of the vector field and of the displayed cones.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "zhoverformat": {
          "default": "",
          "description": "Sets the hover text formatting rulefor `z`  using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `zaxis.hoverformat`.",
          "type": "string"
        },
        "zsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `z`.",
          "type": "string"
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false
    },
    "Contour": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "$id": "https://visivo.io/trace-properties/schema",
      "description": "A schema to validate plotly trace properties",
      "type": "object",
      "properties": {
        "type": {
          "const": "contour"
        },
        "autocolorscale": {
          "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": false
            }
          ]
        },
        "autocontour": {
          "description": "Determines whether or not the contour level attributes are picked by an algorithm. If *true*, the number of contour levels can be set in `ncontours`. If *false*, set the contour level attributes in `contours`.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "coloraxis": {
          "description": "Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": null,
              "pattern": "/^coloraxis([2-9]|[1-9][0-9]+)?$/"
            }
          ]
        },
        "colorbar": {
          "type": "object",
          "properties": {
            "bgcolor": {
              "description": "Sets the color of padded area.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "bordercolor": {
              "description": "Sets the axis line color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "borderwidth": {
              "description": "Sets the width (in px) or the border enclosing this color bar.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "dtick": {
              "description": "Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L<f>*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M<n>* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48*"
            },
            "exponentformat": {
              "description": "Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "none",
                    "e",
                    "E",
                    "power",
                    "SI",
                    "B"
                  ],
                  "default": "B"
                }
              ]
            },
            "labelalias": {
              "default": false,
              "description": "Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax."
            },
            "len": {
              "description": "Sets the length of the color bar This measure excludes the padding of both ends. That is, the color bar length is this length minus the padding on both ends.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 1
                }
              ]
            },
            "lenmode": {
              "description": "Determines whether this color bar's length (i.e. the measure in the color variation direction) is set in units of plot *fraction* or in *pixels. Use `len` to set the value.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "fraction",
                    "pixels"
                  ],
                  "default": "fraction"
                }
              ]
            },
            "minexponent": {
              "description": "Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 3
                }
              ]
            },
            "nticks": {
              "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "orientation": {
              "description": "Sets the orientation of the colorbar.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "h",
                    "v"
                  ],
                  "default": "v"
                }
              ]
            },
            "outlinecolor": {
              "description": "Sets the axis line color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "outlinewidth": {
              "description": "Sets the width (in px) of the axis line.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 1
                }
              ]
            },
            "separatethousands": {
              "description": "If \"true\", even 4-digit integers are separated",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            },
            "showexponent": {
              "description": "If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "all",
                    "first",
                    "last",
                    "none"
                  ],
                  "default": "all"
                }
              ]
            },
            "showticklabels": {
              "description": "Determines whether or not the tick labels are drawn.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": true
                }
              ]
            },
            "showtickprefix": {
              "description": "If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "all",
                    "first",
                    "last",
                    "none"
                  ],
                  "default": "all"
                }
              ]
            },
            "showticksuffix": {
              "description": "Same as `showtickprefix` but for tick suffixes.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "all",
                    "first",
                    "last",
                    "none"
                  ],
                  "default": "all"
                }
              ]
            },
            "thickness": {
              "description": "Sets the thickness of the color bar This measure excludes the size of the padding, ticks and labels.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 30
                }
              ]
            },
            "thicknessmode": {
              "description": "Determines whether this color bar's thickness (i.e. the measure in the constant color direction) is set in units of plot *fraction* or in *pixels*. Use `thickness` to set the value.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "fraction",
                    "pixels"
                  ],
                  "default": "pixels"
                }
              ]
            },
            "tick0": {
              "description": "Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L<f>* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears."
            },
            "tickangle": {
              "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": -180,
                  "maximum": 180,
                  "default": "auto"
                }
              ]
            },
            "tickcolor": {
              "description": "Sets the tick color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "tickfont": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "family": {
                  "pattern": ".*\\S.*$",
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                "shadow": {
                  "default": "none",
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "tickformat": {
              "default": "",
              "description": "Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*",
              "type": "string"
            },
            "tickformatstops": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "dtickrange": {
                    "description": "range [*min*, *max*], where *min*, *max* - dtick values which describe some zoom level, it is possible to omit *min* or *max* value by passing *null*",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "array",
                        "items": {},
                        "minItems": 2,
                        "maxItems": 2
                      }
                    ]
                  },
                  "enabled": {
                    "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "boolean",
                        "default": true
                      }
                    ]
                  },
                  "name": {
                    "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.",
                    "type": "string"
                  },
                  "templateitemname": {
                    "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.",
                    "type": "string"
                  },
                  "value": {
                    "default": "",
                    "description": "string - dtickformat for described zoom level, the same as *tickformat*",
                    "type": "string"
                  }
                },
                "additionalProperties": false
              },
              "minItems": 1
            },
            "ticklabeloverflow": {
              "description": "Determines how we handle tick labels that would overflow either the graph div or the domain of the axis. The default value for inside tick labels is *hide past domain*. In other cases the default is *hide past div*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "allow",
                    "hide past div",
                    "hide past domain"
                  ]
                }
              ]
            },
            "ticklabelposition": {
              "description": "Determines where tick labels are drawn relative to the ticks. Left and right options are used when `orientation` is *h*, top and bottom when `orientation` is *v*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "outside",
                    "inside",
                    "outside top",
                    "inside top",
                    "outside left",
                    "inside left",
                    "outside right",
                    "inside right",
                    "outside bottom",
                    "inside bottom"
                  ],
                  "default": "outside"
                }
              ]
            },
            "ticklabelstep": {
              "description": "Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 1,
                  "default": 1
                }
              ]
            },
            "ticklen": {
              "description": "Sets the tick length (in px).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 5
                }
              ]
            },
            "tickmode": {
              "description": "Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "auto",
                    "linear",
                    "array"
                  ]
                }
              ]
            },
            "tickprefix": {
              "default": "",
              "description": "Sets a tick label prefix.",
              "type": "string"
            },
            "ticks": {
              "description": "Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "outside",
                    "inside",
                    ""
                  ],
                  "default": ""
                }
              ]
            },
            "ticksuffix": {
              "default": "",
              "description": "Sets a tick label suffix.",
              "type": "string"
            },
            "ticktext": {
              "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  }
                }
              ]
            },
            "ticktextsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.",
              "type": "string"
            },
            "tickvals": {
              "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  }
                }
              ]
            },
            "tickvalssrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.",
              "type": "string"
            },
            "tickwidth": {
              "description": "Sets the tick width (in px).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 1
                }
              ]
            },
            "title": {
              "type": "object",
              "properties": {
                "font": {
                  "type": "object",
                  "properties": {
                    "color": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    "family": {
                      "pattern": ".*\\S.*$",
                      "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                      "type": "string"
                    },
                    "lineposition": {
                      "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    "shadow": {
                      "default": "none",
                      "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                      "type": "string"
                    },
                    "size": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    "style": {
                      "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "textcase": {
                      "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "variant": {
                      "description": "Sets the variant of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "weight": {
                      "description": "Sets the weight (or boldness) of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    }
                  },
                  "additionalProperties": false
                },
                "side": {
                  "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and  defaults to *right* when `orientation` if *h*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "right",
                        "top",
                        "bottom"
                      ]
                    }
                  ]
                },
                "text": {
                  "description": "Sets the title of the color bar.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "x": {
              "description": "Sets the x position with respect to `xref` of the color bar (in plot fraction). When `xref` is *paper*, defaults to 1.02 when `orientation` is *v* and 0.5 when `orientation` is *h*. When `xref` is *container*, defaults to *1* when `orientation` is *v* and 0.5 when `orientation` is *h*. Must be between *0* and *1* if `xref` is *container* and between *-2* and *3* if `xref` is *paper*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number"
                }
              ]
            },
            "xanchor": {
              "description": "Sets this color bar's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the color bar. Defaults to *left* when `orientation` is *v* and *center* when `orientation` is *h*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "left",
                    "center",
                    "right"
                  ]
                }
              ]
            },
            "xpad": {
              "description": "Sets the amount of padding (in px) along the x direction.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 10
                }
              ]
            },
            "xref": {
              "description": "Sets the container `x` refers to. *container* spans the entire `width` of the plot. *paper* refers to the width of the plotting area only.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "container",
                    "paper"
                  ],
                  "default": "paper"
                }
              ]
            },
            "y": {
              "description": "Sets the y position with respect to `yref` of the color bar (in plot fraction). When `yref` is *paper*, defaults to 0.5 when `orientation` is *v* and 1.02 when `orientation` is *h*. When `yref` is *container*, defaults to 0.5 when `orientation` is *v* and 1 when `orientation` is *h*. Must be between *0* and *1* if `yref` is *container* and between *-2* and *3* if `yref` is *paper*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number"
                }
              ]
            },
            "yanchor": {
              "description": "Sets this color bar's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the color bar. Defaults to *middle* when `orientation` is *v* and *bottom* when `orientation` is *h*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "top",
                    "middle",
                    "bottom"
                  ]
                }
              ]
            },
            "ypad": {
              "description": "Sets the amount of padding (in px) along the y direction.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 10
                }
              ]
            },
            "yref": {
              "description": "Sets the container `y` refers to. *container* spans the entire `height` of the plot. *paper* refers to the height of the plotting area only.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "container",
                    "paper"
                  ],
                  "default": "paper"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "colorscale": {
          "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "$ref": "#/$defs/colorscale",
              "default": null
            }
          ]
        },
        "connectgaps": {
          "description": "Determines whether or not gaps (i.e. {nan} or missing values) in the `z` data are filled in. It is defaulted to true if `z` is a one dimensional array otherwise it is defaulted to false.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean"
            }
          ]
        },
        "contours": {
          "type": "object",
          "properties": {
            "coloring": {
              "description": "Determines the coloring method showing the contour values. If *fill*, coloring is done evenly between each contour level If *heatmap*, a heatmap gradient coloring is applied between each contour level. If *lines*, coloring is done on the contour lines. If *none*, no coloring is applied on this trace.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "fill",
                    "heatmap",
                    "lines",
                    "none"
                  ],
                  "default": "fill"
                }
              ]
            },
            "end": {
              "description": "Sets the end contour level value. Must be more than `contours.start`",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": null
                }
              ]
            },
            "impliedEdits": {},
            "labelfont": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "family": {
                  "pattern": ".*\\S.*$",
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                "shadow": {
                  "default": "none",
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "labelformat": {
              "default": "",
              "description": "Sets the contour label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>.",
              "type": "string"
            },
            "operation": {
              "description": "Sets the constraint operation. *=* keeps regions equal to `value` *<* and *<=* keep regions less than `value` *>* and *>=* keep regions greater than `value` *[]*, *()*, *[)*, and *(]* keep regions inside `value[0]` to `value[1]` *][*, *)(*, *](*, *)[* keep regions outside `value[0]` to value[1]` Open vs. closed intervals make no difference to constraint display, but all versions are allowed for consistency with filter transforms.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "=",
                    "<",
                    ">=",
                    ">",
                    "<=",
                    "[]",
                    "()",
                    "[)",
                    "(]",
                    "][",
                    ")(",
                    "](",
                    ")["
                  ],
                  "default": "="
                }
              ]
            },
            "showlabels": {
              "description": "Determines whether to label the contour lines with their values.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            },
            "showlines": {
              "description": "Determines whether or not the contour lines are drawn. Has an effect only if `contours.coloring` is set to *fill*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": true
                }
              ]
            },
            "size": {
              "description": "Sets the step between each contour level. Must be positive.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": null
                }
              ]
            },
            "start": {
              "description": "Sets the starting contour level value. Must be less than `contours.end`",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": null
                }
              ]
            },
            "type": {
              "description": "If `levels`, the data is represented as a contour plot with multiple levels displayed. If `constraint`, the data is represented as constraints with the invalid region shaded as specified by the `operation` and `value` parameters.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "levels",
                    "constraint"
                  ],
                  "default": "levels"
                }
              ]
            },
            "value": {
              "default": 0,
              "description": "Sets the value or values of the constraint boundary. When `operation` is set to one of the comparison values (=,<,>=,>,<=) *value* is expected to be a number. When `operation` is set to one of the interval values ([],(),[),(],][,)(,](,)[) *value* is expected to be an array of two numbers where the first is the lower bound and the second is the upper bound."
            }
          },
          "additionalProperties": false
        },
        "customdata": {
          "description": "Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "customdatasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `customdata`.",
          "type": "string"
        },
        "dx": {
          "description": "Sets the x coordinate step. See `x0` for more info.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": 1
            }
          ]
        },
        "dy": {
          "description": "Sets the y coordinate step. See `y0` for more info.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": 1
            }
          ]
        },
        "fillcolor": {
          "description": "Sets the fill color if `contours.type` is *constraint*. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "$ref": "#/$defs/color"
            }
          ]
        },
        "hoverinfo": {
          "description": "Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired.",
          "oneOf": [
            {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "oneOf": [
                    {
                      "type": "string",
                      "enum": [
                        "all",
                        "none",
                        "skip"
                      ]
                    },
                    {
                      "type": "string",
                      "pattern": "^(x|y|z|text|name)(\\+(x|y|z|text|name))*$"
                    }
                  ],
                  "default": "all"
                }
              ]
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "oneOf": [
                      {
                        "type": "string",
                        "enum": [
                          "all",
                          "none",
                          "skip"
                        ]
                      },
                      {
                        "type": "string",
                        "pattern": "^(x|y|z|text|name)(\\+(x|y|z|text|name))*$"
                      }
                    ],
                    "default": "all"
                  }
                ]
              }
            }
          ]
        },
        "hoverinfosrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.",
          "type": "string"
        },
        "hoverlabel": {
          "type": "object",
          "properties": {
            "align": {
              "description": "Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "left",
                        "right",
                        "auto"
                      ],
                      "default": "auto"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "left",
                          "right",
                          "auto"
                        ],
                        "default": "auto"
                      }
                    ]
                  }
                }
              ]
            },
            "alignsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `align`.",
              "type": "string"
            },
            "bgcolor": {
              "description": "Sets the background color of the hover labels for this trace",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "bgcolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.",
              "type": "string"
            },
            "bordercolor": {
              "description": "Sets the border color of the hover labels for this trace.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "bordercolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.",
              "type": "string"
            },
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "colorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `color`.",
                  "type": "string"
                },
                "family": {
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "oneOf": [
                    {
                      "pattern": ".*\\S.*$",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "pattern": ".*\\S.*$",
                        "type": "string"
                      }
                    },
                    {
                      "$ref": "#/$defs/query-string"
                    }
                  ]
                },
                "familysrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `family`.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "oneOf": [
                              {
                                "type": "string",
                                "enum": [
                                  "none"
                                ]
                              },
                              {
                                "type": "string",
                                "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                              }
                            ],
                            "default": "none"
                          }
                        ]
                      }
                    }
                  ]
                },
                "linepositionsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.",
                  "type": "string"
                },
                "shadow": {
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "oneOf": [
                    {
                      "default": "none",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "default": "none",
                        "type": "string"
                      }
                    }
                  ]
                },
                "shadowsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `shadow`.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 1
                          }
                        ]
                      }
                    }
                  ]
                },
                "sizesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `size`.",
                  "type": "string"
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "italic"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "stylesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `style`.",
                  "type": "string"
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "word caps",
                              "upper",
                              "lower"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "textcasesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `textcase`.",
                  "type": "string"
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "small-caps",
                              "all-small-caps",
                              "all-petite-caps",
                              "petite-caps",
                              "unicase"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "variantsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `variant`.",
                  "type": "string"
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 1000,
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "weightsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `weight`.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "namelength": {
              "description": "Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": -1,
                      "default": 15
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "integer",
                        "minimum": -1,
                        "default": 15
                      }
                    ]
                  }
                }
              ]
            },
            "namelengthsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `namelength`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "hoverongaps": {
          "description": "Determines whether or not gaps (i.e. {nan} or missing values) in the `z` data have hover labels associated with them.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "hovertemplate": {
          "description": "Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". <https://github.com/d3/d3-format/tree/v1.4.5#d3-format> for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format> for details on the date formatting syntax. The variables available in `hovertemplate` are the ones emitted as event data described at this link <https://plotly.com/javascript/plotlyjs-events/#event-data>. Additionally, every attributes that can be specified per-point (the ones that are `arrayOk: true`) are available.  Anything contained in tag `<extra>` is displayed in the secondary box, for example \"<extra>{fullData.name}</extra>\". To hide the secondary box completely, use an empty tag `<extra></extra>`.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "hovertemplatesrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.",
          "type": "string"
        },
        "hovertext": {
          "description": "Same as `text`.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "hovertextsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.",
          "type": "string"
        },
        "ids": {
          "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "idssrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `ids`.",
          "type": "string"
        },
        "legend": {
          "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "legend",
              "pattern": "^legend([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "legendgroup": {
          "default": "",
          "description": "Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items.",
          "type": "string"
        },
        "legendgrouptitle": {
          "type": "object",
          "properties": {
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "family": {
                  "pattern": ".*\\S.*$",
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                "shadow": {
                  "default": "none",
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "text": {
              "default": "",
              "description": "Sets the title of the legend group.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "legendrank": {
          "description": "Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": 1000
            }
          ]
        },
        "legendwidth": {
          "description": "Sets the width (in px or fraction) of the legend for this trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0
            }
          ]
        },
        "line": {
          "type": "object",
          "properties": {
            "color": {
              "description": "Sets the color of the contour level. Has no effect if `contours.coloring` is set to *lines*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "dash": {
              "default": "solid",
              "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).",
              "type": "string"
            },
            "smoothing": {
              "description": "Sets the amount of smoothing for the contour lines, where *0* corresponds to no smoothing.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 1.3,
                  "default": 1
                }
              ]
            },
            "width": {
              "description": "Sets the contour line width in (in px) Defaults to *0.5* when `contours.type` is *levels*. Defaults to *2* when `contour.type` is *constraint*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "metasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `meta`.",
          "type": "string"
        },
        "name": {
          "description": "Sets the trace name. The trace name appears as the legend item and on hover.",
          "type": "string"
        },
        "ncontours": {
          "description": "Sets the maximum number of contour levels. The actual number of contours will be chosen automatically to be less than or equal to the value of `ncontours`. Has an effect only if `autocontour` is *true* or if `contours.size` is missing.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "integer",
              "minimum": 1,
              "default": 15
            }
          ]
        },
        "opacity": {
          "description": "Sets the opacity of the trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0,
              "maximum": 1,
              "default": 1
            }
          ]
        },
        "reversescale": {
          "description": "Reverses the color mapping if true. If true, `zmin` will correspond to the last color in the array and `zmax` will correspond to the first color.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": false
            }
          ]
        },
        "showlegend": {
          "description": "Determines whether or not an item corresponding to this trace is shown in the legend.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "showscale": {
          "description": "Determines whether or not a colorbar is displayed for this trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "stream": {
          "type": "object",
          "properties": {
            "maxpoints": {
              "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 10000,
                  "default": 500
                }
              ]
            },
            "token": {
              "pattern": ".*\\S.*$",
              "description": "The stream id number links a data trace on a plot with a stream. See <https://chart-studio.plotly.com/settings> for more details.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "text": {
          "description": "Sets the text elements associated with each z value.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "textfont": {
          "type": "object",
          "properties": {
            "color": {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "family": {
              "pattern": ".*\\S.*$",
              "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
              "type": "string"
            },
            "lineposition": {
              "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "oneOf": [
                    {
                      "type": "string",
                      "enum": [
                        "none"
                      ]
                    },
                    {
                      "type": "string",
                      "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                    }
                  ],
                  "default": "none"
                }
              ]
            },
            "shadow": {
              "default": "none",
              "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
              "type": "string"
            },
            "size": {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 1,
                  "default": "auto"
                }
              ]
            },
            "style": {
              "description": "Sets whether a font should be styled with a normal or italic face from its family.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "normal",
                    "italic"
                  ],
                  "default": "normal"
                }
              ]
            },
            "textcase": {
              "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "normal",
                    "word caps",
                    "upper",
                    "lower"
                  ],
                  "default": "normal"
                }
              ]
            },
            "variant": {
              "description": "Sets the variant of the font.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "normal",
                    "small-caps",
                    "all-small-caps",
                    "all-petite-caps",
                    "petite-caps",
                    "unicase"
                  ],
                  "default": "normal"
                }
              ]
            },
            "weight": {
              "description": "Sets the weight (or boldness) of the font.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 1,
                  "maximum": 1000,
                  "default": "normal"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "textsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `text`.",
          "type": "string"
        },
        "texttemplate": {
          "default": "",
          "description": "For this trace it only has an effect if `coloring` is set to *heatmap*. Template string used for rendering the information text that appear on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". <https://github.com/d3/d3-format/tree/v1.4.5#d3-format> for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format> for details on the date formatting syntax. Every attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `x`, `y`, `z` and `text`.",
          "type": "string"
        },
        "transpose": {
          "description": "Transposes the z data.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": false
            }
          ]
        },
        "uid": {
          "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.",
          "type": "string"
        },
        "uirevision": {
          "description": "Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves."
        },
        "visible": {
          "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                true,
                false,
                "legendonly"
              ],
              "default": true
            }
          ]
        },
        "x": {
          "description": "Sets the x coordinates.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "x0": {
          "default": 0,
          "description": "Alternate to `x`. Builds a linear space of x coordinates. Use with `dx` where `x0` is the starting coordinate and `dx` the step."
        },
        "xaxis": {
          "description": "Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "x",
              "pattern": "^x([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "xcalendar": {
          "description": "Sets the calendar system to use with `x` date data.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "chinese",
                "coptic",
                "discworld",
                "ethiopian",
                "gregorian",
                "hebrew",
                "islamic",
                "jalali",
                "julian",
                "mayan",
                "nanakshahi",
                "nepali",
                "persian",
                "taiwan",
                "thai",
                "ummalqura"
              ],
              "default": "gregorian"
            }
          ]
        },
        "xhoverformat": {
          "default": "",
          "description": "Sets the hover text formatting rulefor `x`  using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.",
          "type": "string"
        },
        "xperiod": {
          "default": 0,
          "description": "Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M<n>* on the x axis. Special values in the form of *M<n>* could be used to declare the number of months. In this case `n` must be a positive integer."
        },
        "xperiod0": {
          "description": "Only relevant when the axis `type` is *date*. Sets the base for period positioning in milliseconds or date string on the x0 axis. When `x0period` is round number of weeks, the `x0period0` by default would be on a Sunday i.e. 2000-01-02, otherwise it would be at 2000-01-01."
        },
        "xperiodalignment": {
          "description": "Only relevant when the axis `type` is *date*. Sets the alignment of data points on the x axis.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "start",
                "middle",
                "end"
              ],
              "default": "middle"
            }
          ]
        },
        "xsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `x`.",
          "type": "string"
        },
        "xtype": {
          "description": "If *array*, the heatmap's x coordinates are given by *x* (the default behavior when `x` is provided). If *scaled*, the heatmap's x coordinates are given by *x0* and *dx* (the default behavior when `x` is not provided).",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "array",
                "scaled"
              ]
            }
          ]
        },
        "y": {
          "description": "Sets the y coordinates.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "y0": {
          "default": 0,
          "description": "Alternate to `y`. Builds a linear space of y coordinates. Use with `dy` where `y0` is the starting coordinate and `dy` the step."
        },
        "yaxis": {
          "description": "Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "y",
              "pattern": "^y([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "ycalendar": {
          "description": "Sets the calendar system to use with `y` date data.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "chinese",
                "coptic",
                "discworld",
                "ethiopian",
                "gregorian",
                "hebrew",
                "islamic",
                "jalali",
                "julian",
                "mayan",
                "nanakshahi",
                "nepali",
                "persian",
                "taiwan",
                "thai",
                "ummalqura"
              ],
              "default": "gregorian"
            }
          ]
        },
        "yhoverformat": {
          "default": "",
          "description": "Sets the hover text formatting rulefor `y`  using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.",
          "type": "string"
        },
        "yperiod": {
          "default": 0,
          "description": "Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M<n>* on the y axis. Special values in the form of *M<n>* could be used to declare the number of months. In this case `n` must be a positive integer."
        },
        "yperiod0": {
          "description": "Only relevant when the axis `type` is *date*. Sets the base for period positioning in milliseconds or date string on the y0 axis. When `y0period` is round number of weeks, the `y0period0` by default would be on a Sunday i.e. 2000-01-02, otherwise it would be at 2000-01-01."
        },
        "yperiodalignment": {
          "description": "Only relevant when the axis `type` is *date*. Sets the alignment of data points on the y axis.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "start",
                "middle",
                "end"
              ],
              "default": "middle"
            }
          ]
        },
        "ysrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `y`.",
          "type": "string"
        },
        "ytype": {
          "description": "If *array*, the heatmap's y coordinates are given by *y* (the default behavior when `y` is provided) If *scaled*, the heatmap's y coordinates are given by *y0* and *dy* (the default behavior when `y` is not provided)",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "array",
                "scaled"
              ]
            }
          ]
        },
        "z": {
          "description": "Sets the z data.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "zauto": {
          "description": "Determines whether or not the color domain is computed with respect to the input data (here in `z`) or the bounds set in `zmin` and `zmax` Defaults to `false` when `zmin` and `zmax` are set by the user.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "zhoverformat": {
          "default": "",
          "description": "Sets the hover text formatting rulefor `z`  using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By> default the values are formatted using generic number format.",
          "type": "string"
        },
        "zmax": {
          "description": "Sets the upper bound of the color domain. Value should have the same units as in `z` and if set, `zmin` must be set as well.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": null
            }
          ]
        },
        "zmid": {
          "description": "Sets the mid-point of the color domain by scaling `zmin` and/or `zmax` to be equidistant to this point. Value should have the same units as in `z`. Has no effect when `zauto` is `false`.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": null
            }
          ]
        },
        "zmin": {
          "description": "Sets the lower bound of the color domain. Value should have the same units as in `z` and if set, `zmax` must be set as well.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": null
            }
          ]
        },
        "zorder": {
          "description": "Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "integer",
              "default": 0
            }
          ]
        },
        "zsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `z`.",
          "type": "string"
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false
    },
    "Contourcarpet": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "$id": "https://visivo.io/trace-properties/schema",
      "description": "A schema to validate plotly trace properties",
      "type": "object",
      "properties": {
        "type": {
          "const": "contourcarpet"
        },
        "a": {
          "description": "Sets the x coordinates.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "a0": {
          "default": 0,
          "description": "Alternate to `x`. Builds a linear space of x coordinates. Use with `dx` where `x0` is the starting coordinate and `dx` the step."
        },
        "asrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `a`.",
          "type": "string"
        },
        "atype": {
          "description": "If *array*, the heatmap's x coordinates are given by *x* (the default behavior when `x` is provided). If *scaled*, the heatmap's x coordinates are given by *x0* and *dx* (the default behavior when `x` is not provided).",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "array",
                "scaled"
              ]
            }
          ]
        },
        "autocolorscale": {
          "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": false
            }
          ]
        },
        "autocontour": {
          "description": "Determines whether or not the contour level attributes are picked by an algorithm. If *true*, the number of contour levels can be set in `ncontours`. If *false*, set the contour level attributes in `contours`.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "b": {
          "description": "Sets the y coordinates.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "b0": {
          "default": 0,
          "description": "Alternate to `y`. Builds a linear space of y coordinates. Use with `dy` where `y0` is the starting coordinate and `dy` the step."
        },
        "bsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `b`.",
          "type": "string"
        },
        "btype": {
          "description": "If *array*, the heatmap's y coordinates are given by *y* (the default behavior when `y` is provided) If *scaled*, the heatmap's y coordinates are given by *y0* and *dy* (the default behavior when `y` is not provided)",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "array",
                "scaled"
              ]
            }
          ]
        },
        "carpet": {
          "description": "The `carpet` of the carpet axes on which this contour trace lies",
          "type": "string"
        },
        "coloraxis": {
          "description": "Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": null,
              "pattern": "/^coloraxis([2-9]|[1-9][0-9]+)?$/"
            }
          ]
        },
        "colorbar": {
          "type": "object",
          "properties": {
            "bgcolor": {
              "description": "Sets the color of padded area.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "bordercolor": {
              "description": "Sets the axis line color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "borderwidth": {
              "description": "Sets the width (in px) or the border enclosing this color bar.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "dtick": {
              "description": "Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L<f>*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M<n>* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48*"
            },
            "exponentformat": {
              "description": "Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "none",
                    "e",
                    "E",
                    "power",
                    "SI",
                    "B"
                  ],
                  "default": "B"
                }
              ]
            },
            "labelalias": {
              "default": false,
              "description": "Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax."
            },
            "len": {
              "description": "Sets the length of the color bar This measure excludes the padding of both ends. That is, the color bar length is this length minus the padding on both ends.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 1
                }
              ]
            },
            "lenmode": {
              "description": "Determines whether this color bar's length (i.e. the measure in the color variation direction) is set in units of plot *fraction* or in *pixels. Use `len` to set the value.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "fraction",
                    "pixels"
                  ],
                  "default": "fraction"
                }
              ]
            },
            "minexponent": {
              "description": "Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 3
                }
              ]
            },
            "nticks": {
              "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "orientation": {
              "description": "Sets the orientation of the colorbar.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "h",
                    "v"
                  ],
                  "default": "v"
                }
              ]
            },
            "outlinecolor": {
              "description": "Sets the axis line color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "outlinewidth": {
              "description": "Sets the width (in px) of the axis line.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 1
                }
              ]
            },
            "separatethousands": {
              "description": "If \"true\", even 4-digit integers are separated",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            },
            "showexponent": {
              "description": "If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "all",
                    "first",
                    "last",
                    "none"
                  ],
                  "default": "all"
                }
              ]
            },
            "showticklabels": {
              "description": "Determines whether or not the tick labels are drawn.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": true
                }
              ]
            },
            "showtickprefix": {
              "description": "If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "all",
                    "first",
                    "last",
                    "none"
                  ],
                  "default": "all"
                }
              ]
            },
            "showticksuffix": {
              "description": "Same as `showtickprefix` but for tick suffixes.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "all",
                    "first",
                    "last",
                    "none"
                  ],
                  "default": "all"
                }
              ]
            },
            "thickness": {
              "description": "Sets the thickness of the color bar This measure excludes the size of the padding, ticks and labels.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 30
                }
              ]
            },
            "thicknessmode": {
              "description": "Determines whether this color bar's thickness (i.e. the measure in the constant color direction) is set in units of plot *fraction* or in *pixels*. Use `thickness` to set the value.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "fraction",
                    "pixels"
                  ],
                  "default": "pixels"
                }
              ]
            },
            "tick0": {
              "description": "Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L<f>* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears."
            },
            "tickangle": {
              "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": -180,
                  "maximum": 180,
                  "default": "auto"
                }
              ]
            },
            "tickcolor": {
              "description": "Sets the tick color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "tickfont": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "family": {
                  "pattern": ".*\\S.*$",
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                "shadow": {
                  "default": "none",
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "tickformat": {
              "default": "",
              "description": "Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*",
              "type": "string"
            },
            "tickformatstops": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "dtickrange": {
                    "description": "range [*min*, *max*], where *min*, *max* - dtick values which describe some zoom level, it is possible to omit *min* or *max* value by passing *null*",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "array",
                        "items": {},
                        "minItems": 2,
                        "maxItems": 2
                      }
                    ]
                  },
                  "enabled": {
                    "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "boolean",
                        "default": true
                      }
                    ]
                  },
                  "name": {
                    "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.",
                    "type": "string"
                  },
                  "templateitemname": {
                    "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.",
                    "type": "string"
                  },
                  "value": {
                    "default": "",
                    "description": "string - dtickformat for described zoom level, the same as *tickformat*",
                    "type": "string"
                  }
                },
                "additionalProperties": false
              },
              "minItems": 1
            },
            "ticklabeloverflow": {
              "description": "Determines how we handle tick labels that would overflow either the graph div or the domain of the axis. The default value for inside tick labels is *hide past domain*. In other cases the default is *hide past div*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "allow",
                    "hide past div",
                    "hide past domain"
                  ]
                }
              ]
            },
            "ticklabelposition": {
              "description": "Determines where tick labels are drawn relative to the ticks. Left and right options are used when `orientation` is *h*, top and bottom when `orientation` is *v*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "outside",
                    "inside",
                    "outside top",
                    "inside top",
                    "outside left",
                    "inside left",
                    "outside right",
                    "inside right",
                    "outside bottom",
                    "inside bottom"
                  ],
                  "default": "outside"
                }
              ]
            },
            "ticklabelstep": {
              "description": "Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 1,
                  "default": 1
                }
              ]
            },
            "ticklen": {
              "description": "Sets the tick length (in px).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 5
                }
              ]
            },
            "tickmode": {
              "description": "Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "auto",
                    "linear",
                    "array"
                  ]
                }
              ]
            },
            "tickprefix": {
              "default": "",
              "description": "Sets a tick label prefix.",
              "type": "string"
            },
            "ticks": {
              "description": "Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "outside",
                    "inside",
                    ""
                  ],
                  "default": ""
                }
              ]
            },
            "ticksuffix": {
              "default": "",
              "description": "Sets a tick label suffix.",
              "type": "string"
            },
            "ticktext": {
              "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  }
                }
              ]
            },
            "ticktextsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.",
              "type": "string"
            },
            "tickvals": {
              "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  }
                }
              ]
            },
            "tickvalssrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.",
              "type": "string"
            },
            "tickwidth": {
              "description": "Sets the tick width (in px).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 1
                }
              ]
            },
            "title": {
              "type": "object",
              "properties": {
                "font": {
                  "type": "object",
                  "properties": {
                    "color": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    "family": {
                      "pattern": ".*\\S.*$",
                      "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                      "type": "string"
                    },
                    "lineposition": {
                      "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    "shadow": {
                      "default": "none",
                      "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                      "type": "string"
                    },
                    "size": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    "style": {
                      "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "textcase": {
                      "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "variant": {
                      "description": "Sets the variant of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "weight": {
                      "description": "Sets the weight (or boldness) of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    }
                  },
                  "additionalProperties": false
                },
                "side": {
                  "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and  defaults to *right* when `orientation` if *h*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "right",
                        "top",
                        "bottom"
                      ]
                    }
                  ]
                },
                "text": {
                  "description": "Sets the title of the color bar.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "x": {
              "description": "Sets the x position with respect to `xref` of the color bar (in plot fraction). When `xref` is *paper*, defaults to 1.02 when `orientation` is *v* and 0.5 when `orientation` is *h*. When `xref` is *container*, defaults to *1* when `orientation` is *v* and 0.5 when `orientation` is *h*. Must be between *0* and *1* if `xref` is *container* and between *-2* and *3* if `xref` is *paper*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number"
                }
              ]
            },
            "xanchor": {
              "description": "Sets this color bar's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the color bar. Defaults to *left* when `orientation` is *v* and *center* when `orientation` is *h*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "left",
                    "center",
                    "right"
                  ]
                }
              ]
            },
            "xpad": {
              "description": "Sets the amount of padding (in px) along the x direction.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 10
                }
              ]
            },
            "xref": {
              "description": "Sets the container `x` refers to. *container* spans the entire `width` of the plot. *paper* refers to the width of the plotting area only.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "container",
                    "paper"
                  ],
                  "default": "paper"
                }
              ]
            },
            "y": {
              "description": "Sets the y position with respect to `yref` of the color bar (in plot fraction). When `yref` is *paper*, defaults to 0.5 when `orientation` is *v* and 1.02 when `orientation` is *h*. When `yref` is *container*, defaults to 0.5 when `orientation` is *v* and 1 when `orientation` is *h*. Must be between *0* and *1* if `yref` is *container* and between *-2* and *3* if `yref` is *paper*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number"
                }
              ]
            },
            "yanchor": {
              "description": "Sets this color bar's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the color bar. Defaults to *middle* when `orientation` is *v* and *bottom* when `orientation` is *h*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "top",
                    "middle",
                    "bottom"
                  ]
                }
              ]
            },
            "ypad": {
              "description": "Sets the amount of padding (in px) along the y direction.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 10
                }
              ]
            },
            "yref": {
              "description": "Sets the container `y` refers to. *container* spans the entire `height` of the plot. *paper* refers to the height of the plotting area only.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "container",
                    "paper"
                  ],
                  "default": "paper"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "colorscale": {
          "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "$ref": "#/$defs/colorscale",
              "default": null
            }
          ]
        },
        "contours": {
          "type": "object",
          "properties": {
            "coloring": {
              "description": "Determines the coloring method showing the contour values. If *fill*, coloring is done evenly between each contour level If *lines*, coloring is done on the contour lines. If *none*, no coloring is applied on this trace.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "fill",
                    "lines",
                    "none"
                  ],
                  "default": "fill"
                }
              ]
            },
            "end": {
              "description": "Sets the end contour level value. Must be more than `contours.start`",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": null
                }
              ]
            },
            "impliedEdits": {},
            "labelfont": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "family": {
                  "pattern": ".*\\S.*$",
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                "shadow": {
                  "default": "none",
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "labelformat": {
              "default": "",
              "description": "Sets the contour label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>.",
              "type": "string"
            },
            "operation": {
              "description": "Sets the constraint operation. *=* keeps regions equal to `value` *<* and *<=* keep regions less than `value` *>* and *>=* keep regions greater than `value` *[]*, *()*, *[)*, and *(]* keep regions inside `value[0]` to `value[1]` *][*, *)(*, *](*, *)[* keep regions outside `value[0]` to value[1]` Open vs. closed intervals make no difference to constraint display, but all versions are allowed for consistency with filter transforms.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "=",
                    "<",
                    ">=",
                    ">",
                    "<=",
                    "[]",
                    "()",
                    "[)",
                    "(]",
                    "][",
                    ")(",
                    "](",
                    ")["
                  ],
                  "default": "="
                }
              ]
            },
            "showlabels": {
              "description": "Determines whether to label the contour lines with their values.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            },
            "showlines": {
              "description": "Determines whether or not the contour lines are drawn. Has an effect only if `contours.coloring` is set to *fill*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": true
                }
              ]
            },
            "size": {
              "description": "Sets the step between each contour level. Must be positive.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": null
                }
              ]
            },
            "start": {
              "description": "Sets the starting contour level value. Must be less than `contours.end`",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": null
                }
              ]
            },
            "type": {
              "description": "If `levels`, the data is represented as a contour plot with multiple levels displayed. If `constraint`, the data is represented as constraints with the invalid region shaded as specified by the `operation` and `value` parameters.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "levels",
                    "constraint"
                  ],
                  "default": "levels"
                }
              ]
            },
            "value": {
              "default": 0,
              "description": "Sets the value or values of the constraint boundary. When `operation` is set to one of the comparison values (=,<,>=,>,<=) *value* is expected to be a number. When `operation` is set to one of the interval values ([],(),[),(],][,)(,](,)[) *value* is expected to be an array of two numbers where the first is the lower bound and the second is the upper bound."
            }
          },
          "additionalProperties": false
        },
        "customdata": {
          "description": "Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "customdatasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `customdata`.",
          "type": "string"
        },
        "da": {
          "description": "Sets the x coordinate step. See `x0` for more info.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": 1
            }
          ]
        },
        "db": {
          "description": "Sets the y coordinate step. See `y0` for more info.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": 1
            }
          ]
        },
        "fillcolor": {
          "description": "Sets the fill color if `contours.type` is *constraint*. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "$ref": "#/$defs/color"
            }
          ]
        },
        "hovertext": {
          "description": "Same as `text`.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "hovertextsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.",
          "type": "string"
        },
        "ids": {
          "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "idssrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `ids`.",
          "type": "string"
        },
        "legend": {
          "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "legend",
              "pattern": "^legend([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "legendgroup": {
          "default": "",
          "description": "Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items.",
          "type": "string"
        },
        "legendgrouptitle": {
          "type": "object",
          "properties": {
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "family": {
                  "pattern": ".*\\S.*$",
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                "shadow": {
                  "default": "none",
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "text": {
              "default": "",
              "description": "Sets the title of the legend group.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "legendrank": {
          "description": "Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": 1000
            }
          ]
        },
        "legendwidth": {
          "description": "Sets the width (in px or fraction) of the legend for this trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0
            }
          ]
        },
        "line": {
          "type": "object",
          "properties": {
            "color": {
              "description": "Sets the color of the contour level. Has no effect if `contours.coloring` is set to *lines*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "dash": {
              "default": "solid",
              "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).",
              "type": "string"
            },
            "smoothing": {
              "description": "Sets the amount of smoothing for the contour lines, where *0* corresponds to no smoothing.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 1.3,
                  "default": 1
                }
              ]
            },
            "width": {
              "description": "Sets the contour line width in (in px) Defaults to *0.5* when `contours.type` is *levels*. Defaults to *2* when `contour.type` is *constraint*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "metasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `meta`.",
          "type": "string"
        },
        "name": {
          "description": "Sets the trace name. The trace name appears as the legend item and on hover.",
          "type": "string"
        },
        "ncontours": {
          "description": "Sets the maximum number of contour levels. The actual number of contours will be chosen automatically to be less than or equal to the value of `ncontours`. Has an effect only if `autocontour` is *true* or if `contours.size` is missing.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "integer",
              "minimum": 1,
              "default": 15
            }
          ]
        },
        "opacity": {
          "description": "Sets the opacity of the trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0,
              "maximum": 1,
              "default": 1
            }
          ]
        },
        "reversescale": {
          "description": "Reverses the color mapping if true. If true, `zmin` will correspond to the last color in the array and `zmax` will correspond to the first color.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": false
            }
          ]
        },
        "showlegend": {
          "description": "Determines whether or not an item corresponding to this trace is shown in the legend.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "showscale": {
          "description": "Determines whether or not a colorbar is displayed for this trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "stream": {
          "type": "object",
          "properties": {
            "maxpoints": {
              "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 10000,
                  "default": 500
                }
              ]
            },
            "token": {
              "pattern": ".*\\S.*$",
              "description": "The stream id number links a data trace on a plot with a stream. See <https://chart-studio.plotly.com/settings> for more details.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "text": {
          "description": "Sets the text elements associated with each z value.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "textsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `text`.",
          "type": "string"
        },
        "transpose": {
          "description": "Transposes the z data.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": false
            }
          ]
        },
        "uid": {
          "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.",
          "type": "string"
        },
        "uirevision": {
          "description": "Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves."
        },
        "visible": {
          "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                true,
                false,
                "legendonly"
              ],
              "default": true
            }
          ]
        },
        "xaxis": {
          "description": "Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "x",
              "pattern": "^x([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "yaxis": {
          "description": "Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "y",
              "pattern": "^y([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "z": {
          "description": "Sets the z data.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "zauto": {
          "description": "Determines whether or not the color domain is computed with respect to the input data (here in `z`) or the bounds set in `zmin` and `zmax` Defaults to `false` when `zmin` and `zmax` are set by the user.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "zmax": {
          "description": "Sets the upper bound of the color domain. Value should have the same units as in `z` and if set, `zmin` must be set as well.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": null
            }
          ]
        },
        "zmid": {
          "description": "Sets the mid-point of the color domain by scaling `zmin` and/or `zmax` to be equidistant to this point. Value should have the same units as in `z`. Has no effect when `zauto` is `false`.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": null
            }
          ]
        },
        "zmin": {
          "description": "Sets the lower bound of the color domain. Value should have the same units as in `z` and if set, `zmax` must be set as well.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": null
            }
          ]
        },
        "zorder": {
          "description": "Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "integer",
              "default": 0
            }
          ]
        },
        "zsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `z`.",
          "type": "string"
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false
    },
    "Densitymap": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "$id": "https://visivo.io/trace-properties/schema",
      "description": "A schema to validate plotly trace properties",
      "type": "object",
      "properties": {
        "type": {
          "const": "densitymap"
        },
        "autocolorscale": {
          "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "below": {
          "description": "Determines if the densitymap trace will be inserted before the layer with the specified ID. By default, densitymap traces are placed below the first layer of type symbol If set to '', the layer will be inserted above every existing layer.",
          "type": "string"
        },
        "coloraxis": {
          "description": "Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": null,
              "pattern": "/^coloraxis([2-9]|[1-9][0-9]+)?$/"
            }
          ]
        },
        "colorbar": {
          "type": "object",
          "properties": {
            "bgcolor": {
              "description": "Sets the color of padded area.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "bordercolor": {
              "description": "Sets the axis line color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "borderwidth": {
              "description": "Sets the width (in px) or the border enclosing this color bar.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "dtick": {
              "description": "Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L<f>*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M<n>* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48*"
            },
            "exponentformat": {
              "description": "Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "none",
                    "e",
                    "E",
                    "power",
                    "SI",
                    "B"
                  ],
                  "default": "B"
                }
              ]
            },
            "labelalias": {
              "default": false,
              "description": "Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax."
            },
            "len": {
              "description": "Sets the length of the color bar This measure excludes the padding of both ends. That is, the color bar length is this length minus the padding on both ends.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 1
                }
              ]
            },
            "lenmode": {
              "description": "Determines whether this color bar's length (i.e. the measure in the color variation direction) is set in units of plot *fraction* or in *pixels. Use `len` to set the value.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "fraction",
                    "pixels"
                  ],
                  "default": "fraction"
                }
              ]
            },
            "minexponent": {
              "description": "Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 3
                }
              ]
            },
            "nticks": {
              "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "orientation": {
              "description": "Sets the orientation of the colorbar.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "h",
                    "v"
                  ],
                  "default": "v"
                }
              ]
            },
            "outlinecolor": {
              "description": "Sets the axis line color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "outlinewidth": {
              "description": "Sets the width (in px) of the axis line.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 1
                }
              ]
            },
            "separatethousands": {
              "description": "If \"true\", even 4-digit integers are separated",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            },
            "showexponent": {
              "description": "If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "all",
                    "first",
                    "last",
                    "none"
                  ],
                  "default": "all"
                }
              ]
            },
            "showticklabels": {
              "description": "Determines whether or not the tick labels are drawn.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": true
                }
              ]
            },
            "showtickprefix": {
              "description": "If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "all",
                    "first",
                    "last",
                    "none"
                  ],
                  "default": "all"
                }
              ]
            },
            "showticksuffix": {
              "description": "Same as `showtickprefix` but for tick suffixes.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "all",
                    "first",
                    "last",
                    "none"
                  ],
                  "default": "all"
                }
              ]
            },
            "thickness": {
              "description": "Sets the thickness of the color bar This measure excludes the size of the padding, ticks and labels.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 30
                }
              ]
            },
            "thicknessmode": {
              "description": "Determines whether this color bar's thickness (i.e. the measure in the constant color direction) is set in units of plot *fraction* or in *pixels*. Use `thickness` to set the value.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "fraction",
                    "pixels"
                  ],
                  "default": "pixels"
                }
              ]
            },
            "tick0": {
              "description": "Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L<f>* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears."
            },
            "tickangle": {
              "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": -180,
                  "maximum": 180,
                  "default": "auto"
                }
              ]
            },
            "tickcolor": {
              "description": "Sets the tick color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "tickfont": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "family": {
                  "pattern": ".*\\S.*$",
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                "shadow": {
                  "default": "none",
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "tickformat": {
              "default": "",
              "description": "Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*",
              "type": "string"
            },
            "tickformatstops": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "dtickrange": {
                    "description": "range [*min*, *max*], where *min*, *max* - dtick values which describe some zoom level, it is possible to omit *min* or *max* value by passing *null*",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "array",
                        "items": {},
                        "minItems": 2,
                        "maxItems": 2
                      }
                    ]
                  },
                  "enabled": {
                    "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "boolean",
                        "default": true
                      }
                    ]
                  },
                  "name": {
                    "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.",
                    "type": "string"
                  },
                  "templateitemname": {
                    "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.",
                    "type": "string"
                  },
                  "value": {
                    "default": "",
                    "description": "string - dtickformat for described zoom level, the same as *tickformat*",
                    "type": "string"
                  }
                },
                "additionalProperties": false
              },
              "minItems": 1
            },
            "ticklabeloverflow": {
              "description": "Determines how we handle tick labels that would overflow either the graph div or the domain of the axis. The default value for inside tick labels is *hide past domain*. In other cases the default is *hide past div*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "allow",
                    "hide past div",
                    "hide past domain"
                  ]
                }
              ]
            },
            "ticklabelposition": {
              "description": "Determines where tick labels are drawn relative to the ticks. Left and right options are used when `orientation` is *h*, top and bottom when `orientation` is *v*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "outside",
                    "inside",
                    "outside top",
                    "inside top",
                    "outside left",
                    "inside left",
                    "outside right",
                    "inside right",
                    "outside bottom",
                    "inside bottom"
                  ],
                  "default": "outside"
                }
              ]
            },
            "ticklabelstep": {
              "description": "Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 1,
                  "default": 1
                }
              ]
            },
            "ticklen": {
              "description": "Sets the tick length (in px).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 5
                }
              ]
            },
            "tickmode": {
              "description": "Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "auto",
                    "linear",
                    "array"
                  ]
                }
              ]
            },
            "tickprefix": {
              "default": "",
              "description": "Sets a tick label prefix.",
              "type": "string"
            },
            "ticks": {
              "description": "Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "outside",
                    "inside",
                    ""
                  ],
                  "default": ""
                }
              ]
            },
            "ticksuffix": {
              "default": "",
              "description": "Sets a tick label suffix.",
              "type": "string"
            },
            "ticktext": {
              "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  }
                }
              ]
            },
            "ticktextsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.",
              "type": "string"
            },
            "tickvals": {
              "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  }
                }
              ]
            },
            "tickvalssrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.",
              "type": "string"
            },
            "tickwidth": {
              "description": "Sets the tick width (in px).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 1
                }
              ]
            },
            "title": {
              "type": "object",
              "properties": {
                "font": {
                  "type": "object",
                  "properties": {
                    "color": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    "family": {
                      "pattern": ".*\\S.*$",
                      "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                      "type": "string"
                    },
                    "lineposition": {
                      "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    "shadow": {
                      "default": "none",
                      "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                      "type": "string"
                    },
                    "size": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    "style": {
                      "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "textcase": {
                      "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "variant": {
                      "description": "Sets the variant of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "weight": {
                      "description": "Sets the weight (or boldness) of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    }
                  },
                  "additionalProperties": false
                },
                "side": {
                  "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and  defaults to *right* when `orientation` if *h*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "right",
                        "top",
                        "bottom"
                      ]
                    }
                  ]
                },
                "text": {
                  "description": "Sets the title of the color bar.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "x": {
              "description": "Sets the x position with respect to `xref` of the color bar (in plot fraction). When `xref` is *paper*, defaults to 1.02 when `orientation` is *v* and 0.5 when `orientation` is *h*. When `xref` is *container*, defaults to *1* when `orientation` is *v* and 0.5 when `orientation` is *h*. Must be between *0* and *1* if `xref` is *container* and between *-2* and *3* if `xref` is *paper*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number"
                }
              ]
            },
            "xanchor": {
              "description": "Sets this color bar's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the color bar. Defaults to *left* when `orientation` is *v* and *center* when `orientation` is *h*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "left",
                    "center",
                    "right"
                  ]
                }
              ]
            },
            "xpad": {
              "description": "Sets the amount of padding (in px) along the x direction.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 10
                }
              ]
            },
            "xref": {
              "description": "Sets the container `x` refers to. *container* spans the entire `width` of the plot. *paper* refers to the width of the plotting area only.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "container",
                    "paper"
                  ],
                  "default": "paper"
                }
              ]
            },
            "y": {
              "description": "Sets the y position with respect to `yref` of the color bar (in plot fraction). When `yref` is *paper*, defaults to 0.5 when `orientation` is *v* and 1.02 when `orientation` is *h*. When `yref` is *container*, defaults to 0.5 when `orientation` is *v* and 1 when `orientation` is *h*. Must be between *0* and *1* if `yref` is *container* and between *-2* and *3* if `yref` is *paper*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number"
                }
              ]
            },
            "yanchor": {
              "description": "Sets this color bar's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the color bar. Defaults to *middle* when `orientation` is *v* and *bottom* when `orientation` is *h*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "top",
                    "middle",
                    "bottom"
                  ]
                }
              ]
            },
            "ypad": {
              "description": "Sets the amount of padding (in px) along the y direction.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 10
                }
              ]
            },
            "yref": {
              "description": "Sets the container `y` refers to. *container* spans the entire `height` of the plot. *paper* refers to the height of the plotting area only.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "container",
                    "paper"
                  ],
                  "default": "paper"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "colorscale": {
          "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "$ref": "#/$defs/colorscale",
              "default": null
            }
          ]
        },
        "customdata": {
          "description": "Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "customdatasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `customdata`.",
          "type": "string"
        },
        "hoverinfo": {
          "description": "Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired.",
          "oneOf": [
            {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "oneOf": [
                    {
                      "type": "string",
                      "enum": [
                        "all",
                        "none",
                        "skip"
                      ]
                    },
                    {
                      "type": "string",
                      "pattern": "^(lon|lat|z|text|name)(\\+(lon|lat|z|text|name))*$"
                    }
                  ],
                  "default": "all"
                }
              ]
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "oneOf": [
                      {
                        "type": "string",
                        "enum": [
                          "all",
                          "none",
                          "skip"
                        ]
                      },
                      {
                        "type": "string",
                        "pattern": "^(lon|lat|z|text|name)(\\+(lon|lat|z|text|name))*$"
                      }
                    ],
                    "default": "all"
                  }
                ]
              }
            }
          ]
        },
        "hoverinfosrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.",
          "type": "string"
        },
        "hoverlabel": {
          "type": "object",
          "properties": {
            "align": {
              "description": "Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "left",
                        "right",
                        "auto"
                      ],
                      "default": "auto"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "left",
                          "right",
                          "auto"
                        ],
                        "default": "auto"
                      }
                    ]
                  }
                }
              ]
            },
            "alignsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `align`.",
              "type": "string"
            },
            "bgcolor": {
              "description": "Sets the background color of the hover labels for this trace",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "bgcolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.",
              "type": "string"
            },
            "bordercolor": {
              "description": "Sets the border color of the hover labels for this trace.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "bordercolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.",
              "type": "string"
            },
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "colorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `color`.",
                  "type": "string"
                },
                "family": {
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "oneOf": [
                    {
                      "pattern": ".*\\S.*$",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "pattern": ".*\\S.*$",
                        "type": "string"
                      }
                    },
                    {
                      "$ref": "#/$defs/query-string"
                    }
                  ]
                },
                "familysrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `family`.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "oneOf": [
                              {
                                "type": "string",
                                "enum": [
                                  "none"
                                ]
                              },
                              {
                                "type": "string",
                                "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                              }
                            ],
                            "default": "none"
                          }
                        ]
                      }
                    }
                  ]
                },
                "linepositionsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.",
                  "type": "string"
                },
                "shadow": {
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "oneOf": [
                    {
                      "default": "none",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "default": "none",
                        "type": "string"
                      }
                    }
                  ]
                },
                "shadowsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `shadow`.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 1
                          }
                        ]
                      }
                    }
                  ]
                },
                "sizesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `size`.",
                  "type": "string"
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "italic"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "stylesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `style`.",
                  "type": "string"
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "word caps",
                              "upper",
                              "lower"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "textcasesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `textcase`.",
                  "type": "string"
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "small-caps",
                              "all-small-caps",
                              "all-petite-caps",
                              "petite-caps",
                              "unicase"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "variantsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `variant`.",
                  "type": "string"
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 1000,
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "weightsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `weight`.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "namelength": {
              "description": "Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": -1,
                      "default": 15
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "integer",
                        "minimum": -1,
                        "default": 15
                      }
                    ]
                  }
                }
              ]
            },
            "namelengthsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `namelength`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "hovertemplate": {
          "description": "Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". <https://github.com/d3/d3-format/tree/v1.4.5#d3-format> for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format> for details on the date formatting syntax. The variables available in `hovertemplate` are the ones emitted as event data described at this link <https://plotly.com/javascript/plotlyjs-events/#event-data>. Additionally, every attributes that can be specified per-point (the ones that are `arrayOk: true`) are available.  Anything contained in tag `<extra>` is displayed in the secondary box, for example \"<extra>{fullData.name}</extra>\". To hide the secondary box completely, use an empty tag `<extra></extra>`.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "hovertemplatesrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.",
          "type": "string"
        },
        "hovertext": {
          "description": "Sets hover text elements associated with each (lon,lat) pair If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (lon,lat) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "hovertextsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.",
          "type": "string"
        },
        "ids": {
          "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "idssrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `ids`.",
          "type": "string"
        },
        "lat": {
          "description": "Sets the latitude coordinates (in degrees North).",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "latsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `lat`.",
          "type": "string"
        },
        "legend": {
          "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "legend",
              "pattern": "^legend([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "legendgroup": {
          "default": "",
          "description": "Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items.",
          "type": "string"
        },
        "legendgrouptitle": {
          "type": "object",
          "properties": {
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "family": {
                  "pattern": ".*\\S.*$",
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                "shadow": {
                  "default": "none",
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "text": {
              "default": "",
              "description": "Sets the title of the legend group.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "legendrank": {
          "description": "Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": 1000
            }
          ]
        },
        "legendwidth": {
          "description": "Sets the width (in px or fraction) of the legend for this trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0
            }
          ]
        },
        "lon": {
          "description": "Sets the longitude coordinates (in degrees East).",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "lonsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `lon`.",
          "type": "string"
        },
        "metasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `meta`.",
          "type": "string"
        },
        "name": {
          "description": "Sets the trace name. The trace name appears as the legend item and on hover.",
          "type": "string"
        },
        "opacity": {
          "description": "Sets the opacity of the trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0,
              "maximum": 1,
              "default": 1
            }
          ]
        },
        "radius": {
          "description": "Sets the radius of influence of one `lon` / `lat` point in pixels. Increasing the value makes the densitymap trace smoother, but less detailed.",
          "oneOf": [
            {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 1,
                  "default": 30
                }
              ]
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "number",
                    "minimum": 1,
                    "default": 30
                  }
                ]
              }
            }
          ]
        },
        "radiussrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `radius`.",
          "type": "string"
        },
        "reversescale": {
          "description": "Reverses the color mapping if true. If true, `zmin` will correspond to the last color in the array and `zmax` will correspond to the first color.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": false
            }
          ]
        },
        "showlegend": {
          "description": "Determines whether or not an item corresponding to this trace is shown in the legend.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": false
            }
          ]
        },
        "showscale": {
          "description": "Determines whether or not a colorbar is displayed for this trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "stream": {
          "type": "object",
          "properties": {
            "maxpoints": {
              "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 10000,
                  "default": 500
                }
              ]
            },
            "token": {
              "pattern": ".*\\S.*$",
              "description": "The stream id number links a data trace on a plot with a stream. See <https://chart-studio.plotly.com/settings> for more details.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "subplot": {
          "description": "Sets a reference between this trace's data coordinates and a map subplot. If *map* (the default value), the data refer to `layout.map`. If *map2*, the data refer to `layout.map2`, and so on.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "map",
              "pattern": "^map([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "text": {
          "description": "Sets text elements associated with each (lon,lat) pair If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (lon,lat) coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "textsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `text`.",
          "type": "string"
        },
        "uid": {
          "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.",
          "type": "string"
        },
        "uirevision": {
          "description": "Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves."
        },
        "visible": {
          "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                true,
                false,
                "legendonly"
              ],
              "default": true
            }
          ]
        },
        "z": {
          "description": "Sets the points' weight. For example, a value of 10 would be equivalent to having 10 points of weight 1 in the same spot",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "zauto": {
          "description": "Determines whether or not the color domain is computed with respect to the input data (here in `z`) or the bounds set in `zmin` and `zmax` Defaults to `false` when `zmin` and `zmax` are set by the user.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "zmax": {
          "description": "Sets the upper bound of the color domain. Value should have the same units as in `z` and if set, `zmin` must be set as well.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": null
            }
          ]
        },
        "zmid": {
          "description": "Sets the mid-point of the color domain by scaling `zmin` and/or `zmax` to be equidistant to this point. Value should have the same units as in `z`. Has no effect when `zauto` is `false`.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": null
            }
          ]
        },
        "zmin": {
          "description": "Sets the lower bound of the color domain. Value should have the same units as in `z` and if set, `zmax` must be set as well.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": null
            }
          ]
        },
        "zsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `z`.",
          "type": "string"
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false
    },
    "Densitymapbox": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "$id": "https://visivo.io/trace-properties/schema",
      "description": "A schema to validate plotly trace properties",
      "type": "object",
      "properties": {
        "type": {
          "const": "densitymapbox"
        },
        "autocolorscale": {
          "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "below": {
          "description": "Determines if the densitymapbox trace will be inserted before the layer with the specified ID. By default, densitymapbox traces are placed below the first layer of type symbol If set to '', the layer will be inserted above every existing layer.",
          "type": "string"
        },
        "coloraxis": {
          "description": "Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": null,
              "pattern": "/^coloraxis([2-9]|[1-9][0-9]+)?$/"
            }
          ]
        },
        "colorbar": {
          "type": "object",
          "properties": {
            "bgcolor": {
              "description": "Sets the color of padded area.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "bordercolor": {
              "description": "Sets the axis line color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "borderwidth": {
              "description": "Sets the width (in px) or the border enclosing this color bar.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "dtick": {
              "description": "Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L<f>*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M<n>* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48*"
            },
            "exponentformat": {
              "description": "Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "none",
                    "e",
                    "E",
                    "power",
                    "SI",
                    "B"
                  ],
                  "default": "B"
                }
              ]
            },
            "labelalias": {
              "default": false,
              "description": "Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax."
            },
            "len": {
              "description": "Sets the length of the color bar This measure excludes the padding of both ends. That is, the color bar length is this length minus the padding on both ends.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 1
                }
              ]
            },
            "lenmode": {
              "description": "Determines whether this color bar's length (i.e. the measure in the color variation direction) is set in units of plot *fraction* or in *pixels. Use `len` to set the value.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "fraction",
                    "pixels"
                  ],
                  "default": "fraction"
                }
              ]
            },
            "minexponent": {
              "description": "Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 3
                }
              ]
            },
            "nticks": {
              "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "orientation": {
              "description": "Sets the orientation of the colorbar.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "h",
                    "v"
                  ],
                  "default": "v"
                }
              ]
            },
            "outlinecolor": {
              "description": "Sets the axis line color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "outlinewidth": {
              "description": "Sets the width (in px) of the axis line.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 1
                }
              ]
            },
            "separatethousands": {
              "description": "If \"true\", even 4-digit integers are separated",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            },
            "showexponent": {
              "description": "If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "all",
                    "first",
                    "last",
                    "none"
                  ],
                  "default": "all"
                }
              ]
            },
            "showticklabels": {
              "description": "Determines whether or not the tick labels are drawn.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": true
                }
              ]
            },
            "showtickprefix": {
              "description": "If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "all",
                    "first",
                    "last",
                    "none"
                  ],
                  "default": "all"
                }
              ]
            },
            "showticksuffix": {
              "description": "Same as `showtickprefix` but for tick suffixes.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "all",
                    "first",
                    "last",
                    "none"
                  ],
                  "default": "all"
                }
              ]
            },
            "thickness": {
              "description": "Sets the thickness of the color bar This measure excludes the size of the padding, ticks and labels.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 30
                }
              ]
            },
            "thicknessmode": {
              "description": "Determines whether this color bar's thickness (i.e. the measure in the constant color direction) is set in units of plot *fraction* or in *pixels*. Use `thickness` to set the value.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "fraction",
                    "pixels"
                  ],
                  "default": "pixels"
                }
              ]
            },
            "tick0": {
              "description": "Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L<f>* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears."
            },
            "tickangle": {
              "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": -180,
                  "maximum": 180,
                  "default": "auto"
                }
              ]
            },
            "tickcolor": {
              "description": "Sets the tick color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "tickfont": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "family": {
                  "pattern": ".*\\S.*$",
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                "shadow": {
                  "default": "none",
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "tickformat": {
              "default": "",
              "description": "Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*",
              "type": "string"
            },
            "tickformatstops": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "dtickrange": {
                    "description": "range [*min*, *max*], where *min*, *max* - dtick values which describe some zoom level, it is possible to omit *min* or *max* value by passing *null*",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "array",
                        "items": {},
                        "minItems": 2,
                        "maxItems": 2
                      }
                    ]
                  },
                  "enabled": {
                    "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "boolean",
                        "default": true
                      }
                    ]
                  },
                  "name": {
                    "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.",
                    "type": "string"
                  },
                  "templateitemname": {
                    "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.",
                    "type": "string"
                  },
                  "value": {
                    "default": "",
                    "description": "string - dtickformat for described zoom level, the same as *tickformat*",
                    "type": "string"
                  }
                },
                "additionalProperties": false
              },
              "minItems": 1
            },
            "ticklabeloverflow": {
              "description": "Determines how we handle tick labels that would overflow either the graph div or the domain of the axis. The default value for inside tick labels is *hide past domain*. In other cases the default is *hide past div*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "allow",
                    "hide past div",
                    "hide past domain"
                  ]
                }
              ]
            },
            "ticklabelposition": {
              "description": "Determines where tick labels are drawn relative to the ticks. Left and right options are used when `orientation` is *h*, top and bottom when `orientation` is *v*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "outside",
                    "inside",
                    "outside top",
                    "inside top",
                    "outside left",
                    "inside left",
                    "outside right",
                    "inside right",
                    "outside bottom",
                    "inside bottom"
                  ],
                  "default": "outside"
                }
              ]
            },
            "ticklabelstep": {
              "description": "Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 1,
                  "default": 1
                }
              ]
            },
            "ticklen": {
              "description": "Sets the tick length (in px).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 5
                }
              ]
            },
            "tickmode": {
              "description": "Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "auto",
                    "linear",
                    "array"
                  ]
                }
              ]
            },
            "tickprefix": {
              "default": "",
              "description": "Sets a tick label prefix.",
              "type": "string"
            },
            "ticks": {
              "description": "Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "outside",
                    "inside",
                    ""
                  ],
                  "default": ""
                }
              ]
            },
            "ticksuffix": {
              "default": "",
              "description": "Sets a tick label suffix.",
              "type": "string"
            },
            "ticktext": {
              "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  }
                }
              ]
            },
            "ticktextsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.",
              "type": "string"
            },
            "tickvals": {
              "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  }
                }
              ]
            },
            "tickvalssrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.",
              "type": "string"
            },
            "tickwidth": {
              "description": "Sets the tick width (in px).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 1
                }
              ]
            },
            "title": {
              "type": "object",
              "properties": {
                "font": {
                  "type": "object",
                  "properties": {
                    "color": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    "family": {
                      "pattern": ".*\\S.*$",
                      "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                      "type": "string"
                    },
                    "lineposition": {
                      "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    "shadow": {
                      "default": "none",
                      "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                      "type": "string"
                    },
                    "size": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    "style": {
                      "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "textcase": {
                      "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "variant": {
                      "description": "Sets the variant of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "weight": {
                      "description": "Sets the weight (or boldness) of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    }
                  },
                  "additionalProperties": false
                },
                "side": {
                  "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and  defaults to *right* when `orientation` if *h*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "right",
                        "top",
                        "bottom"
                      ]
                    }
                  ]
                },
                "text": {
                  "description": "Sets the title of the color bar.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "x": {
              "description": "Sets the x position with respect to `xref` of the color bar (in plot fraction). When `xref` is *paper*, defaults to 1.02 when `orientation` is *v* and 0.5 when `orientation` is *h*. When `xref` is *container*, defaults to *1* when `orientation` is *v* and 0.5 when `orientation` is *h*. Must be between *0* and *1* if `xref` is *container* and between *-2* and *3* if `xref` is *paper*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number"
                }
              ]
            },
            "xanchor": {
              "description": "Sets this color bar's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the color bar. Defaults to *left* when `orientation` is *v* and *center* when `orientation` is *h*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "left",
                    "center",
                    "right"
                  ]
                }
              ]
            },
            "xpad": {
              "description": "Sets the amount of padding (in px) along the x direction.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 10
                }
              ]
            },
            "xref": {
              "description": "Sets the container `x` refers to. *container* spans the entire `width` of the plot. *paper* refers to the width of the plotting area only.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "container",
                    "paper"
                  ],
                  "default": "paper"
                }
              ]
            },
            "y": {
              "description": "Sets the y position with respect to `yref` of the color bar (in plot fraction). When `yref` is *paper*, defaults to 0.5 when `orientation` is *v* and 1.02 when `orientation` is *h*. When `yref` is *container*, defaults to 0.5 when `orientation` is *v* and 1 when `orientation` is *h*. Must be between *0* and *1* if `yref` is *container* and between *-2* and *3* if `yref` is *paper*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number"
                }
              ]
            },
            "yanchor": {
              "description": "Sets this color bar's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the color bar. Defaults to *middle* when `orientation` is *v* and *bottom* when `orientation` is *h*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "top",
                    "middle",
                    "bottom"
                  ]
                }
              ]
            },
            "ypad": {
              "description": "Sets the amount of padding (in px) along the y direction.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 10
                }
              ]
            },
            "yref": {
              "description": "Sets the container `y` refers to. *container* spans the entire `height` of the plot. *paper* refers to the height of the plotting area only.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "container",
                    "paper"
                  ],
                  "default": "paper"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "colorscale": {
          "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "$ref": "#/$defs/colorscale",
              "default": null
            }
          ]
        },
        "customdata": {
          "description": "Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "customdatasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `customdata`.",
          "type": "string"
        },
        "hoverinfo": {
          "description": "Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired.",
          "oneOf": [
            {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "oneOf": [
                    {
                      "type": "string",
                      "enum": [
                        "all",
                        "none",
                        "skip"
                      ]
                    },
                    {
                      "type": "string",
                      "pattern": "^(lon|lat|z|text|name)(\\+(lon|lat|z|text|name))*$"
                    }
                  ],
                  "default": "all"
                }
              ]
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "oneOf": [
                      {
                        "type": "string",
                        "enum": [
                          "all",
                          "none",
                          "skip"
                        ]
                      },
                      {
                        "type": "string",
                        "pattern": "^(lon|lat|z|text|name)(\\+(lon|lat|z|text|name))*$"
                      }
                    ],
                    "default": "all"
                  }
                ]
              }
            }
          ]
        },
        "hoverinfosrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.",
          "type": "string"
        },
        "hoverlabel": {
          "type": "object",
          "properties": {
            "align": {
              "description": "Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "left",
                        "right",
                        "auto"
                      ],
                      "default": "auto"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "left",
                          "right",
                          "auto"
                        ],
                        "default": "auto"
                      }
                    ]
                  }
                }
              ]
            },
            "alignsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `align`.",
              "type": "string"
            },
            "bgcolor": {
              "description": "Sets the background color of the hover labels for this trace",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "bgcolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.",
              "type": "string"
            },
            "bordercolor": {
              "description": "Sets the border color of the hover labels for this trace.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "bordercolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.",
              "type": "string"
            },
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "colorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `color`.",
                  "type": "string"
                },
                "family": {
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "oneOf": [
                    {
                      "pattern": ".*\\S.*$",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "pattern": ".*\\S.*$",
                        "type": "string"
                      }
                    },
                    {
                      "$ref": "#/$defs/query-string"
                    }
                  ]
                },
                "familysrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `family`.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "oneOf": [
                              {
                                "type": "string",
                                "enum": [
                                  "none"
                                ]
                              },
                              {
                                "type": "string",
                                "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                              }
                            ],
                            "default": "none"
                          }
                        ]
                      }
                    }
                  ]
                },
                "linepositionsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.",
                  "type": "string"
                },
                "shadow": {
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "oneOf": [
                    {
                      "default": "none",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "default": "none",
                        "type": "string"
                      }
                    }
                  ]
                },
                "shadowsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `shadow`.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 1
                          }
                        ]
                      }
                    }
                  ]
                },
                "sizesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `size`.",
                  "type": "string"
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "italic"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "stylesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `style`.",
                  "type": "string"
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "word caps",
                              "upper",
                              "lower"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "textcasesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `textcase`.",
                  "type": "string"
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "small-caps",
                              "all-small-caps",
                              "all-petite-caps",
                              "petite-caps",
                              "unicase"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "variantsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `variant`.",
                  "type": "string"
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 1000,
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "weightsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `weight`.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "namelength": {
              "description": "Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": -1,
                      "default": 15
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "integer",
                        "minimum": -1,
                        "default": 15
                      }
                    ]
                  }
                }
              ]
            },
            "namelengthsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `namelength`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "hovertemplate": {
          "description": "Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". <https://github.com/d3/d3-format/tree/v1.4.5#d3-format> for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format> for details on the date formatting syntax. The variables available in `hovertemplate` are the ones emitted as event data described at this link <https://plotly.com/javascript/plotlyjs-events/#event-data>. Additionally, every attributes that can be specified per-point (the ones that are `arrayOk: true`) are available.  Anything contained in tag `<extra>` is displayed in the secondary box, for example \"<extra>{fullData.name}</extra>\". To hide the secondary box completely, use an empty tag `<extra></extra>`.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "hovertemplatesrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.",
          "type": "string"
        },
        "hovertext": {
          "description": "Sets hover text elements associated with each (lon,lat) pair If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (lon,lat) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "hovertextsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.",
          "type": "string"
        },
        "ids": {
          "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "idssrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `ids`.",
          "type": "string"
        },
        "lat": {
          "description": "Sets the latitude coordinates (in degrees North).",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "latsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `lat`.",
          "type": "string"
        },
        "legend": {
          "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "legend",
              "pattern": "^legend([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "legendgroup": {
          "default": "",
          "description": "Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items.",
          "type": "string"
        },
        "legendgrouptitle": {
          "type": "object",
          "properties": {
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "family": {
                  "pattern": ".*\\S.*$",
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                "shadow": {
                  "default": "none",
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "text": {
              "default": "",
              "description": "Sets the title of the legend group.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "legendrank": {
          "description": "Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": 1000
            }
          ]
        },
        "legendwidth": {
          "description": "Sets the width (in px or fraction) of the legend for this trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0
            }
          ]
        },
        "lon": {
          "description": "Sets the longitude coordinates (in degrees East).",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "lonsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `lon`.",
          "type": "string"
        },
        "metasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `meta`.",
          "type": "string"
        },
        "name": {
          "description": "Sets the trace name. The trace name appears as the legend item and on hover.",
          "type": "string"
        },
        "opacity": {
          "description": "Sets the opacity of the trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0,
              "maximum": 1,
              "default": 1
            }
          ]
        },
        "radius": {
          "description": "Sets the radius of influence of one `lon` / `lat` point in pixels. Increasing the value makes the densitymapbox trace smoother, but less detailed.",
          "oneOf": [
            {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 1,
                  "default": 30
                }
              ]
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "number",
                    "minimum": 1,
                    "default": 30
                  }
                ]
              }
            }
          ]
        },
        "radiussrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `radius`.",
          "type": "string"
        },
        "reversescale": {
          "description": "Reverses the color mapping if true. If true, `zmin` will correspond to the last color in the array and `zmax` will correspond to the first color.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": false
            }
          ]
        },
        "showlegend": {
          "description": "Determines whether or not an item corresponding to this trace is shown in the legend.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": false
            }
          ]
        },
        "showscale": {
          "description": "Determines whether or not a colorbar is displayed for this trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "stream": {
          "type": "object",
          "properties": {
            "maxpoints": {
              "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 10000,
                  "default": 500
                }
              ]
            },
            "token": {
              "pattern": ".*\\S.*$",
              "description": "The stream id number links a data trace on a plot with a stream. See <https://chart-studio.plotly.com/settings> for more details.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "subplot": {
          "description": "mapbox subplots and traces are deprecated! Please consider switching to `map` subplots and traces. Learn more at: <https://plotly.com/python/maplibre-migration/> as well as <https://plotly.com/javascript/maplibre-migration/> Sets a reference between this trace's data coordinates and a mapbox subplot. If *mapbox* (the default value), the data refer to `layout.mapbox`. If *mapbox2*, the data refer to `layout.mapbox2`, and so on.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "mapbox",
              "pattern": "^mapbox([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "text": {
          "description": "Sets text elements associated with each (lon,lat) pair If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (lon,lat) coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "textsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `text`.",
          "type": "string"
        },
        "uid": {
          "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.",
          "type": "string"
        },
        "uirevision": {
          "description": "Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves."
        },
        "visible": {
          "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                true,
                false,
                "legendonly"
              ],
              "default": true
            }
          ]
        },
        "z": {
          "description": "Sets the points' weight. For example, a value of 10 would be equivalent to having 10 points of weight 1 in the same spot",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "zauto": {
          "description": "Determines whether or not the color domain is computed with respect to the input data (here in `z`) or the bounds set in `zmin` and `zmax` Defaults to `false` when `zmin` and `zmax` are set by the user.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "zmax": {
          "description": "Sets the upper bound of the color domain. Value should have the same units as in `z` and if set, `zmin` must be set as well.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": null
            }
          ]
        },
        "zmid": {
          "description": "Sets the mid-point of the color domain by scaling `zmin` and/or `zmax` to be equidistant to this point. Value should have the same units as in `z`. Has no effect when `zauto` is `false`.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": null
            }
          ]
        },
        "zmin": {
          "description": "Sets the lower bound of the color domain. Value should have the same units as in `z` and if set, `zmax` must be set as well.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": null
            }
          ]
        },
        "zsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `z`.",
          "type": "string"
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false
    },
    "Funnel": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "$id": "https://visivo.io/trace-properties/schema",
      "description": "A schema to validate plotly trace properties",
      "type": "object",
      "properties": {
        "type": {
          "const": "funnel"
        },
        "alignmentgroup": {
          "default": "",
          "description": "Set several traces linked to the same position axis or matching axes to the same alignmentgroup. This controls whether bars compute their positional range dependently or independently.",
          "type": "string"
        },
        "cliponaxis": {
          "description": "Determines whether the text nodes are clipped about the subplot axes. To show the text nodes above axis lines and tick labels, make sure to set `xaxis.layer` and `yaxis.layer` to *below traces*.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "connector": {
          "type": "object",
          "properties": {
            "fillcolor": {
              "description": "Sets the fill color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "line": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the line color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "dash": {
                  "default": "solid",
                  "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).",
                  "type": "string"
                },
                "width": {
                  "description": "Sets the line width (in px).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 0
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "visible": {
              "description": "Determines if connector regions and lines are drawn.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": true
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "constraintext": {
          "description": "Constrain the size of text inside or outside a bar to be no larger than the bar itself.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "inside",
                "outside",
                "both",
                "none"
              ],
              "default": "both"
            }
          ]
        },
        "customdata": {
          "description": "Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "customdatasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `customdata`.",
          "type": "string"
        },
        "dx": {
          "description": "Sets the x coordinate step. See `x0` for more info.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": 1
            }
          ]
        },
        "dy": {
          "description": "Sets the y coordinate step. See `y0` for more info.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": 1
            }
          ]
        },
        "hoverinfo": {
          "description": "Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired.",
          "oneOf": [
            {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "oneOf": [
                    {
                      "type": "string",
                      "enum": [
                        "all",
                        "none",
                        "skip"
                      ]
                    },
                    {
                      "type": "string",
                      "pattern": "^(name|x|y|text|percent initial|percent previous|percent total)(\\+(name|x|y|text|percent initial|percent previous|percent total))*$"
                    }
                  ],
                  "default": "all"
                }
              ]
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "oneOf": [
                      {
                        "type": "string",
                        "enum": [
                          "all",
                          "none",
                          "skip"
                        ]
                      },
                      {
                        "type": "string",
                        "pattern": "^(name|x|y|text|percent initial|percent previous|percent total)(\\+(name|x|y|text|percent initial|percent previous|percent total))*$"
                      }
                    ],
                    "default": "all"
                  }
                ]
              }
            }
          ]
        },
        "hoverinfosrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.",
          "type": "string"
        },
        "hoverlabel": {
          "type": "object",
          "properties": {
            "align": {
              "description": "Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "left",
                        "right",
                        "auto"
                      ],
                      "default": "auto"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "left",
                          "right",
                          "auto"
                        ],
                        "default": "auto"
                      }
                    ]
                  }
                }
              ]
            },
            "alignsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `align`.",
              "type": "string"
            },
            "bgcolor": {
              "description": "Sets the background color of the hover labels for this trace",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "bgcolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.",
              "type": "string"
            },
            "bordercolor": {
              "description": "Sets the border color of the hover labels for this trace.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "bordercolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.",
              "type": "string"
            },
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "colorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `color`.",
                  "type": "string"
                },
                "family": {
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "oneOf": [
                    {
                      "pattern": ".*\\S.*$",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "pattern": ".*\\S.*$",
                        "type": "string"
                      }
                    },
                    {
                      "$ref": "#/$defs/query-string"
                    }
                  ]
                },
                "familysrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `family`.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "oneOf": [
                              {
                                "type": "string",
                                "enum": [
                                  "none"
                                ]
                              },
                              {
                                "type": "string",
                                "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                              }
                            ],
                            "default": "none"
                          }
                        ]
                      }
                    }
                  ]
                },
                "linepositionsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.",
                  "type": "string"
                },
                "shadow": {
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "oneOf": [
                    {
                      "default": "none",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "default": "none",
                        "type": "string"
                      }
                    }
                  ]
                },
                "shadowsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `shadow`.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 1
                          }
                        ]
                      }
                    }
                  ]
                },
                "sizesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `size`.",
                  "type": "string"
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "italic"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "stylesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `style`.",
                  "type": "string"
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "word caps",
                              "upper",
                              "lower"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "textcasesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `textcase`.",
                  "type": "string"
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "small-caps",
                              "all-small-caps",
                              "all-petite-caps",
                              "petite-caps",
                              "unicase"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "variantsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `variant`.",
                  "type": "string"
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 1000,
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "weightsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `weight`.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "namelength": {
              "description": "Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": -1,
                      "default": 15
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "integer",
                        "minimum": -1,
                        "default": 15
                      }
                    ]
                  }
                }
              ]
            },
            "namelengthsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `namelength`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "hovertemplate": {
          "description": "Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". <https://github.com/d3/d3-format/tree/v1.4.5#d3-format> for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format> for details on the date formatting syntax. The variables available in `hovertemplate` are the ones emitted as event data described at this link <https://plotly.com/javascript/plotlyjs-events/#event-data>. Additionally, every attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `percentInitial`, `percentPrevious` and `percentTotal`. Anything contained in tag `<extra>` is displayed in the secondary box, for example \"<extra>{fullData.name}</extra>\". To hide the secondary box completely, use an empty tag `<extra></extra>`.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "hovertemplatesrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.",
          "type": "string"
        },
        "hovertext": {
          "description": "Sets hover text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "hovertextsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.",
          "type": "string"
        },
        "ids": {
          "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "idssrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `ids`.",
          "type": "string"
        },
        "insidetextanchor": {
          "description": "Determines if texts are kept at center or start/end points in `textposition` *inside* mode.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "end",
                "middle",
                "start"
              ],
              "default": "middle"
            }
          ]
        },
        "insidetextfont": {
          "type": "object",
          "properties": {
            "color": {
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "colorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `color`.",
              "type": "string"
            },
            "family": {
              "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
              "oneOf": [
                {
                  "pattern": ".*\\S.*$",
                  "type": "string"
                },
                {
                  "type": "array",
                  "items": {
                    "pattern": ".*\\S.*$",
                    "type": "string"
                  }
                },
                {
                  "$ref": "#/$defs/query-string"
                }
              ]
            },
            "familysrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `family`.",
              "type": "string"
            },
            "lineposition": {
              "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "oneOf": [
                          {
                            "type": "string",
                            "enum": [
                              "none"
                            ]
                          },
                          {
                            "type": "string",
                            "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                          }
                        ],
                        "default": "none"
                      }
                    ]
                  }
                }
              ]
            },
            "linepositionsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.",
              "type": "string"
            },
            "shadow": {
              "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
              "oneOf": [
                {
                  "default": "none",
                  "type": "string"
                },
                {
                  "type": "array",
                  "items": {
                    "default": "none",
                    "type": "string"
                  }
                }
              ]
            },
            "shadowsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `shadow`.",
              "type": "string"
            },
            "size": {
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 1
                      }
                    ]
                  }
                }
              ]
            },
            "sizesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `size`.",
              "type": "string"
            },
            "style": {
              "description": "Sets whether a font should be styled with a normal or italic face from its family.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "italic"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "stylesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `style`.",
              "type": "string"
            },
            "textcase": {
              "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "word caps",
                          "upper",
                          "lower"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "textcasesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `textcase`.",
              "type": "string"
            },
            "variant": {
              "description": "Sets the variant of the font.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "small-caps",
                          "all-small-caps",
                          "all-petite-caps",
                          "petite-caps",
                          "unicase"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "variantsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `variant`.",
              "type": "string"
            },
            "weight": {
              "description": "Sets the weight (or boldness) of the font.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 1000,
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "weightsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `weight`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "legend": {
          "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "legend",
              "pattern": "^legend([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "legendgroup": {
          "default": "",
          "description": "Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items.",
          "type": "string"
        },
        "legendgrouptitle": {
          "type": "object",
          "properties": {
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "family": {
                  "pattern": ".*\\S.*$",
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                "shadow": {
                  "default": "none",
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "text": {
              "default": "",
              "description": "Sets the title of the legend group.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "legendrank": {
          "description": "Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": 1000
            }
          ]
        },
        "legendwidth": {
          "description": "Sets the width (in px or fraction) of the legend for this trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0
            }
          ]
        },
        "marker": {
          "type": "object",
          "properties": {
            "autocolorscale": {
              "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": true
                }
              ]
            },
            "cauto": {
              "description": "Determines whether or not the color domain is computed with respect to the input data (here in `marker.color`) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if in `marker.color` is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": true
                }
              ]
            },
            "cmax": {
              "description": "Sets the upper bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmin` must be set as well.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": null
                }
              ]
            },
            "cmid": {
              "description": "Sets the mid-point of the color domain by scaling `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color`. Has no effect when `marker.cauto` is `false`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": null
                }
              ]
            },
            "cmin": {
              "description": "Sets the lower bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmax` must be set as well.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": null
                }
              ]
            },
            "color": {
              "description": "Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.cmin` and `marker.cmax` if set.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "coloraxis": {
              "description": "Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "string",
                  "default": null,
                  "pattern": "/^coloraxis([2-9]|[1-9][0-9]+)?$/"
                }
              ]
            },
            "colorbar": {
              "type": "object",
              "properties": {
                "bgcolor": {
                  "description": "Sets the color of padded area.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "bordercolor": {
                  "description": "Sets the axis line color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "borderwidth": {
                  "description": "Sets the width (in px) or the border enclosing this color bar.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 0
                    }
                  ]
                },
                "dtick": {
                  "description": "Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L<f>*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M<n>* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48*"
                },
                "exponentformat": {
                  "description": "Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "none",
                        "e",
                        "E",
                        "power",
                        "SI",
                        "B"
                      ],
                      "default": "B"
                    }
                  ]
                },
                "labelalias": {
                  "default": false,
                  "description": "Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax."
                },
                "len": {
                  "description": "Sets the length of the color bar This measure excludes the padding of both ends. That is, the color bar length is this length minus the padding on both ends.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "lenmode": {
                  "description": "Determines whether this color bar's length (i.e. the measure in the color variation direction) is set in units of plot *fraction* or in *pixels. Use `len` to set the value.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "fraction",
                        "pixels"
                      ],
                      "default": "fraction"
                    }
                  ]
                },
                "minexponent": {
                  "description": "Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 3
                    }
                  ]
                },
                "nticks": {
                  "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 0,
                      "default": 0
                    }
                  ]
                },
                "orientation": {
                  "description": "Sets the orientation of the colorbar.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "h",
                        "v"
                      ],
                      "default": "v"
                    }
                  ]
                },
                "outlinecolor": {
                  "description": "Sets the axis line color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "outlinewidth": {
                  "description": "Sets the width (in px) of the axis line.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "separatethousands": {
                  "description": "If \"true\", even 4-digit integers are separated",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": false
                    }
                  ]
                },
                "showexponent": {
                  "description": "If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "showticklabels": {
                  "description": "Determines whether or not the tick labels are drawn.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                },
                "showtickprefix": {
                  "description": "If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "showticksuffix": {
                  "description": "Same as `showtickprefix` but for tick suffixes.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "thickness": {
                  "description": "Sets the thickness of the color bar This measure excludes the size of the padding, ticks and labels.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 30
                    }
                  ]
                },
                "thicknessmode": {
                  "description": "Determines whether this color bar's thickness (i.e. the measure in the constant color direction) is set in units of plot *fraction* or in *pixels*. Use `thickness` to set the value.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "fraction",
                        "pixels"
                      ],
                      "default": "pixels"
                    }
                  ]
                },
                "tick0": {
                  "description": "Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L<f>* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears."
                },
                "tickangle": {
                  "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": -180,
                      "maximum": 180,
                      "default": "auto"
                    }
                  ]
                },
                "tickcolor": {
                  "description": "Sets the tick color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "tickfont": {
                  "type": "object",
                  "properties": {
                    "color": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    "family": {
                      "pattern": ".*\\S.*$",
                      "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                      "type": "string"
                    },
                    "lineposition": {
                      "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    "shadow": {
                      "default": "none",
                      "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                      "type": "string"
                    },
                    "size": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    "style": {
                      "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "textcase": {
                      "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "variant": {
                      "description": "Sets the variant of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "weight": {
                      "description": "Sets the weight (or boldness) of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    }
                  },
                  "additionalProperties": false
                },
                "tickformat": {
                  "default": "",
                  "description": "Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*",
                  "type": "string"
                },
                "tickformatstops": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "dtickrange": {
                        "description": "range [*min*, *max*], where *min*, *max* - dtick values which describe some zoom level, it is possible to omit *min* or *max* value by passing *null*",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "array",
                            "items": {},
                            "minItems": 2,
                            "maxItems": 2
                          }
                        ]
                      },
                      "enabled": {
                        "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "boolean",
                            "default": true
                          }
                        ]
                      },
                      "name": {
                        "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.",
                        "type": "string"
                      },
                      "templateitemname": {
                        "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.",
                        "type": "string"
                      },
                      "value": {
                        "default": "",
                        "description": "string - dtickformat for described zoom level, the same as *tickformat*",
                        "type": "string"
                      }
                    },
                    "additionalProperties": false
                  },
                  "minItems": 1
                },
                "ticklabeloverflow": {
                  "description": "Determines how we handle tick labels that would overflow either the graph div or the domain of the axis. The default value for inside tick labels is *hide past domain*. In other cases the default is *hide past div*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "allow",
                        "hide past div",
                        "hide past domain"
                      ]
                    }
                  ]
                },
                "ticklabelposition": {
                  "description": "Determines where tick labels are drawn relative to the ticks. Left and right options are used when `orientation` is *h*, top and bottom when `orientation` is *v*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "outside",
                        "inside",
                        "outside top",
                        "inside top",
                        "outside left",
                        "inside left",
                        "outside right",
                        "inside right",
                        "outside bottom",
                        "inside bottom"
                      ],
                      "default": "outside"
                    }
                  ]
                },
                "ticklabelstep": {
                  "description": "Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "default": 1
                    }
                  ]
                },
                "ticklen": {
                  "description": "Sets the tick length (in px).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 5
                    }
                  ]
                },
                "tickmode": {
                  "description": "Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "auto",
                        "linear",
                        "array"
                      ]
                    }
                  ]
                },
                "tickprefix": {
                  "default": "",
                  "description": "Sets a tick label prefix.",
                  "type": "string"
                },
                "ticks": {
                  "description": "Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "outside",
                        "inside",
                        ""
                      ],
                      "default": ""
                    }
                  ]
                },
                "ticksuffix": {
                  "default": "",
                  "description": "Sets a tick label suffix.",
                  "type": "string"
                },
                "ticktext": {
                  "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "string"
                          }
                        ]
                      }
                    }
                  ]
                },
                "ticktextsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.",
                  "type": "string"
                },
                "tickvals": {
                  "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "string"
                          }
                        ]
                      }
                    }
                  ]
                },
                "tickvalssrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.",
                  "type": "string"
                },
                "tickwidth": {
                  "description": "Sets the tick width (in px).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "title": {
                  "type": "object",
                  "properties": {
                    "font": {
                      "type": "object",
                      "properties": {
                        "color": {
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "$ref": "#/$defs/color"
                            }
                          ]
                        },
                        "family": {
                          "pattern": ".*\\S.*$",
                          "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                          "type": "string"
                        },
                        "lineposition": {
                          "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "oneOf": [
                                {
                                  "type": "string",
                                  "enum": [
                                    "none"
                                  ]
                                },
                                {
                                  "type": "string",
                                  "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                                }
                              ],
                              "default": "none"
                            }
                          ]
                        },
                        "shadow": {
                          "default": "none",
                          "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                          "type": "string"
                        },
                        "size": {
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "type": "number",
                              "minimum": 1
                            }
                          ]
                        },
                        "style": {
                          "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "italic"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "textcase": {
                          "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "word caps",
                                "upper",
                                "lower"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "variant": {
                          "description": "Sets the variant of the font.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "small-caps",
                                "all-small-caps",
                                "all-petite-caps",
                                "petite-caps",
                                "unicase"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "weight": {
                          "description": "Sets the weight (or boldness) of the font.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "type": "integer",
                              "minimum": 1,
                              "maximum": 1000,
                              "default": "normal"
                            }
                          ]
                        }
                      },
                      "additionalProperties": false
                    },
                    "side": {
                      "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and  defaults to *right* when `orientation` if *h*.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "right",
                            "top",
                            "bottom"
                          ]
                        }
                      ]
                    },
                    "text": {
                      "description": "Sets the title of the color bar.",
                      "type": "string"
                    }
                  },
                  "additionalProperties": false
                },
                "x": {
                  "description": "Sets the x position with respect to `xref` of the color bar (in plot fraction). When `xref` is *paper*, defaults to 1.02 when `orientation` is *v* and 0.5 when `orientation` is *h*. When `xref` is *container*, defaults to *1* when `orientation` is *v* and 0.5 when `orientation` is *h*. Must be between *0* and *1* if `xref` is *container* and between *-2* and *3* if `xref` is *paper*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number"
                    }
                  ]
                },
                "xanchor": {
                  "description": "Sets this color bar's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the color bar. Defaults to *left* when `orientation` is *v* and *center* when `orientation` is *h*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "left",
                        "center",
                        "right"
                      ]
                    }
                  ]
                },
                "xpad": {
                  "description": "Sets the amount of padding (in px) along the x direction.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 10
                    }
                  ]
                },
                "xref": {
                  "description": "Sets the container `x` refers to. *container* spans the entire `width` of the plot. *paper* refers to the width of the plotting area only.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "container",
                        "paper"
                      ],
                      "default": "paper"
                    }
                  ]
                },
                "y": {
                  "description": "Sets the y position with respect to `yref` of the color bar (in plot fraction). When `yref` is *paper*, defaults to 0.5 when `orientation` is *v* and 1.02 when `orientation` is *h*. When `yref` is *container*, defaults to 0.5 when `orientation` is *v* and 1 when `orientation` is *h*. Must be between *0* and *1* if `yref` is *container* and between *-2* and *3* if `yref` is *paper*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number"
                    }
                  ]
                },
                "yanchor": {
                  "description": "Sets this color bar's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the color bar. Defaults to *middle* when `orientation` is *v* and *bottom* when `orientation` is *h*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "top",
                        "middle",
                        "bottom"
                      ]
                    }
                  ]
                },
                "ypad": {
                  "description": "Sets the amount of padding (in px) along the y direction.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 10
                    }
                  ]
                },
                "yref": {
                  "description": "Sets the container `y` refers to. *container* spans the entire `height` of the plot. *paper* refers to the height of the plotting area only.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "container",
                        "paper"
                      ],
                      "default": "paper"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "colorscale": {
              "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/colorscale",
                  "default": null
                }
              ]
            },
            "colorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `color`.",
              "type": "string"
            },
            "line": {
              "type": "object",
              "properties": {
                "autocolorscale": {
                  "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.line.colorscale`. Has an effect only if in `marker.line.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                },
                "cauto": {
                  "description": "Determines whether or not the color domain is computed with respect to the input data (here in `marker.line.color`) or the bounds set in `marker.line.cmin` and `marker.line.cmax` Has an effect only if in `marker.line.color` is set to a numerical array. Defaults to `false` when `marker.line.cmin` and `marker.line.cmax` are set by the user.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                },
                "cmax": {
                  "description": "Sets the upper bound of the color domain. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color` and if set, `marker.line.cmin` must be set as well.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "default": null
                    }
                  ]
                },
                "cmid": {
                  "description": "Sets the mid-point of the color domain by scaling `marker.line.cmin` and/or `marker.line.cmax` to be equidistant to this point. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color`. Has no effect when `marker.line.cauto` is `false`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "default": null
                    }
                  ]
                },
                "cmin": {
                  "description": "Sets the lower bound of the color domain. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color` and if set, `marker.line.cmax` must be set as well.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "default": null
                    }
                  ]
                },
                "color": {
                  "description": "Sets the marker.line color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.line.cmin` and `marker.line.cmax` if set.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "coloraxis": {
                  "description": "Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "string",
                      "default": null,
                      "pattern": "/^coloraxis([2-9]|[1-9][0-9]+)?$/"
                    }
                  ]
                },
                "colorscale": {
                  "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/colorscale",
                      "default": null
                    }
                  ]
                },
                "colorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `color`.",
                  "type": "string"
                },
                "reversescale": {
                  "description": "Reverses the color mapping if true. Has an effect only if in `marker.line.color` is set to a numerical array. If true, `marker.line.cmin` will correspond to the last color in the array and `marker.line.cmax` will correspond to the first color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": false
                    }
                  ]
                },
                "width": {
                  "description": "Sets the width (in px) of the lines bounding the marker points.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 0,
                          "default": 0
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 0,
                            "default": 0
                          }
                        ]
                      }
                    }
                  ]
                },
                "widthsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `width`.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "opacity": {
              "description": "Sets the opacity of the bars.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1,
                      "default": 1
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 1,
                        "default": 1
                      }
                    ]
                  }
                }
              ]
            },
            "opacitysrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `opacity`.",
              "type": "string"
            },
            "reversescale": {
              "description": "Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            },
            "showscale": {
              "description": "Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "metasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `meta`.",
          "type": "string"
        },
        "name": {
          "description": "Sets the trace name. The trace name appears as the legend item and on hover.",
          "type": "string"
        },
        "offset": {
          "description": "Shifts the position where the bar is drawn (in position axis units). In *group* barmode, traces that set *offset* will be excluded and drawn in *overlay* mode instead.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": null
            }
          ]
        },
        "offsetgroup": {
          "default": "",
          "description": "Set several traces linked to the same position axis or matching axes to the same offsetgroup where bars of the same position coordinate will line up.",
          "type": "string"
        },
        "opacity": {
          "description": "Sets the opacity of the trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0,
              "maximum": 1,
              "default": 1
            }
          ]
        },
        "orientation": {
          "description": "Sets the orientation of the funnels. With *v* (*h*), the value of the each bar spans along the vertical (horizontal). By default funnels are tend to be oriented horizontally; unless only *y* array is presented or orientation is set to *v*. Also regarding graphs including only 'horizontal' funnels, *autorange* on the *y-axis* are set to *reversed*.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "v",
                "h"
              ]
            }
          ]
        },
        "outsidetextfont": {
          "type": "object",
          "properties": {
            "color": {
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "colorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `color`.",
              "type": "string"
            },
            "family": {
              "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
              "oneOf": [
                {
                  "pattern": ".*\\S.*$",
                  "type": "string"
                },
                {
                  "type": "array",
                  "items": {
                    "pattern": ".*\\S.*$",
                    "type": "string"
                  }
                },
                {
                  "$ref": "#/$defs/query-string"
                }
              ]
            },
            "familysrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `family`.",
              "type": "string"
            },
            "lineposition": {
              "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "oneOf": [
                          {
                            "type": "string",
                            "enum": [
                              "none"
                            ]
                          },
                          {
                            "type": "string",
                            "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                          }
                        ],
                        "default": "none"
                      }
                    ]
                  }
                }
              ]
            },
            "linepositionsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.",
              "type": "string"
            },
            "shadow": {
              "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
              "oneOf": [
                {
                  "default": "none",
                  "type": "string"
                },
                {
                  "type": "array",
                  "items": {
                    "default": "none",
                    "type": "string"
                  }
                }
              ]
            },
            "shadowsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `shadow`.",
              "type": "string"
            },
            "size": {
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 1
                      }
                    ]
                  }
                }
              ]
            },
            "sizesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `size`.",
              "type": "string"
            },
            "style": {
              "description": "Sets whether a font should be styled with a normal or italic face from its family.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "italic"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "stylesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `style`.",
              "type": "string"
            },
            "textcase": {
              "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "word caps",
                          "upper",
                          "lower"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "textcasesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `textcase`.",
              "type": "string"
            },
            "variant": {
              "description": "Sets the variant of the font.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "small-caps",
                          "all-small-caps",
                          "all-petite-caps",
                          "petite-caps",
                          "unicase"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "variantsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `variant`.",
              "type": "string"
            },
            "weight": {
              "description": "Sets the weight (or boldness) of the font.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 1000,
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "weightsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `weight`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "selectedpoints": {
          "description": "Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect."
        },
        "showlegend": {
          "description": "Determines whether or not an item corresponding to this trace is shown in the legend.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "stream": {
          "type": "object",
          "properties": {
            "maxpoints": {
              "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 10000,
                  "default": 500
                }
              ]
            },
            "token": {
              "pattern": ".*\\S.*$",
              "description": "The stream id number links a data trace on a plot with a stream. See <https://chart-studio.plotly.com/settings> for more details.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "text": {
          "description": "Sets text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "textangle": {
          "description": "Sets the angle of the tick labels with respect to the bar. For example, a `tickangle` of -90 draws the tick labels vertically. With *auto* the texts may automatically be rotated to fit with the maximum size in bars.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": -180,
              "maximum": 180,
              "default": 0
            }
          ]
        },
        "textfont": {
          "type": "object",
          "properties": {
            "color": {
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "colorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `color`.",
              "type": "string"
            },
            "family": {
              "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
              "oneOf": [
                {
                  "pattern": ".*\\S.*$",
                  "type": "string"
                },
                {
                  "type": "array",
                  "items": {
                    "pattern": ".*\\S.*$",
                    "type": "string"
                  }
                },
                {
                  "$ref": "#/$defs/query-string"
                }
              ]
            },
            "familysrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `family`.",
              "type": "string"
            },
            "lineposition": {
              "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "oneOf": [
                          {
                            "type": "string",
                            "enum": [
                              "none"
                            ]
                          },
                          {
                            "type": "string",
                            "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                          }
                        ],
                        "default": "none"
                      }
                    ]
                  }
                }
              ]
            },
            "linepositionsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.",
              "type": "string"
            },
            "shadow": {
              "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
              "oneOf": [
                {
                  "default": "none",
                  "type": "string"
                },
                {
                  "type": "array",
                  "items": {
                    "default": "none",
                    "type": "string"
                  }
                }
              ]
            },
            "shadowsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `shadow`.",
              "type": "string"
            },
            "size": {
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 1
                      }
                    ]
                  }
                }
              ]
            },
            "sizesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `size`.",
              "type": "string"
            },
            "style": {
              "description": "Sets whether a font should be styled with a normal or italic face from its family.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "italic"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "stylesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `style`.",
              "type": "string"
            },
            "textcase": {
              "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "word caps",
                          "upper",
                          "lower"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "textcasesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `textcase`.",
              "type": "string"
            },
            "variant": {
              "description": "Sets the variant of the font.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "small-caps",
                          "all-small-caps",
                          "all-petite-caps",
                          "petite-caps",
                          "unicase"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "variantsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `variant`.",
              "type": "string"
            },
            "weight": {
              "description": "Sets the weight (or boldness) of the font.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 1000,
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "weightsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `weight`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "textinfo": {
          "description": "Determines which trace information appear on the graph. In the case of having multiple funnels, percentages & totals are computed separately (per trace).",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "oneOf": [
                {
                  "type": "string",
                  "enum": [
                    "none"
                  ]
                },
                {
                  "type": "string",
                  "pattern": "^(label|text|percent initial|percent previous|percent total|value)(\\+(label|text|percent initial|percent previous|percent total|value))*$"
                }
              ]
            }
          ]
        },
        "textposition": {
          "description": "Specifies the location of the `text`. *inside* positions `text` inside, next to the bar end (rotated and scaled if needed). *outside* positions `text` outside, next to the bar end (scaled if needed), unless there is another bar stacked on this one, then the text gets pushed inside. *auto* tries to position `text` inside the bar, but if the bar is too small and no bar is stacked on this one the text is moved outside. If *none*, no text appears.",
          "oneOf": [
            {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "inside",
                    "outside",
                    "auto",
                    "none"
                  ],
                  "default": "auto"
                }
              ]
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "enum": [
                      "inside",
                      "outside",
                      "auto",
                      "none"
                    ],
                    "default": "auto"
                  }
                ]
              }
            }
          ]
        },
        "textpositionsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `textposition`.",
          "type": "string"
        },
        "textsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `text`.",
          "type": "string"
        },
        "texttemplate": {
          "description": "Template string used for rendering the information text that appear on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". <https://github.com/d3/d3-format/tree/v1.4.5#d3-format> for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format> for details on the date formatting syntax. Every attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `percentInitial`, `percentPrevious`, `percentTotal`, `label` and `value`.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "texttemplatesrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.",
          "type": "string"
        },
        "uid": {
          "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.",
          "type": "string"
        },
        "uirevision": {
          "description": "Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves."
        },
        "visible": {
          "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                true,
                false,
                "legendonly"
              ],
              "default": true
            }
          ]
        },
        "width": {
          "description": "Sets the bar width (in position axis units).",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0,
              "default": null
            }
          ]
        },
        "x": {
          "description": "Sets the x coordinates.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "x0": {
          "default": 0,
          "description": "Alternate to `x`. Builds a linear space of x coordinates. Use with `dx` where `x0` is the starting coordinate and `dx` the step."
        },
        "xaxis": {
          "description": "Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "x",
              "pattern": "^x([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "xhoverformat": {
          "default": "",
          "description": "Sets the hover text formatting rulefor `x`  using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.",
          "type": "string"
        },
        "xperiod": {
          "default": 0,
          "description": "Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M<n>* on the x axis. Special values in the form of *M<n>* could be used to declare the number of months. In this case `n` must be a positive integer."
        },
        "xperiod0": {
          "description": "Only relevant when the axis `type` is *date*. Sets the base for period positioning in milliseconds or date string on the x0 axis. When `x0period` is round number of weeks, the `x0period0` by default would be on a Sunday i.e. 2000-01-02, otherwise it would be at 2000-01-01."
        },
        "xperiodalignment": {
          "description": "Only relevant when the axis `type` is *date*. Sets the alignment of data points on the x axis.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "start",
                "middle",
                "end"
              ],
              "default": "middle"
            }
          ]
        },
        "xsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `x`.",
          "type": "string"
        },
        "y": {
          "description": "Sets the y coordinates.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "y0": {
          "default": 0,
          "description": "Alternate to `y`. Builds a linear space of y coordinates. Use with `dy` where `y0` is the starting coordinate and `dy` the step."
        },
        "yaxis": {
          "description": "Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "y",
              "pattern": "^y([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "yhoverformat": {
          "default": "",
          "description": "Sets the hover text formatting rulefor `y`  using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.",
          "type": "string"
        },
        "yperiod": {
          "default": 0,
          "description": "Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M<n>* on the y axis. Special values in the form of *M<n>* could be used to declare the number of months. In this case `n` must be a positive integer."
        },
        "yperiod0": {
          "description": "Only relevant when the axis `type` is *date*. Sets the base for period positioning in milliseconds or date string on the y0 axis. When `y0period` is round number of weeks, the `y0period0` by default would be on a Sunday i.e. 2000-01-02, otherwise it would be at 2000-01-01."
        },
        "yperiodalignment": {
          "description": "Only relevant when the axis `type` is *date*. Sets the alignment of data points on the y axis.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "start",
                "middle",
                "end"
              ],
              "default": "middle"
            }
          ]
        },
        "ysrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `y`.",
          "type": "string"
        },
        "zorder": {
          "description": "Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "integer",
              "default": 0
            }
          ]
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false
    },
    "Funnelarea": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "$id": "https://visivo.io/trace-properties/schema",
      "description": "A schema to validate plotly trace properties",
      "type": "object",
      "properties": {
        "type": {
          "const": "funnelarea"
        },
        "aspectratio": {
          "description": "Sets the ratio between height and width",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0,
              "default": 1
            }
          ]
        },
        "baseratio": {
          "description": "Sets the ratio between bottom length and maximum top length.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0,
              "maximum": 1,
              "default": 0.333
            }
          ]
        },
        "customdata": {
          "description": "Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "customdatasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `customdata`.",
          "type": "string"
        },
        "dlabel": {
          "description": "Sets the label step. See `label0` for more info.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": 1
            }
          ]
        },
        "domain": {
          "type": "object",
          "properties": {
            "column": {
              "description": "If there is a layout grid, use the domain for this column in the grid for this funnelarea trace .",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "row": {
              "description": "If there is a layout grid, use the domain for this row in the grid for this funnelarea trace .",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "x": {
              "description": "Sets the horizontal domain of this funnelarea trace (in plot fraction).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 1
                      }
                    ]
                  },
                  "minItems": 2,
                  "maxItems": 2,
                  "default": [
                    0,
                    1
                  ]
                }
              ]
            },
            "y": {
              "description": "Sets the vertical domain of this funnelarea trace (in plot fraction).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 1
                      }
                    ]
                  },
                  "minItems": 2,
                  "maxItems": 2,
                  "default": [
                    0,
                    1
                  ]
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "hoverinfo": {
          "description": "Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired.",
          "oneOf": [
            {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "oneOf": [
                    {
                      "type": "string",
                      "enum": [
                        "all",
                        "none",
                        "skip"
                      ]
                    },
                    {
                      "type": "string",
                      "pattern": "^(label|text|value|percent|name)(\\+(label|text|value|percent|name))*$"
                    }
                  ],
                  "default": "all"
                }
              ]
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "oneOf": [
                      {
                        "type": "string",
                        "enum": [
                          "all",
                          "none",
                          "skip"
                        ]
                      },
                      {
                        "type": "string",
                        "pattern": "^(label|text|value|percent|name)(\\+(label|text|value|percent|name))*$"
                      }
                    ],
                    "default": "all"
                  }
                ]
              }
            }
          ]
        },
        "hoverinfosrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.",
          "type": "string"
        },
        "hoverlabel": {
          "type": "object",
          "properties": {
            "align": {
              "description": "Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "left",
                        "right",
                        "auto"
                      ],
                      "default": "auto"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "left",
                          "right",
                          "auto"
                        ],
                        "default": "auto"
                      }
                    ]
                  }
                }
              ]
            },
            "alignsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `align`.",
              "type": "string"
            },
            "bgcolor": {
              "description": "Sets the background color of the hover labels for this trace",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "bgcolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.",
              "type": "string"
            },
            "bordercolor": {
              "description": "Sets the border color of the hover labels for this trace.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "bordercolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.",
              "type": "string"
            },
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "colorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `color`.",
                  "type": "string"
                },
                "family": {
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "oneOf": [
                    {
                      "pattern": ".*\\S.*$",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "pattern": ".*\\S.*$",
                        "type": "string"
                      }
                    },
                    {
                      "$ref": "#/$defs/query-string"
                    }
                  ]
                },
                "familysrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `family`.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "oneOf": [
                              {
                                "type": "string",
                                "enum": [
                                  "none"
                                ]
                              },
                              {
                                "type": "string",
                                "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                              }
                            ],
                            "default": "none"
                          }
                        ]
                      }
                    }
                  ]
                },
                "linepositionsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.",
                  "type": "string"
                },
                "shadow": {
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "oneOf": [
                    {
                      "default": "none",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "default": "none",
                        "type": "string"
                      }
                    }
                  ]
                },
                "shadowsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `shadow`.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 1
                          }
                        ]
                      }
                    }
                  ]
                },
                "sizesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `size`.",
                  "type": "string"
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "italic"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "stylesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `style`.",
                  "type": "string"
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "word caps",
                              "upper",
                              "lower"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "textcasesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `textcase`.",
                  "type": "string"
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "small-caps",
                              "all-small-caps",
                              "all-petite-caps",
                              "petite-caps",
                              "unicase"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "variantsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `variant`.",
                  "type": "string"
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 1000,
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "weightsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `weight`.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "namelength": {
              "description": "Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": -1,
                      "default": 15
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "integer",
                        "minimum": -1,
                        "default": 15
                      }
                    ]
                  }
                }
              ]
            },
            "namelengthsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `namelength`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "hovertemplate": {
          "description": "Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". <https://github.com/d3/d3-format/tree/v1.4.5#d3-format> for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format> for details on the date formatting syntax. The variables available in `hovertemplate` are the ones emitted as event data described at this link <https://plotly.com/javascript/plotlyjs-events/#event-data>. Additionally, every attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `label`, `color`, `value`, `text` and `percent`. Anything contained in tag `<extra>` is displayed in the secondary box, for example \"<extra>{fullData.name}</extra>\". To hide the secondary box completely, use an empty tag `<extra></extra>`.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "hovertemplatesrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.",
          "type": "string"
        },
        "hovertext": {
          "description": "Sets hover text elements associated with each sector. If a single string, the same string appears for all data points. If an array of string, the items are mapped in order of this trace's sectors. To be seen, trace `hoverinfo` must contain a *text* flag.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "hovertextsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.",
          "type": "string"
        },
        "ids": {
          "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "idssrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `ids`.",
          "type": "string"
        },
        "insidetextfont": {
          "type": "object",
          "properties": {
            "color": {
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "colorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `color`.",
              "type": "string"
            },
            "family": {
              "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
              "oneOf": [
                {
                  "pattern": ".*\\S.*$",
                  "type": "string"
                },
                {
                  "type": "array",
                  "items": {
                    "pattern": ".*\\S.*$",
                    "type": "string"
                  }
                },
                {
                  "$ref": "#/$defs/query-string"
                }
              ]
            },
            "familysrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `family`.",
              "type": "string"
            },
            "lineposition": {
              "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "oneOf": [
                          {
                            "type": "string",
                            "enum": [
                              "none"
                            ]
                          },
                          {
                            "type": "string",
                            "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                          }
                        ],
                        "default": "none"
                      }
                    ]
                  }
                }
              ]
            },
            "linepositionsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.",
              "type": "string"
            },
            "shadow": {
              "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
              "oneOf": [
                {
                  "default": "none",
                  "type": "string"
                },
                {
                  "type": "array",
                  "items": {
                    "default": "none",
                    "type": "string"
                  }
                }
              ]
            },
            "shadowsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `shadow`.",
              "type": "string"
            },
            "size": {
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 1
                      }
                    ]
                  }
                }
              ]
            },
            "sizesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `size`.",
              "type": "string"
            },
            "style": {
              "description": "Sets whether a font should be styled with a normal or italic face from its family.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "italic"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "stylesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `style`.",
              "type": "string"
            },
            "textcase": {
              "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "word caps",
                          "upper",
                          "lower"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "textcasesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `textcase`.",
              "type": "string"
            },
            "variant": {
              "description": "Sets the variant of the font.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "small-caps",
                          "all-small-caps",
                          "all-petite-caps",
                          "petite-caps",
                          "unicase"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "variantsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `variant`.",
              "type": "string"
            },
            "weight": {
              "description": "Sets the weight (or boldness) of the font.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 1000,
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "weightsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `weight`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "label0": {
          "description": "Alternate to `labels`. Builds a numeric set of labels. Use with `dlabel` where `label0` is the starting label and `dlabel` the step.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": 0
            }
          ]
        },
        "labels": {
          "description": "Sets the sector labels. If `labels` entries are duplicated, we sum associated `values` or simply count occurrences if `values` is not provided. For other array attributes (including color) we use the first non-empty entry among all occurrences of the label.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "labelssrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `labels`.",
          "type": "string"
        },
        "legend": {
          "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "legend",
              "pattern": "^legend([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "legendgroup": {
          "default": "",
          "description": "Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items.",
          "type": "string"
        },
        "legendgrouptitle": {
          "type": "object",
          "properties": {
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "family": {
                  "pattern": ".*\\S.*$",
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                "shadow": {
                  "default": "none",
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "text": {
              "default": "",
              "description": "Sets the title of the legend group.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "legendrank": {
          "description": "Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": 1000
            }
          ]
        },
        "legendwidth": {
          "description": "Sets the width (in px or fraction) of the legend for this trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0
            }
          ]
        },
        "marker": {
          "type": "object",
          "properties": {
            "colors": {
              "description": "Sets the color of each sector. If not specified, the default trace color set is used to pick the sector colors.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  }
                }
              ]
            },
            "colorssrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `colors`.",
              "type": "string"
            },
            "line": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the color of the line enclosing each sector. Defaults to the `paper_bgcolor` value.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "colorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `color`.",
                  "type": "string"
                },
                "width": {
                  "description": "Sets the width (in px) of the line enclosing each sector.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 0,
                          "default": 1
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 0,
                            "default": 1
                          }
                        ]
                      }
                    }
                  ]
                },
                "widthsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `width`.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "pattern": {
              "type": "object",
              "properties": {
                "bgcolor": {
                  "description": "When there is no colorscale sets the color of background pattern fill. Defaults to a `marker.color` background when `fillmode` is *overlay*. Otherwise, defaults to a transparent background.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "bgcolorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.",
                  "type": "string"
                },
                "fgcolor": {
                  "description": "When there is no colorscale sets the color of foreground pattern fill. Defaults to a `marker.color` background when `fillmode` is *replace*. Otherwise, defaults to dark grey or white to increase contrast with the `bgcolor`.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "fgcolorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `fgcolor`.",
                  "type": "string"
                },
                "fgopacity": {
                  "description": "Sets the opacity of the foreground pattern fill. Defaults to a 0.5 when `fillmode` is *overlay*. Otherwise, defaults to 1.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1
                    }
                  ]
                },
                "fillmode": {
                  "description": "Determines whether `marker.color` should be used as a default to `bgcolor` or a `fgcolor`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "replace",
                        "overlay"
                      ],
                      "default": "replace"
                    }
                  ]
                },
                "shape": {
                  "description": "Sets the shape of the pattern fill. By default, no pattern is used for filling the area.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "",
                            "/",
                            "\\",
                            "x",
                            "-",
                            "|",
                            "+",
                            "."
                          ],
                          "default": ""
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "",
                              "/",
                              "\\",
                              "x",
                              "-",
                              "|",
                              "+",
                              "."
                            ],
                            "default": ""
                          }
                        ]
                      }
                    }
                  ]
                },
                "shapesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `shape`.",
                  "type": "string"
                },
                "size": {
                  "description": "Sets the size of unit squares of the pattern fill in pixels, which corresponds to the interval of repetition of the pattern.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 0,
                          "default": 8
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 0,
                            "default": 8
                          }
                        ]
                      }
                    }
                  ]
                },
                "sizesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `size`.",
                  "type": "string"
                },
                "solidity": {
                  "description": "Sets the solidity of the pattern fill. Solidity is roughly the fraction of the area filled by the pattern. Solidity of 0 shows only the background color without pattern and solidty of 1 shows only the foreground color without pattern.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 0,
                          "maximum": 1,
                          "default": 0.3
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 0,
                            "maximum": 1,
                            "default": 0.3
                          }
                        ]
                      }
                    }
                  ]
                },
                "soliditysrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `solidity`.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            }
          },
          "additionalProperties": false
        },
        "metasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `meta`.",
          "type": "string"
        },
        "name": {
          "description": "Sets the trace name. The trace name appears as the legend item and on hover.",
          "type": "string"
        },
        "opacity": {
          "description": "Sets the opacity of the trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0,
              "maximum": 1,
              "default": 1
            }
          ]
        },
        "scalegroup": {
          "default": "",
          "description": "If there are multiple funnelareas that should be sized according to their totals, link them by providing a non-empty group id here shared by every trace in the same group.",
          "type": "string"
        },
        "showlegend": {
          "description": "Determines whether or not an item corresponding to this trace is shown in the legend.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "stream": {
          "type": "object",
          "properties": {
            "maxpoints": {
              "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 10000,
                  "default": 500
                }
              ]
            },
            "token": {
              "pattern": ".*\\S.*$",
              "description": "The stream id number links a data trace on a plot with a stream. See <https://chart-studio.plotly.com/settings> for more details.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "text": {
          "description": "Sets text elements associated with each sector. If trace `textinfo` contains a *text* flag, these elements will be seen on the chart. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "textfont": {
          "type": "object",
          "properties": {
            "color": {
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "colorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `color`.",
              "type": "string"
            },
            "family": {
              "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
              "oneOf": [
                {
                  "pattern": ".*\\S.*$",
                  "type": "string"
                },
                {
                  "type": "array",
                  "items": {
                    "pattern": ".*\\S.*$",
                    "type": "string"
                  }
                },
                {
                  "$ref": "#/$defs/query-string"
                }
              ]
            },
            "familysrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `family`.",
              "type": "string"
            },
            "lineposition": {
              "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "oneOf": [
                          {
                            "type": "string",
                            "enum": [
                              "none"
                            ]
                          },
                          {
                            "type": "string",
                            "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                          }
                        ],
                        "default": "none"
                      }
                    ]
                  }
                }
              ]
            },
            "linepositionsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.",
              "type": "string"
            },
            "shadow": {
              "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
              "oneOf": [
                {
                  "default": "none",
                  "type": "string"
                },
                {
                  "type": "array",
                  "items": {
                    "default": "none",
                    "type": "string"
                  }
                }
              ]
            },
            "shadowsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `shadow`.",
              "type": "string"
            },
            "size": {
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 1
                      }
                    ]
                  }
                }
              ]
            },
            "sizesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `size`.",
              "type": "string"
            },
            "style": {
              "description": "Sets whether a font should be styled with a normal or italic face from its family.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "italic"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "stylesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `style`.",
              "type": "string"
            },
            "textcase": {
              "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "word caps",
                          "upper",
                          "lower"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "textcasesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `textcase`.",
              "type": "string"
            },
            "variant": {
              "description": "Sets the variant of the font.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "small-caps",
                          "all-small-caps",
                          "all-petite-caps",
                          "petite-caps",
                          "unicase"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "variantsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `variant`.",
              "type": "string"
            },
            "weight": {
              "description": "Sets the weight (or boldness) of the font.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 1000,
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "weightsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `weight`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "textinfo": {
          "description": "Determines which trace information appear on the graph.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "oneOf": [
                {
                  "type": "string",
                  "enum": [
                    "none"
                  ]
                },
                {
                  "type": "string",
                  "pattern": "^(label|text|value|percent)(\\+(label|text|value|percent))*$"
                }
              ]
            }
          ]
        },
        "textposition": {
          "description": "Specifies the location of the `textinfo`.",
          "oneOf": [
            {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "inside",
                    "none"
                  ],
                  "default": "inside"
                }
              ]
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "enum": [
                      "inside",
                      "none"
                    ],
                    "default": "inside"
                  }
                ]
              }
            }
          ]
        },
        "textpositionsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `textposition`.",
          "type": "string"
        },
        "textsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `text`.",
          "type": "string"
        },
        "texttemplate": {
          "description": "Template string used for rendering the information text that appear on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". <https://github.com/d3/d3-format/tree/v1.4.5#d3-format> for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format> for details on the date formatting syntax. Every attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `label`, `color`, `value`, `text` and `percent`.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "texttemplatesrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.",
          "type": "string"
        },
        "title": {
          "type": "object",
          "properties": {
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "colorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `color`.",
                  "type": "string"
                },
                "family": {
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "oneOf": [
                    {
                      "pattern": ".*\\S.*$",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "pattern": ".*\\S.*$",
                        "type": "string"
                      }
                    },
                    {
                      "$ref": "#/$defs/query-string"
                    }
                  ]
                },
                "familysrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `family`.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "oneOf": [
                              {
                                "type": "string",
                                "enum": [
                                  "none"
                                ]
                              },
                              {
                                "type": "string",
                                "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                              }
                            ],
                            "default": "none"
                          }
                        ]
                      }
                    }
                  ]
                },
                "linepositionsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.",
                  "type": "string"
                },
                "shadow": {
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "oneOf": [
                    {
                      "default": "none",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "default": "none",
                        "type": "string"
                      }
                    }
                  ]
                },
                "shadowsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `shadow`.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 1
                          }
                        ]
                      }
                    }
                  ]
                },
                "sizesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `size`.",
                  "type": "string"
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "italic"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "stylesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `style`.",
                  "type": "string"
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "word caps",
                              "upper",
                              "lower"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "textcasesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `textcase`.",
                  "type": "string"
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "small-caps",
                              "all-small-caps",
                              "all-petite-caps",
                              "petite-caps",
                              "unicase"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "variantsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `variant`.",
                  "type": "string"
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 1000,
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "weightsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `weight`.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "position": {
              "description": "Specifies the location of the `title`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "top left",
                    "top center",
                    "top right"
                  ],
                  "default": "top center"
                }
              ]
            },
            "text": {
              "default": "",
              "description": "Sets the title of the chart. If it is empty, no title is displayed.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "uid": {
          "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.",
          "type": "string"
        },
        "uirevision": {
          "description": "Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves."
        },
        "values": {
          "description": "Sets the values of the sectors. If omitted, we count occurrences of each label.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "valuessrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `values`.",
          "type": "string"
        },
        "visible": {
          "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                true,
                false,
                "legendonly"
              ],
              "default": true
            }
          ]
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false
    },
    "Heatmap": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "$id": "https://visivo.io/trace-properties/schema",
      "description": "A schema to validate plotly trace properties",
      "type": "object",
      "properties": {
        "type": {
          "const": "heatmap"
        },
        "autocolorscale": {
          "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": false
            }
          ]
        },
        "coloraxis": {
          "description": "Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": null,
              "pattern": "/^coloraxis([2-9]|[1-9][0-9]+)?$/"
            }
          ]
        },
        "colorbar": {
          "type": "object",
          "properties": {
            "bgcolor": {
              "description": "Sets the color of padded area.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "bordercolor": {
              "description": "Sets the axis line color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "borderwidth": {
              "description": "Sets the width (in px) or the border enclosing this color bar.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "dtick": {
              "description": "Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L<f>*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M<n>* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48*"
            },
            "exponentformat": {
              "description": "Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "none",
                    "e",
                    "E",
                    "power",
                    "SI",
                    "B"
                  ],
                  "default": "B"
                }
              ]
            },
            "labelalias": {
              "default": false,
              "description": "Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax."
            },
            "len": {
              "description": "Sets the length of the color bar This measure excludes the padding of both ends. That is, the color bar length is this length minus the padding on both ends.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 1
                }
              ]
            },
            "lenmode": {
              "description": "Determines whether this color bar's length (i.e. the measure in the color variation direction) is set in units of plot *fraction* or in *pixels. Use `len` to set the value.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "fraction",
                    "pixels"
                  ],
                  "default": "fraction"
                }
              ]
            },
            "minexponent": {
              "description": "Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 3
                }
              ]
            },
            "nticks": {
              "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "orientation": {
              "description": "Sets the orientation of the colorbar.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "h",
                    "v"
                  ],
                  "default": "v"
                }
              ]
            },
            "outlinecolor": {
              "description": "Sets the axis line color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "outlinewidth": {
              "description": "Sets the width (in px) of the axis line.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 1
                }
              ]
            },
            "separatethousands": {
              "description": "If \"true\", even 4-digit integers are separated",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            },
            "showexponent": {
              "description": "If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "all",
                    "first",
                    "last",
                    "none"
                  ],
                  "default": "all"
                }
              ]
            },
            "showticklabels": {
              "description": "Determines whether or not the tick labels are drawn.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": true
                }
              ]
            },
            "showtickprefix": {
              "description": "If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "all",
                    "first",
                    "last",
                    "none"
                  ],
                  "default": "all"
                }
              ]
            },
            "showticksuffix": {
              "description": "Same as `showtickprefix` but for tick suffixes.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "all",
                    "first",
                    "last",
                    "none"
                  ],
                  "default": "all"
                }
              ]
            },
            "thickness": {
              "description": "Sets the thickness of the color bar This measure excludes the size of the padding, ticks and labels.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 30
                }
              ]
            },
            "thicknessmode": {
              "description": "Determines whether this color bar's thickness (i.e. the measure in the constant color direction) is set in units of plot *fraction* or in *pixels*. Use `thickness` to set the value.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "fraction",
                    "pixels"
                  ],
                  "default": "pixels"
                }
              ]
            },
            "tick0": {
              "description": "Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L<f>* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears."
            },
            "tickangle": {
              "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": -180,
                  "maximum": 180,
                  "default": "auto"
                }
              ]
            },
            "tickcolor": {
              "description": "Sets the tick color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "tickfont": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "family": {
                  "pattern": ".*\\S.*$",
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                "shadow": {
                  "default": "none",
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "tickformat": {
              "default": "",
              "description": "Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*",
              "type": "string"
            },
            "tickformatstops": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "dtickrange": {
                    "description": "range [*min*, *max*], where *min*, *max* - dtick values which describe some zoom level, it is possible to omit *min* or *max* value by passing *null*",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "array",
                        "items": {},
                        "minItems": 2,
                        "maxItems": 2
                      }
                    ]
                  },
                  "enabled": {
                    "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "boolean",
                        "default": true
                      }
                    ]
                  },
                  "name": {
                    "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.",
                    "type": "string"
                  },
                  "templateitemname": {
                    "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.",
                    "type": "string"
                  },
                  "value": {
                    "default": "",
                    "description": "string - dtickformat for described zoom level, the same as *tickformat*",
                    "type": "string"
                  }
                },
                "additionalProperties": false
              },
              "minItems": 1
            },
            "ticklabeloverflow": {
              "description": "Determines how we handle tick labels that would overflow either the graph div or the domain of the axis. The default value for inside tick labels is *hide past domain*. In other cases the default is *hide past div*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "allow",
                    "hide past div",
                    "hide past domain"
                  ]
                }
              ]
            },
            "ticklabelposition": {
              "description": "Determines where tick labels are drawn relative to the ticks. Left and right options are used when `orientation` is *h*, top and bottom when `orientation` is *v*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "outside",
                    "inside",
                    "outside top",
                    "inside top",
                    "outside left",
                    "inside left",
                    "outside right",
                    "inside right",
                    "outside bottom",
                    "inside bottom"
                  ],
                  "default": "outside"
                }
              ]
            },
            "ticklabelstep": {
              "description": "Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 1,
                  "default": 1
                }
              ]
            },
            "ticklen": {
              "description": "Sets the tick length (in px).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 5
                }
              ]
            },
            "tickmode": {
              "description": "Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "auto",
                    "linear",
                    "array"
                  ]
                }
              ]
            },
            "tickprefix": {
              "default": "",
              "description": "Sets a tick label prefix.",
              "type": "string"
            },
            "ticks": {
              "description": "Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "outside",
                    "inside",
                    ""
                  ],
                  "default": ""
                }
              ]
            },
            "ticksuffix": {
              "default": "",
              "description": "Sets a tick label suffix.",
              "type": "string"
            },
            "ticktext": {
              "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  }
                }
              ]
            },
            "ticktextsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.",
              "type": "string"
            },
            "tickvals": {
              "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  }
                }
              ]
            },
            "tickvalssrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.",
              "type": "string"
            },
            "tickwidth": {
              "description": "Sets the tick width (in px).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 1
                }
              ]
            },
            "title": {
              "type": "object",
              "properties": {
                "font": {
                  "type": "object",
                  "properties": {
                    "color": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    "family": {
                      "pattern": ".*\\S.*$",
                      "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                      "type": "string"
                    },
                    "lineposition": {
                      "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    "shadow": {
                      "default": "none",
                      "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                      "type": "string"
                    },
                    "size": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    "style": {
                      "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "textcase": {
                      "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "variant": {
                      "description": "Sets the variant of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "weight": {
                      "description": "Sets the weight (or boldness) of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    }
                  },
                  "additionalProperties": false
                },
                "side": {
                  "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and  defaults to *right* when `orientation` if *h*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "right",
                        "top",
                        "bottom"
                      ]
                    }
                  ]
                },
                "text": {
                  "description": "Sets the title of the color bar.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "x": {
              "description": "Sets the x position with respect to `xref` of the color bar (in plot fraction). When `xref` is *paper*, defaults to 1.02 when `orientation` is *v* and 0.5 when `orientation` is *h*. When `xref` is *container*, defaults to *1* when `orientation` is *v* and 0.5 when `orientation` is *h*. Must be between *0* and *1* if `xref` is *container* and between *-2* and *3* if `xref` is *paper*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number"
                }
              ]
            },
            "xanchor": {
              "description": "Sets this color bar's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the color bar. Defaults to *left* when `orientation` is *v* and *center* when `orientation` is *h*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "left",
                    "center",
                    "right"
                  ]
                }
              ]
            },
            "xpad": {
              "description": "Sets the amount of padding (in px) along the x direction.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 10
                }
              ]
            },
            "xref": {
              "description": "Sets the container `x` refers to. *container* spans the entire `width` of the plot. *paper* refers to the width of the plotting area only.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "container",
                    "paper"
                  ],
                  "default": "paper"
                }
              ]
            },
            "y": {
              "description": "Sets the y position with respect to `yref` of the color bar (in plot fraction). When `yref` is *paper*, defaults to 0.5 when `orientation` is *v* and 1.02 when `orientation` is *h*. When `yref` is *container*, defaults to 0.5 when `orientation` is *v* and 1 when `orientation` is *h*. Must be between *0* and *1* if `yref` is *container* and between *-2* and *3* if `yref` is *paper*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number"
                }
              ]
            },
            "yanchor": {
              "description": "Sets this color bar's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the color bar. Defaults to *middle* when `orientation` is *v* and *bottom* when `orientation` is *h*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "top",
                    "middle",
                    "bottom"
                  ]
                }
              ]
            },
            "ypad": {
              "description": "Sets the amount of padding (in px) along the y direction.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 10
                }
              ]
            },
            "yref": {
              "description": "Sets the container `y` refers to. *container* spans the entire `height` of the plot. *paper* refers to the height of the plotting area only.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "container",
                    "paper"
                  ],
                  "default": "paper"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "colorscale": {
          "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "$ref": "#/$defs/colorscale",
              "default": null
            }
          ]
        },
        "connectgaps": {
          "description": "Determines whether or not gaps (i.e. {nan} or missing values) in the `z` data are filled in. It is defaulted to true if `z` is a one dimensional array and `zsmooth` is not false; otherwise it is defaulted to false.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean"
            }
          ]
        },
        "customdata": {
          "description": "Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "customdatasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `customdata`.",
          "type": "string"
        },
        "dx": {
          "description": "Sets the x coordinate step. See `x0` for more info.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": 1
            }
          ]
        },
        "dy": {
          "description": "Sets the y coordinate step. See `y0` for more info.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": 1
            }
          ]
        },
        "hoverinfo": {
          "description": "Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired.",
          "oneOf": [
            {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "oneOf": [
                    {
                      "type": "string",
                      "enum": [
                        "all",
                        "none",
                        "skip"
                      ]
                    },
                    {
                      "type": "string",
                      "pattern": "^(x|y|z|text|name)(\\+(x|y|z|text|name))*$"
                    }
                  ],
                  "default": "all"
                }
              ]
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "oneOf": [
                      {
                        "type": "string",
                        "enum": [
                          "all",
                          "none",
                          "skip"
                        ]
                      },
                      {
                        "type": "string",
                        "pattern": "^(x|y|z|text|name)(\\+(x|y|z|text|name))*$"
                      }
                    ],
                    "default": "all"
                  }
                ]
              }
            }
          ]
        },
        "hoverinfosrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.",
          "type": "string"
        },
        "hoverlabel": {
          "type": "object",
          "properties": {
            "align": {
              "description": "Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "left",
                        "right",
                        "auto"
                      ],
                      "default": "auto"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "left",
                          "right",
                          "auto"
                        ],
                        "default": "auto"
                      }
                    ]
                  }
                }
              ]
            },
            "alignsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `align`.",
              "type": "string"
            },
            "bgcolor": {
              "description": "Sets the background color of the hover labels for this trace",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "bgcolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.",
              "type": "string"
            },
            "bordercolor": {
              "description": "Sets the border color of the hover labels for this trace.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "bordercolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.",
              "type": "string"
            },
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "colorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `color`.",
                  "type": "string"
                },
                "family": {
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "oneOf": [
                    {
                      "pattern": ".*\\S.*$",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "pattern": ".*\\S.*$",
                        "type": "string"
                      }
                    },
                    {
                      "$ref": "#/$defs/query-string"
                    }
                  ]
                },
                "familysrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `family`.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "oneOf": [
                              {
                                "type": "string",
                                "enum": [
                                  "none"
                                ]
                              },
                              {
                                "type": "string",
                                "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                              }
                            ],
                            "default": "none"
                          }
                        ]
                      }
                    }
                  ]
                },
                "linepositionsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.",
                  "type": "string"
                },
                "shadow": {
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "oneOf": [
                    {
                      "default": "none",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "default": "none",
                        "type": "string"
                      }
                    }
                  ]
                },
                "shadowsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `shadow`.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 1
                          }
                        ]
                      }
                    }
                  ]
                },
                "sizesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `size`.",
                  "type": "string"
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "italic"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "stylesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `style`.",
                  "type": "string"
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "word caps",
                              "upper",
                              "lower"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "textcasesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `textcase`.",
                  "type": "string"
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "small-caps",
                              "all-small-caps",
                              "all-petite-caps",
                              "petite-caps",
                              "unicase"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "variantsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `variant`.",
                  "type": "string"
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 1000,
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "weightsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `weight`.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "namelength": {
              "description": "Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": -1,
                      "default": 15
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "integer",
                        "minimum": -1,
                        "default": 15
                      }
                    ]
                  }
                }
              ]
            },
            "namelengthsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `namelength`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "hoverongaps": {
          "description": "Determines whether or not gaps (i.e. {nan} or missing values) in the `z` data have hover labels associated with them.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "hovertemplate": {
          "description": "Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". <https://github.com/d3/d3-format/tree/v1.4.5#d3-format> for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format> for details on the date formatting syntax. The variables available in `hovertemplate` are the ones emitted as event data described at this link <https://plotly.com/javascript/plotlyjs-events/#event-data>. Additionally, every attributes that can be specified per-point (the ones that are `arrayOk: true`) are available.  Anything contained in tag `<extra>` is displayed in the secondary box, for example \"<extra>{fullData.name}</extra>\". To hide the secondary box completely, use an empty tag `<extra></extra>`.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "hovertemplatesrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.",
          "type": "string"
        },
        "hovertext": {
          "description": "Same as `text`.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "hovertextsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.",
          "type": "string"
        },
        "ids": {
          "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "idssrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `ids`.",
          "type": "string"
        },
        "legend": {
          "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "legend",
              "pattern": "^legend([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "legendgroup": {
          "default": "",
          "description": "Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items.",
          "type": "string"
        },
        "legendgrouptitle": {
          "type": "object",
          "properties": {
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "family": {
                  "pattern": ".*\\S.*$",
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                "shadow": {
                  "default": "none",
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "text": {
              "default": "",
              "description": "Sets the title of the legend group.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "legendrank": {
          "description": "Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": 1000
            }
          ]
        },
        "legendwidth": {
          "description": "Sets the width (in px or fraction) of the legend for this trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0
            }
          ]
        },
        "metasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `meta`.",
          "type": "string"
        },
        "name": {
          "description": "Sets the trace name. The trace name appears as the legend item and on hover.",
          "type": "string"
        },
        "opacity": {
          "description": "Sets the opacity of the trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0,
              "maximum": 1,
              "default": 1
            }
          ]
        },
        "reversescale": {
          "description": "Reverses the color mapping if true. If true, `zmin` will correspond to the last color in the array and `zmax` will correspond to the first color.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": false
            }
          ]
        },
        "showlegend": {
          "description": "Determines whether or not an item corresponding to this trace is shown in the legend.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": false
            }
          ]
        },
        "showscale": {
          "description": "Determines whether or not a colorbar is displayed for this trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "stream": {
          "type": "object",
          "properties": {
            "maxpoints": {
              "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 10000,
                  "default": 500
                }
              ]
            },
            "token": {
              "pattern": ".*\\S.*$",
              "description": "The stream id number links a data trace on a plot with a stream. See <https://chart-studio.plotly.com/settings> for more details.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "text": {
          "description": "Sets the text elements associated with each z value.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "textfont": {
          "type": "object",
          "properties": {
            "color": {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "family": {
              "pattern": ".*\\S.*$",
              "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
              "type": "string"
            },
            "lineposition": {
              "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "oneOf": [
                    {
                      "type": "string",
                      "enum": [
                        "none"
                      ]
                    },
                    {
                      "type": "string",
                      "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                    }
                  ],
                  "default": "none"
                }
              ]
            },
            "shadow": {
              "default": "none",
              "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
              "type": "string"
            },
            "size": {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 1,
                  "default": "auto"
                }
              ]
            },
            "style": {
              "description": "Sets whether a font should be styled with a normal or italic face from its family.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "normal",
                    "italic"
                  ],
                  "default": "normal"
                }
              ]
            },
            "textcase": {
              "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "normal",
                    "word caps",
                    "upper",
                    "lower"
                  ],
                  "default": "normal"
                }
              ]
            },
            "variant": {
              "description": "Sets the variant of the font.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "normal",
                    "small-caps",
                    "all-small-caps",
                    "all-petite-caps",
                    "petite-caps",
                    "unicase"
                  ],
                  "default": "normal"
                }
              ]
            },
            "weight": {
              "description": "Sets the weight (or boldness) of the font.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 1,
                  "maximum": 1000,
                  "default": "normal"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "textsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `text`.",
          "type": "string"
        },
        "texttemplate": {
          "default": "",
          "description": "Template string used for rendering the information text that appear on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". <https://github.com/d3/d3-format/tree/v1.4.5#d3-format> for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format> for details on the date formatting syntax. Every attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `x`, `y`, `z` and `text`.",
          "type": "string"
        },
        "transpose": {
          "description": "Transposes the z data.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": false
            }
          ]
        },
        "uid": {
          "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.",
          "type": "string"
        },
        "uirevision": {
          "description": "Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves."
        },
        "visible": {
          "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                true,
                false,
                "legendonly"
              ],
              "default": true
            }
          ]
        },
        "x": {
          "description": "Sets the x coordinates.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "x0": {
          "default": 0,
          "description": "Alternate to `x`. Builds a linear space of x coordinates. Use with `dx` where `x0` is the starting coordinate and `dx` the step."
        },
        "xaxis": {
          "description": "Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "x",
              "pattern": "^x([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "xcalendar": {
          "description": "Sets the calendar system to use with `x` date data.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "chinese",
                "coptic",
                "discworld",
                "ethiopian",
                "gregorian",
                "hebrew",
                "islamic",
                "jalali",
                "julian",
                "mayan",
                "nanakshahi",
                "nepali",
                "persian",
                "taiwan",
                "thai",
                "ummalqura"
              ],
              "default": "gregorian"
            }
          ]
        },
        "xgap": {
          "description": "Sets the horizontal gap (in pixels) between bricks.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0,
              "default": 0
            }
          ]
        },
        "xhoverformat": {
          "default": "",
          "description": "Sets the hover text formatting rulefor `x`  using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.",
          "type": "string"
        },
        "xperiod": {
          "default": 0,
          "description": "Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M<n>* on the x axis. Special values in the form of *M<n>* could be used to declare the number of months. In this case `n` must be a positive integer."
        },
        "xperiod0": {
          "description": "Only relevant when the axis `type` is *date*. Sets the base for period positioning in milliseconds or date string on the x0 axis. When `x0period` is round number of weeks, the `x0period0` by default would be on a Sunday i.e. 2000-01-02, otherwise it would be at 2000-01-01."
        },
        "xperiodalignment": {
          "description": "Only relevant when the axis `type` is *date*. Sets the alignment of data points on the x axis.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "start",
                "middle",
                "end"
              ],
              "default": "middle"
            }
          ]
        },
        "xsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `x`.",
          "type": "string"
        },
        "xtype": {
          "description": "If *array*, the heatmap's x coordinates are given by *x* (the default behavior when `x` is provided). If *scaled*, the heatmap's x coordinates are given by *x0* and *dx* (the default behavior when `x` is not provided).",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "array",
                "scaled"
              ]
            }
          ]
        },
        "y": {
          "description": "Sets the y coordinates.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "y0": {
          "default": 0,
          "description": "Alternate to `y`. Builds a linear space of y coordinates. Use with `dy` where `y0` is the starting coordinate and `dy` the step."
        },
        "yaxis": {
          "description": "Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "y",
              "pattern": "^y([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "ycalendar": {
          "description": "Sets the calendar system to use with `y` date data.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "chinese",
                "coptic",
                "discworld",
                "ethiopian",
                "gregorian",
                "hebrew",
                "islamic",
                "jalali",
                "julian",
                "mayan",
                "nanakshahi",
                "nepali",
                "persian",
                "taiwan",
                "thai",
                "ummalqura"
              ],
              "default": "gregorian"
            }
          ]
        },
        "ygap": {
          "description": "Sets the vertical gap (in pixels) between bricks.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0,
              "default": 0
            }
          ]
        },
        "yhoverformat": {
          "default": "",
          "description": "Sets the hover text formatting rulefor `y`  using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.",
          "type": "string"
        },
        "yperiod": {
          "default": 0,
          "description": "Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M<n>* on the y axis. Special values in the form of *M<n>* could be used to declare the number of months. In this case `n` must be a positive integer."
        },
        "yperiod0": {
          "description": "Only relevant when the axis `type` is *date*. Sets the base for period positioning in milliseconds or date string on the y0 axis. When `y0period` is round number of weeks, the `y0period0` by default would be on a Sunday i.e. 2000-01-02, otherwise it would be at 2000-01-01."
        },
        "yperiodalignment": {
          "description": "Only relevant when the axis `type` is *date*. Sets the alignment of data points on the y axis.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "start",
                "middle",
                "end"
              ],
              "default": "middle"
            }
          ]
        },
        "ysrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `y`.",
          "type": "string"
        },
        "ytype": {
          "description": "If *array*, the heatmap's y coordinates are given by *y* (the default behavior when `y` is provided) If *scaled*, the heatmap's y coordinates are given by *y0* and *dy* (the default behavior when `y` is not provided)",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "array",
                "scaled"
              ]
            }
          ]
        },
        "z": {
          "description": "Sets the z data.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "zauto": {
          "description": "Determines whether or not the color domain is computed with respect to the input data (here in `z`) or the bounds set in `zmin` and `zmax` Defaults to `false` when `zmin` and `zmax` are set by the user.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "zhoverformat": {
          "default": "",
          "description": "Sets the hover text formatting rulefor `z`  using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By> default the values are formatted using generic number format.",
          "type": "string"
        },
        "zmax": {
          "description": "Sets the upper bound of the color domain. Value should have the same units as in `z` and if set, `zmin` must be set as well.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": null
            }
          ]
        },
        "zmid": {
          "description": "Sets the mid-point of the color domain by scaling `zmin` and/or `zmax` to be equidistant to this point. Value should have the same units as in `z`. Has no effect when `zauto` is `false`.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": null
            }
          ]
        },
        "zmin": {
          "description": "Sets the lower bound of the color domain. Value should have the same units as in `z` and if set, `zmax` must be set as well.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": null
            }
          ]
        },
        "zorder": {
          "description": "Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "integer",
              "default": 0
            }
          ]
        },
        "zsmooth": {
          "description": "Picks a smoothing algorithm use to smooth `z` data.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "fast",
                "best",
                false
              ],
              "default": false
            }
          ]
        },
        "zsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `z`.",
          "type": "string"
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false
    },
    "Histogram": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "$id": "https://visivo.io/trace-properties/schema",
      "description": "A schema to validate plotly trace properties",
      "type": "object",
      "properties": {
        "type": {
          "const": "histogram"
        },
        "alignmentgroup": {
          "default": "",
          "description": "Set several traces linked to the same position axis or matching axes to the same alignmentgroup. This controls whether bars compute their positional range dependently or independently.",
          "type": "string"
        },
        "autobinx": {
          "description": "Obsolete: since v1.42 each bin attribute is auto-determined separately and `autobinx` is not needed. However, we accept `autobinx: true` or `false` and will update `xbins` accordingly before deleting `autobinx` from the trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": null
            }
          ]
        },
        "autobiny": {
          "description": "Obsolete: since v1.42 each bin attribute is auto-determined separately and `autobiny` is not needed. However, we accept `autobiny: true` or `false` and will update `ybins` accordingly before deleting `autobiny` from the trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": null
            }
          ]
        },
        "bingroup": {
          "default": "",
          "description": "Set a group of histogram traces which will have compatible bin settings. Note that traces on the same subplot and with the same *orientation* under `barmode` *stack*, *relative* and *group* are forced into the same bingroup, Using `bingroup`, traces under `barmode` *overlay* and on different axes (of the same axis type) can have compatible bin settings. Note that histogram and histogram2d* trace can share the same `bingroup`",
          "type": "string"
        },
        "cliponaxis": {
          "description": "Determines whether the text nodes are clipped about the subplot axes. To show the text nodes above axis lines and tick labels, make sure to set `xaxis.layer` and `yaxis.layer` to *below traces*.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "constraintext": {
          "description": "Constrain the size of text inside or outside a bar to be no larger than the bar itself.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "inside",
                "outside",
                "both",
                "none"
              ],
              "default": "both"
            }
          ]
        },
        "cumulative": {
          "type": "object",
          "properties": {
            "currentbin": {
              "description": "Only applies if cumulative is enabled. Sets whether the current bin is included, excluded, or has half of its value included in the current cumulative value. *include* is the default for compatibility with various other tools, however it introduces a half-bin bias to the results. *exclude* makes the opposite half-bin bias, and *half* removes it.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "include",
                    "exclude",
                    "half"
                  ],
                  "default": "include"
                }
              ]
            },
            "direction": {
              "description": "Only applies if cumulative is enabled. If *increasing* (default) we sum all prior bins, so the result increases from left to right. If *decreasing* we sum later bins so the result decreases from left to right.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "increasing",
                    "decreasing"
                  ],
                  "default": "increasing"
                }
              ]
            },
            "enabled": {
              "description": "If true, display the cumulative distribution by summing the binned values. Use the `direction` and `centralbin` attributes to tune the accumulation method. Note: in this mode, the *density* `histnorm` settings behave the same as their equivalents without *density*: ** and *density* both rise to the number of data points, and *probability* and *probability density* both rise to the number of sample points.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "customdata": {
          "description": "Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "customdatasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `customdata`.",
          "type": "string"
        },
        "error_x": {
          "type": "object",
          "properties": {
            "array": {
              "description": "Sets the data corresponding the length of each error bar. Values are plotted relative to the underlying data.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  }
                }
              ]
            },
            "arrayminus": {
              "description": "Sets the data corresponding the length of each error bar in the bottom (left) direction for vertical (horizontal) bars Values are plotted relative to the underlying data.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  }
                }
              ]
            },
            "arrayminussrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `arrayminus`.",
              "type": "string"
            },
            "arraysrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `array`.",
              "type": "string"
            },
            "color": {
              "description": "Sets the stroke color of the error bars.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "copy_ystyle": {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean"
                }
              ]
            },
            "symmetric": {
              "description": "Determines whether or not the error bars have the same length in both direction (top/bottom for vertical bars, left/right for horizontal bars.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean"
                }
              ]
            },
            "thickness": {
              "description": "Sets the thickness (in px) of the error bars.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 2
                }
              ]
            },
            "traceref": {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "tracerefminus": {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "type": {
              "description": "Determines the rule used to generate the error bars. If *constant`, the bar lengths are of a constant value. Set this constant in `value`. If *percent*, the bar lengths correspond to a percentage of underlying data. Set this percentage in `value`. If *sqrt*, the bar lengths correspond to the square of the underlying data. If *data*, the bar lengths are set with data set `array`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "percent",
                    "constant",
                    "sqrt",
                    "data"
                  ]
                }
              ]
            },
            "value": {
              "description": "Sets the value of either the percentage (if `type` is set to *percent*) or the constant (if `type` is set to *constant*) corresponding to the lengths of the error bars.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 10
                }
              ]
            },
            "valueminus": {
              "description": "Sets the value of either the percentage (if `type` is set to *percent*) or the constant (if `type` is set to *constant*) corresponding to the lengths of the error bars in the bottom (left) direction for vertical (horizontal) bars",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 10
                }
              ]
            },
            "visible": {
              "description": "Determines whether or not this set of error bars is visible.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean"
                }
              ]
            },
            "width": {
              "description": "Sets the width (in px) of the cross-bar at both ends of the error bars.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "error_y": {
          "type": "object",
          "properties": {
            "array": {
              "description": "Sets the data corresponding the length of each error bar. Values are plotted relative to the underlying data.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  }
                }
              ]
            },
            "arrayminus": {
              "description": "Sets the data corresponding the length of each error bar in the bottom (left) direction for vertical (horizontal) bars Values are plotted relative to the underlying data.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  }
                }
              ]
            },
            "arrayminussrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `arrayminus`.",
              "type": "string"
            },
            "arraysrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `array`.",
              "type": "string"
            },
            "color": {
              "description": "Sets the stroke color of the error bars.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "symmetric": {
              "description": "Determines whether or not the error bars have the same length in both direction (top/bottom for vertical bars, left/right for horizontal bars.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean"
                }
              ]
            },
            "thickness": {
              "description": "Sets the thickness (in px) of the error bars.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 2
                }
              ]
            },
            "traceref": {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "tracerefminus": {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "type": {
              "description": "Determines the rule used to generate the error bars. If *constant`, the bar lengths are of a constant value. Set this constant in `value`. If *percent*, the bar lengths correspond to a percentage of underlying data. Set this percentage in `value`. If *sqrt*, the bar lengths correspond to the square of the underlying data. If *data*, the bar lengths are set with data set `array`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "percent",
                    "constant",
                    "sqrt",
                    "data"
                  ]
                }
              ]
            },
            "value": {
              "description": "Sets the value of either the percentage (if `type` is set to *percent*) or the constant (if `type` is set to *constant*) corresponding to the lengths of the error bars.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 10
                }
              ]
            },
            "valueminus": {
              "description": "Sets the value of either the percentage (if `type` is set to *percent*) or the constant (if `type` is set to *constant*) corresponding to the lengths of the error bars in the bottom (left) direction for vertical (horizontal) bars",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 10
                }
              ]
            },
            "visible": {
              "description": "Determines whether or not this set of error bars is visible.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean"
                }
              ]
            },
            "width": {
              "description": "Sets the width (in px) of the cross-bar at both ends of the error bars.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "histfunc": {
          "description": "Specifies the binning function used for this histogram trace. If *count*, the histogram values are computed by counting the number of values lying inside each bin. If *sum*, *avg*, *min*, *max*, the histogram values are computed using the sum, the average, the minimum or the maximum of the values lying inside each bin respectively.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "count",
                "sum",
                "avg",
                "min",
                "max"
              ],
              "default": "count"
            }
          ]
        },
        "histnorm": {
          "description": "Specifies the type of normalization used for this histogram trace. If **, the span of each bar corresponds to the number of occurrences (i.e. the number of data points lying inside the bins). If *percent* / *probability*, the span of each bar corresponds to the percentage / fraction of occurrences with respect to the total number of sample points (here, the sum of all bin HEIGHTS equals 100% / 1). If *density*, the span of each bar corresponds to the number of occurrences in a bin divided by the size of the bin interval (here, the sum of all bin AREAS equals the total number of sample points). If *probability density*, the area of each bar corresponds to the probability that an event will fall into the corresponding bin (here, the sum of all bin AREAS equals 1).",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "",
                "percent",
                "probability",
                "density",
                "probability density"
              ],
              "default": ""
            }
          ]
        },
        "hoverinfo": {
          "description": "Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired.",
          "oneOf": [
            {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "oneOf": [
                    {
                      "type": "string",
                      "enum": [
                        "all",
                        "none",
                        "skip"
                      ]
                    },
                    {
                      "type": "string",
                      "pattern": "^(x|y|z|text|name)(\\+(x|y|z|text|name))*$"
                    }
                  ],
                  "default": "all"
                }
              ]
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "oneOf": [
                      {
                        "type": "string",
                        "enum": [
                          "all",
                          "none",
                          "skip"
                        ]
                      },
                      {
                        "type": "string",
                        "pattern": "^(x|y|z|text|name)(\\+(x|y|z|text|name))*$"
                      }
                    ],
                    "default": "all"
                  }
                ]
              }
            }
          ]
        },
        "hoverinfosrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.",
          "type": "string"
        },
        "hoverlabel": {
          "type": "object",
          "properties": {
            "align": {
              "description": "Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "left",
                        "right",
                        "auto"
                      ],
                      "default": "auto"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "left",
                          "right",
                          "auto"
                        ],
                        "default": "auto"
                      }
                    ]
                  }
                }
              ]
            },
            "alignsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `align`.",
              "type": "string"
            },
            "bgcolor": {
              "description": "Sets the background color of the hover labels for this trace",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "bgcolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.",
              "type": "string"
            },
            "bordercolor": {
              "description": "Sets the border color of the hover labels for this trace.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "bordercolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.",
              "type": "string"
            },
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "colorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `color`.",
                  "type": "string"
                },
                "family": {
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "oneOf": [
                    {
                      "pattern": ".*\\S.*$",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "pattern": ".*\\S.*$",
                        "type": "string"
                      }
                    },
                    {
                      "$ref": "#/$defs/query-string"
                    }
                  ]
                },
                "familysrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `family`.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "oneOf": [
                              {
                                "type": "string",
                                "enum": [
                                  "none"
                                ]
                              },
                              {
                                "type": "string",
                                "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                              }
                            ],
                            "default": "none"
                          }
                        ]
                      }
                    }
                  ]
                },
                "linepositionsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.",
                  "type": "string"
                },
                "shadow": {
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "oneOf": [
                    {
                      "default": "none",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "default": "none",
                        "type": "string"
                      }
                    }
                  ]
                },
                "shadowsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `shadow`.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 1
                          }
                        ]
                      }
                    }
                  ]
                },
                "sizesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `size`.",
                  "type": "string"
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "italic"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "stylesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `style`.",
                  "type": "string"
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "word caps",
                              "upper",
                              "lower"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "textcasesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `textcase`.",
                  "type": "string"
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "small-caps",
                              "all-small-caps",
                              "all-petite-caps",
                              "petite-caps",
                              "unicase"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "variantsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `variant`.",
                  "type": "string"
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 1000,
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "weightsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `weight`.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "namelength": {
              "description": "Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": -1,
                      "default": 15
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "integer",
                        "minimum": -1,
                        "default": 15
                      }
                    ]
                  }
                }
              ]
            },
            "namelengthsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `namelength`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "hovertemplate": {
          "description": "Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". <https://github.com/d3/d3-format/tree/v1.4.5#d3-format> for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format> for details on the date formatting syntax. The variables available in `hovertemplate` are the ones emitted as event data described at this link <https://plotly.com/javascript/plotlyjs-events/#event-data>. Additionally, every attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variable `binNumber` Anything contained in tag `<extra>` is displayed in the secondary box, for example \"<extra>{fullData.name}</extra>\". To hide the secondary box completely, use an empty tag `<extra></extra>`.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "hovertemplatesrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.",
          "type": "string"
        },
        "hovertext": {
          "description": "Same as `text`.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "hovertextsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.",
          "type": "string"
        },
        "ids": {
          "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "idssrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `ids`.",
          "type": "string"
        },
        "insidetextanchor": {
          "description": "Determines if texts are kept at center or start/end points in `textposition` *inside* mode.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "end",
                "middle",
                "start"
              ],
              "default": "end"
            }
          ]
        },
        "insidetextfont": {
          "type": "object",
          "properties": {
            "color": {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "family": {
              "pattern": ".*\\S.*$",
              "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
              "type": "string"
            },
            "lineposition": {
              "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "oneOf": [
                    {
                      "type": "string",
                      "enum": [
                        "none"
                      ]
                    },
                    {
                      "type": "string",
                      "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                    }
                  ],
                  "default": "none"
                }
              ]
            },
            "shadow": {
              "default": "none",
              "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
              "type": "string"
            },
            "size": {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 1
                }
              ]
            },
            "style": {
              "description": "Sets whether a font should be styled with a normal or italic face from its family.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "normal",
                    "italic"
                  ],
                  "default": "normal"
                }
              ]
            },
            "textcase": {
              "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "normal",
                    "word caps",
                    "upper",
                    "lower"
                  ],
                  "default": "normal"
                }
              ]
            },
            "variant": {
              "description": "Sets the variant of the font.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "normal",
                    "small-caps",
                    "all-small-caps",
                    "all-petite-caps",
                    "petite-caps",
                    "unicase"
                  ],
                  "default": "normal"
                }
              ]
            },
            "weight": {
              "description": "Sets the weight (or boldness) of the font.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 1,
                  "maximum": 1000,
                  "default": "normal"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "legend": {
          "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "legend",
              "pattern": "^legend([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "legendgroup": {
          "default": "",
          "description": "Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items.",
          "type": "string"
        },
        "legendgrouptitle": {
          "type": "object",
          "properties": {
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "family": {
                  "pattern": ".*\\S.*$",
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                "shadow": {
                  "default": "none",
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "text": {
              "default": "",
              "description": "Sets the title of the legend group.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "legendrank": {
          "description": "Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": 1000
            }
          ]
        },
        "legendwidth": {
          "description": "Sets the width (in px or fraction) of the legend for this trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0
            }
          ]
        },
        "marker": {
          "type": "object",
          "properties": {
            "autocolorscale": {
              "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": true
                }
              ]
            },
            "cauto": {
              "description": "Determines whether or not the color domain is computed with respect to the input data (here in `marker.color`) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if in `marker.color` is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": true
                }
              ]
            },
            "cmax": {
              "description": "Sets the upper bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmin` must be set as well.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": null
                }
              ]
            },
            "cmid": {
              "description": "Sets the mid-point of the color domain by scaling `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color`. Has no effect when `marker.cauto` is `false`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": null
                }
              ]
            },
            "cmin": {
              "description": "Sets the lower bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmax` must be set as well.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": null
                }
              ]
            },
            "color": {
              "description": "Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.cmin` and `marker.cmax` if set.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "coloraxis": {
              "description": "Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "string",
                  "default": null,
                  "pattern": "/^coloraxis([2-9]|[1-9][0-9]+)?$/"
                }
              ]
            },
            "colorbar": {
              "type": "object",
              "properties": {
                "bgcolor": {
                  "description": "Sets the color of padded area.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "bordercolor": {
                  "description": "Sets the axis line color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "borderwidth": {
                  "description": "Sets the width (in px) or the border enclosing this color bar.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 0
                    }
                  ]
                },
                "dtick": {
                  "description": "Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L<f>*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M<n>* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48*"
                },
                "exponentformat": {
                  "description": "Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "none",
                        "e",
                        "E",
                        "power",
                        "SI",
                        "B"
                      ],
                      "default": "B"
                    }
                  ]
                },
                "labelalias": {
                  "default": false,
                  "description": "Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax."
                },
                "len": {
                  "description": "Sets the length of the color bar This measure excludes the padding of both ends. That is, the color bar length is this length minus the padding on both ends.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "lenmode": {
                  "description": "Determines whether this color bar's length (i.e. the measure in the color variation direction) is set in units of plot *fraction* or in *pixels. Use `len` to set the value.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "fraction",
                        "pixels"
                      ],
                      "default": "fraction"
                    }
                  ]
                },
                "minexponent": {
                  "description": "Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 3
                    }
                  ]
                },
                "nticks": {
                  "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 0,
                      "default": 0
                    }
                  ]
                },
                "orientation": {
                  "description": "Sets the orientation of the colorbar.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "h",
                        "v"
                      ],
                      "default": "v"
                    }
                  ]
                },
                "outlinecolor": {
                  "description": "Sets the axis line color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "outlinewidth": {
                  "description": "Sets the width (in px) of the axis line.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "separatethousands": {
                  "description": "If \"true\", even 4-digit integers are separated",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": false
                    }
                  ]
                },
                "showexponent": {
                  "description": "If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "showticklabels": {
                  "description": "Determines whether or not the tick labels are drawn.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                },
                "showtickprefix": {
                  "description": "If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "showticksuffix": {
                  "description": "Same as `showtickprefix` but for tick suffixes.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "thickness": {
                  "description": "Sets the thickness of the color bar This measure excludes the size of the padding, ticks and labels.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 30
                    }
                  ]
                },
                "thicknessmode": {
                  "description": "Determines whether this color bar's thickness (i.e. the measure in the constant color direction) is set in units of plot *fraction* or in *pixels*. Use `thickness` to set the value.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "fraction",
                        "pixels"
                      ],
                      "default": "pixels"
                    }
                  ]
                },
                "tick0": {
                  "description": "Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L<f>* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears."
                },
                "tickangle": {
                  "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": -180,
                      "maximum": 180,
                      "default": "auto"
                    }
                  ]
                },
                "tickcolor": {
                  "description": "Sets the tick color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "tickfont": {
                  "type": "object",
                  "properties": {
                    "color": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    "family": {
                      "pattern": ".*\\S.*$",
                      "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                      "type": "string"
                    },
                    "lineposition": {
                      "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    "shadow": {
                      "default": "none",
                      "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                      "type": "string"
                    },
                    "size": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    "style": {
                      "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "textcase": {
                      "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "variant": {
                      "description": "Sets the variant of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "weight": {
                      "description": "Sets the weight (or boldness) of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    }
                  },
                  "additionalProperties": false
                },
                "tickformat": {
                  "default": "",
                  "description": "Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*",
                  "type": "string"
                },
                "tickformatstops": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "dtickrange": {
                        "description": "range [*min*, *max*], where *min*, *max* - dtick values which describe some zoom level, it is possible to omit *min* or *max* value by passing *null*",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "array",
                            "items": {},
                            "minItems": 2,
                            "maxItems": 2
                          }
                        ]
                      },
                      "enabled": {
                        "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "boolean",
                            "default": true
                          }
                        ]
                      },
                      "name": {
                        "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.",
                        "type": "string"
                      },
                      "templateitemname": {
                        "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.",
                        "type": "string"
                      },
                      "value": {
                        "default": "",
                        "description": "string - dtickformat for described zoom level, the same as *tickformat*",
                        "type": "string"
                      }
                    },
                    "additionalProperties": false
                  },
                  "minItems": 1
                },
                "ticklabeloverflow": {
                  "description": "Determines how we handle tick labels that would overflow either the graph div or the domain of the axis. The default value for inside tick labels is *hide past domain*. In other cases the default is *hide past div*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "allow",
                        "hide past div",
                        "hide past domain"
                      ]
                    }
                  ]
                },
                "ticklabelposition": {
                  "description": "Determines where tick labels are drawn relative to the ticks. Left and right options are used when `orientation` is *h*, top and bottom when `orientation` is *v*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "outside",
                        "inside",
                        "outside top",
                        "inside top",
                        "outside left",
                        "inside left",
                        "outside right",
                        "inside right",
                        "outside bottom",
                        "inside bottom"
                      ],
                      "default": "outside"
                    }
                  ]
                },
                "ticklabelstep": {
                  "description": "Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "default": 1
                    }
                  ]
                },
                "ticklen": {
                  "description": "Sets the tick length (in px).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 5
                    }
                  ]
                },
                "tickmode": {
                  "description": "Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "auto",
                        "linear",
                        "array"
                      ]
                    }
                  ]
                },
                "tickprefix": {
                  "default": "",
                  "description": "Sets a tick label prefix.",
                  "type": "string"
                },
                "ticks": {
                  "description": "Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "outside",
                        "inside",
                        ""
                      ],
                      "default": ""
                    }
                  ]
                },
                "ticksuffix": {
                  "default": "",
                  "description": "Sets a tick label suffix.",
                  "type": "string"
                },
                "ticktext": {
                  "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "string"
                          }
                        ]
                      }
                    }
                  ]
                },
                "ticktextsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.",
                  "type": "string"
                },
                "tickvals": {
                  "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "string"
                          }
                        ]
                      }
                    }
                  ]
                },
                "tickvalssrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.",
                  "type": "string"
                },
                "tickwidth": {
                  "description": "Sets the tick width (in px).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "title": {
                  "type": "object",
                  "properties": {
                    "font": {
                      "type": "object",
                      "properties": {
                        "color": {
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "$ref": "#/$defs/color"
                            }
                          ]
                        },
                        "family": {
                          "pattern": ".*\\S.*$",
                          "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                          "type": "string"
                        },
                        "lineposition": {
                          "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "oneOf": [
                                {
                                  "type": "string",
                                  "enum": [
                                    "none"
                                  ]
                                },
                                {
                                  "type": "string",
                                  "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                                }
                              ],
                              "default": "none"
                            }
                          ]
                        },
                        "shadow": {
                          "default": "none",
                          "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                          "type": "string"
                        },
                        "size": {
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "type": "number",
                              "minimum": 1
                            }
                          ]
                        },
                        "style": {
                          "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "italic"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "textcase": {
                          "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "word caps",
                                "upper",
                                "lower"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "variant": {
                          "description": "Sets the variant of the font.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "small-caps",
                                "all-small-caps",
                                "all-petite-caps",
                                "petite-caps",
                                "unicase"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "weight": {
                          "description": "Sets the weight (or boldness) of the font.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "type": "integer",
                              "minimum": 1,
                              "maximum": 1000,
                              "default": "normal"
                            }
                          ]
                        }
                      },
                      "additionalProperties": false
                    },
                    "side": {
                      "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and  defaults to *right* when `orientation` if *h*.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "right",
                            "top",
                            "bottom"
                          ]
                        }
                      ]
                    },
                    "text": {
                      "description": "Sets the title of the color bar.",
                      "type": "string"
                    }
                  },
                  "additionalProperties": false
                },
                "x": {
                  "description": "Sets the x position with respect to `xref` of the color bar (in plot fraction). When `xref` is *paper*, defaults to 1.02 when `orientation` is *v* and 0.5 when `orientation` is *h*. When `xref` is *container*, defaults to *1* when `orientation` is *v* and 0.5 when `orientation` is *h*. Must be between *0* and *1* if `xref` is *container* and between *-2* and *3* if `xref` is *paper*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number"
                    }
                  ]
                },
                "xanchor": {
                  "description": "Sets this color bar's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the color bar. Defaults to *left* when `orientation` is *v* and *center* when `orientation` is *h*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "left",
                        "center",
                        "right"
                      ]
                    }
                  ]
                },
                "xpad": {
                  "description": "Sets the amount of padding (in px) along the x direction.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 10
                    }
                  ]
                },
                "xref": {
                  "description": "Sets the container `x` refers to. *container* spans the entire `width` of the plot. *paper* refers to the width of the plotting area only.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "container",
                        "paper"
                      ],
                      "default": "paper"
                    }
                  ]
                },
                "y": {
                  "description": "Sets the y position with respect to `yref` of the color bar (in plot fraction). When `yref` is *paper*, defaults to 0.5 when `orientation` is *v* and 1.02 when `orientation` is *h*. When `yref` is *container*, defaults to 0.5 when `orientation` is *v* and 1 when `orientation` is *h*. Must be between *0* and *1* if `yref` is *container* and between *-2* and *3* if `yref` is *paper*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number"
                    }
                  ]
                },
                "yanchor": {
                  "description": "Sets this color bar's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the color bar. Defaults to *middle* when `orientation` is *v* and *bottom* when `orientation` is *h*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "top",
                        "middle",
                        "bottom"
                      ]
                    }
                  ]
                },
                "ypad": {
                  "description": "Sets the amount of padding (in px) along the y direction.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 10
                    }
                  ]
                },
                "yref": {
                  "description": "Sets the container `y` refers to. *container* spans the entire `height` of the plot. *paper* refers to the height of the plotting area only.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "container",
                        "paper"
                      ],
                      "default": "paper"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "colorscale": {
              "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/colorscale",
                  "default": null
                }
              ]
            },
            "colorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `color`.",
              "type": "string"
            },
            "cornerradius": {
              "description": "Sets the rounding of corners. May be an integer number of pixels, or a percentage of bar width (as a string ending in %). Defaults to `layout.barcornerradius`. In stack or relative barmode, the first trace to set cornerradius is used for the whole stack."
            },
            "line": {
              "type": "object",
              "properties": {
                "autocolorscale": {
                  "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.line.colorscale`. Has an effect only if in `marker.line.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                },
                "cauto": {
                  "description": "Determines whether or not the color domain is computed with respect to the input data (here in `marker.line.color`) or the bounds set in `marker.line.cmin` and `marker.line.cmax` Has an effect only if in `marker.line.color` is set to a numerical array. Defaults to `false` when `marker.line.cmin` and `marker.line.cmax` are set by the user.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                },
                "cmax": {
                  "description": "Sets the upper bound of the color domain. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color` and if set, `marker.line.cmin` must be set as well.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "default": null
                    }
                  ]
                },
                "cmid": {
                  "description": "Sets the mid-point of the color domain by scaling `marker.line.cmin` and/or `marker.line.cmax` to be equidistant to this point. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color`. Has no effect when `marker.line.cauto` is `false`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "default": null
                    }
                  ]
                },
                "cmin": {
                  "description": "Sets the lower bound of the color domain. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color` and if set, `marker.line.cmax` must be set as well.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "default": null
                    }
                  ]
                },
                "color": {
                  "description": "Sets the marker.line color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.line.cmin` and `marker.line.cmax` if set.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "coloraxis": {
                  "description": "Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "string",
                      "default": null,
                      "pattern": "/^coloraxis([2-9]|[1-9][0-9]+)?$/"
                    }
                  ]
                },
                "colorscale": {
                  "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/colorscale",
                      "default": null
                    }
                  ]
                },
                "colorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `color`.",
                  "type": "string"
                },
                "reversescale": {
                  "description": "Reverses the color mapping if true. Has an effect only if in `marker.line.color` is set to a numerical array. If true, `marker.line.cmin` will correspond to the last color in the array and `marker.line.cmax` will correspond to the first color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": false
                    }
                  ]
                },
                "width": {
                  "description": "Sets the width (in px) of the lines bounding the marker points.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 0,
                          "default": 0
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 0,
                            "default": 0
                          }
                        ]
                      }
                    }
                  ]
                },
                "widthsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `width`.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "opacity": {
              "description": "Sets the opacity of the bars.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1,
                      "default": 1
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 1,
                        "default": 1
                      }
                    ]
                  }
                }
              ]
            },
            "opacitysrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `opacity`.",
              "type": "string"
            },
            "pattern": {
              "type": "object",
              "properties": {
                "bgcolor": {
                  "description": "When there is no colorscale sets the color of background pattern fill. Defaults to a `marker.color` background when `fillmode` is *overlay*. Otherwise, defaults to a transparent background.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "bgcolorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.",
                  "type": "string"
                },
                "fgcolor": {
                  "description": "When there is no colorscale sets the color of foreground pattern fill. Defaults to a `marker.color` background when `fillmode` is *replace*. Otherwise, defaults to dark grey or white to increase contrast with the `bgcolor`.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "fgcolorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `fgcolor`.",
                  "type": "string"
                },
                "fgopacity": {
                  "description": "Sets the opacity of the foreground pattern fill. Defaults to a 0.5 when `fillmode` is *overlay*. Otherwise, defaults to 1.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1
                    }
                  ]
                },
                "fillmode": {
                  "description": "Determines whether `marker.color` should be used as a default to `bgcolor` or a `fgcolor`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "replace",
                        "overlay"
                      ],
                      "default": "replace"
                    }
                  ]
                },
                "shape": {
                  "description": "Sets the shape of the pattern fill. By default, no pattern is used for filling the area.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "",
                            "/",
                            "\\",
                            "x",
                            "-",
                            "|",
                            "+",
                            "."
                          ],
                          "default": ""
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "",
                              "/",
                              "\\",
                              "x",
                              "-",
                              "|",
                              "+",
                              "."
                            ],
                            "default": ""
                          }
                        ]
                      }
                    }
                  ]
                },
                "shapesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `shape`.",
                  "type": "string"
                },
                "size": {
                  "description": "Sets the size of unit squares of the pattern fill in pixels, which corresponds to the interval of repetition of the pattern.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 0,
                          "default": 8
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 0,
                            "default": 8
                          }
                        ]
                      }
                    }
                  ]
                },
                "sizesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `size`.",
                  "type": "string"
                },
                "solidity": {
                  "description": "Sets the solidity of the pattern fill. Solidity is roughly the fraction of the area filled by the pattern. Solidity of 0 shows only the background color without pattern and solidty of 1 shows only the foreground color without pattern.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 0,
                          "maximum": 1,
                          "default": 0.3
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 0,
                            "maximum": 1,
                            "default": 0.3
                          }
                        ]
                      }
                    }
                  ]
                },
                "soliditysrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `solidity`.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "reversescale": {
              "description": "Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            },
            "showscale": {
              "description": "Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "metasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `meta`.",
          "type": "string"
        },
        "name": {
          "description": "Sets the trace name. The trace name appears as the legend item and on hover.",
          "type": "string"
        },
        "nbinsx": {
          "description": "Specifies the maximum number of desired bins. This value will be used in an algorithm that will decide the optimal bin size such that the histogram best visualizes the distribution of the data. Ignored if `xbins.size` is provided.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "integer",
              "minimum": 0,
              "default": 0
            }
          ]
        },
        "nbinsy": {
          "description": "Specifies the maximum number of desired bins. This value will be used in an algorithm that will decide the optimal bin size such that the histogram best visualizes the distribution of the data. Ignored if `ybins.size` is provided.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "integer",
              "minimum": 0,
              "default": 0
            }
          ]
        },
        "offsetgroup": {
          "default": "",
          "description": "Set several traces linked to the same position axis or matching axes to the same offsetgroup where bars of the same position coordinate will line up.",
          "type": "string"
        },
        "opacity": {
          "description": "Sets the opacity of the trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0,
              "maximum": 1,
              "default": 1
            }
          ]
        },
        "orientation": {
          "description": "Sets the orientation of the bars. With *v* (*h*), the value of the each bar spans along the vertical (horizontal).",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "v",
                "h"
              ]
            }
          ]
        },
        "outsidetextfont": {
          "type": "object",
          "properties": {
            "color": {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "family": {
              "pattern": ".*\\S.*$",
              "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
              "type": "string"
            },
            "lineposition": {
              "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "oneOf": [
                    {
                      "type": "string",
                      "enum": [
                        "none"
                      ]
                    },
                    {
                      "type": "string",
                      "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                    }
                  ],
                  "default": "none"
                }
              ]
            },
            "shadow": {
              "default": "none",
              "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
              "type": "string"
            },
            "size": {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 1
                }
              ]
            },
            "style": {
              "description": "Sets whether a font should be styled with a normal or italic face from its family.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "normal",
                    "italic"
                  ],
                  "default": "normal"
                }
              ]
            },
            "textcase": {
              "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "normal",
                    "word caps",
                    "upper",
                    "lower"
                  ],
                  "default": "normal"
                }
              ]
            },
            "variant": {
              "description": "Sets the variant of the font.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "normal",
                    "small-caps",
                    "all-small-caps",
                    "all-petite-caps",
                    "petite-caps",
                    "unicase"
                  ],
                  "default": "normal"
                }
              ]
            },
            "weight": {
              "description": "Sets the weight (or boldness) of the font.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 1,
                  "maximum": 1000,
                  "default": "normal"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "selected": {
          "type": "object",
          "properties": {
            "marker": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the marker color of selected points.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "opacity": {
                  "description": "Sets the marker opacity of selected points.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "textfont": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the text font color of selected points.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                }
              },
              "additionalProperties": false
            }
          },
          "additionalProperties": false
        },
        "selectedpoints": {
          "description": "Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect."
        },
        "showlegend": {
          "description": "Determines whether or not an item corresponding to this trace is shown in the legend.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "stream": {
          "type": "object",
          "properties": {
            "maxpoints": {
              "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 10000,
                  "default": 500
                }
              ]
            },
            "token": {
              "pattern": ".*\\S.*$",
              "description": "The stream id number links a data trace on a plot with a stream. See <https://chart-studio.plotly.com/settings> for more details.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "text": {
          "description": "Sets hover text elements associated with each bar. If a single string, the same string appears over all bars. If an array of string, the items are mapped in order to the this trace's coordinates.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "textangle": {
          "description": "Sets the angle of the tick labels with respect to the bar. For example, a `tickangle` of -90 draws the tick labels vertically. With *auto* the texts may automatically be rotated to fit with the maximum size in bars.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": -180,
              "maximum": 180,
              "default": "auto"
            }
          ]
        },
        "textfont": {
          "type": "object",
          "properties": {
            "color": {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "family": {
              "pattern": ".*\\S.*$",
              "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
              "type": "string"
            },
            "lineposition": {
              "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "oneOf": [
                    {
                      "type": "string",
                      "enum": [
                        "none"
                      ]
                    },
                    {
                      "type": "string",
                      "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                    }
                  ],
                  "default": "none"
                }
              ]
            },
            "shadow": {
              "default": "none",
              "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
              "type": "string"
            },
            "size": {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 1
                }
              ]
            },
            "style": {
              "description": "Sets whether a font should be styled with a normal or italic face from its family.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "normal",
                    "italic"
                  ],
                  "default": "normal"
                }
              ]
            },
            "textcase": {
              "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "normal",
                    "word caps",
                    "upper",
                    "lower"
                  ],
                  "default": "normal"
                }
              ]
            },
            "variant": {
              "description": "Sets the variant of the font.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "normal",
                    "small-caps",
                    "all-small-caps",
                    "all-petite-caps",
                    "petite-caps",
                    "unicase"
                  ],
                  "default": "normal"
                }
              ]
            },
            "weight": {
              "description": "Sets the weight (or boldness) of the font.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 1,
                  "maximum": 1000,
                  "default": "normal"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "textposition": {
          "description": "Specifies the location of the `text`. *inside* positions `text` inside, next to the bar end (rotated and scaled if needed). *outside* positions `text` outside, next to the bar end (scaled if needed), unless there is another bar stacked on this one, then the text gets pushed inside. *auto* tries to position `text` inside the bar, but if the bar is too small and no bar is stacked on this one the text is moved outside. If *none*, no text appears.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "inside",
                "outside",
                "auto",
                "none"
              ],
              "default": "auto"
            }
          ]
        },
        "textsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `text`.",
          "type": "string"
        },
        "texttemplate": {
          "default": "",
          "description": "Template string used for rendering the information text that appear on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". <https://github.com/d3/d3-format/tree/v1.4.5#d3-format> for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format> for details on the date formatting syntax. Every attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `label` and `value`.",
          "type": "string"
        },
        "uid": {
          "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.",
          "type": "string"
        },
        "uirevision": {
          "description": "Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves."
        },
        "unselected": {
          "type": "object",
          "properties": {
            "marker": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the marker color of unselected points, applied only when a selection exists.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "opacity": {
                  "description": "Sets the marker opacity of unselected points, applied only when a selection exists.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "textfont": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the text font color of unselected points, applied only when a selection exists.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                }
              },
              "additionalProperties": false
            }
          },
          "additionalProperties": false
        },
        "visible": {
          "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                true,
                false,
                "legendonly"
              ],
              "default": true
            }
          ]
        },
        "x": {
          "description": "Sets the sample data to be binned on the x axis.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "xaxis": {
          "description": "Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "x",
              "pattern": "^x([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "xbins": {
          "type": "object",
          "properties": {
            "end": {
              "description": "Sets the end value for the x axis bins. The last bin may not end exactly at this value, we increment the bin edge by `size` from `start` until we reach or exceed `end`. Defaults to the maximum data value. Like `start`, for dates use a date string, and for category data `end` is based on the category serial numbers."
            },
            "size": {
              "description": "Sets the size of each x axis bin. Default behavior: If `nbinsx` is 0 or omitted, we choose a nice round bin size such that the number of bins is about the same as the typical number of samples in each bin. If `nbinsx` is provided, we choose a nice round bin size giving no more than that many bins. For date data, use milliseconds or *M<n>* for months, as in `axis.dtick`. For category data, the number of categories to bin together (always defaults to 1). If multiple non-overlaying histograms share a subplot, the first explicit `size` is used and all others discarded. If no `size` is provided,the sample data from all traces is combined to determine `size` as described above."
            },
            "start": {
              "description": "Sets the starting value for the x axis bins. Defaults to the minimum data value, shifted down if necessary to make nice round values and to remove ambiguous bin edges. For example, if most of the data is integers we shift the bin edges 0.5 down, so a `size` of 5 would have a default `start` of -0.5, so it is clear that 0-4 are in the first bin, 5-9 in the second, but continuous data gets a start of 0 and bins [0,5), [5,10) etc. Dates behave similarly, and `start` should be a date string. For category data, `start` is based on the category serial numbers, and defaults to -0.5. If multiple non-overlaying histograms share a subplot, the first explicit `start` is used exactly and all others are shifted down (if necessary) to differ from that one by an integer number of bins."
            }
          },
          "additionalProperties": false
        },
        "xcalendar": {
          "description": "Sets the calendar system to use with `x` date data.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "chinese",
                "coptic",
                "discworld",
                "ethiopian",
                "gregorian",
                "hebrew",
                "islamic",
                "jalali",
                "julian",
                "mayan",
                "nanakshahi",
                "nepali",
                "persian",
                "taiwan",
                "thai",
                "ummalqura"
              ],
              "default": "gregorian"
            }
          ]
        },
        "xhoverformat": {
          "default": "",
          "description": "Sets the hover text formatting rulefor `x`  using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.",
          "type": "string"
        },
        "xsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `x`.",
          "type": "string"
        },
        "y": {
          "description": "Sets the sample data to be binned on the y axis.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "yaxis": {
          "description": "Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "y",
              "pattern": "^y([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "ybins": {
          "type": "object",
          "properties": {
            "end": {
              "description": "Sets the end value for the y axis bins. The last bin may not end exactly at this value, we increment the bin edge by `size` from `start` until we reach or exceed `end`. Defaults to the maximum data value. Like `start`, for dates use a date string, and for category data `end` is based on the category serial numbers."
            },
            "size": {
              "description": "Sets the size of each y axis bin. Default behavior: If `nbinsy` is 0 or omitted, we choose a nice round bin size such that the number of bins is about the same as the typical number of samples in each bin. If `nbinsy` is provided, we choose a nice round bin size giving no more than that many bins. For date data, use milliseconds or *M<n>* for months, as in `axis.dtick`. For category data, the number of categories to bin together (always defaults to 1). If multiple non-overlaying histograms share a subplot, the first explicit `size` is used and all others discarded. If no `size` is provided,the sample data from all traces is combined to determine `size` as described above."
            },
            "start": {
              "description": "Sets the starting value for the y axis bins. Defaults to the minimum data value, shifted down if necessary to make nice round values and to remove ambiguous bin edges. For example, if most of the data is integers we shift the bin edges 0.5 down, so a `size` of 5 would have a default `start` of -0.5, so it is clear that 0-4 are in the first bin, 5-9 in the second, but continuous data gets a start of 0 and bins [0,5), [5,10) etc. Dates behave similarly, and `start` should be a date string. For category data, `start` is based on the category serial numbers, and defaults to -0.5. If multiple non-overlaying histograms share a subplot, the first explicit `start` is used exactly and all others are shifted down (if necessary) to differ from that one by an integer number of bins."
            }
          },
          "additionalProperties": false
        },
        "ycalendar": {
          "description": "Sets the calendar system to use with `y` date data.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "chinese",
                "coptic",
                "discworld",
                "ethiopian",
                "gregorian",
                "hebrew",
                "islamic",
                "jalali",
                "julian",
                "mayan",
                "nanakshahi",
                "nepali",
                "persian",
                "taiwan",
                "thai",
                "ummalqura"
              ],
              "default": "gregorian"
            }
          ]
        },
        "yhoverformat": {
          "default": "",
          "description": "Sets the hover text formatting rulefor `y`  using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.",
          "type": "string"
        },
        "ysrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `y`.",
          "type": "string"
        },
        "zorder": {
          "description": "Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "integer",
              "default": 0
            }
          ]
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false
    },
    "Histogram2d": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "$id": "https://visivo.io/trace-properties/schema",
      "description": "A schema to validate plotly trace properties",
      "type": "object",
      "properties": {
        "type": {
          "const": "histogram2d"
        },
        "autobinx": {
          "description": "Obsolete: since v1.42 each bin attribute is auto-determined separately and `autobinx` is not needed. However, we accept `autobinx: true` or `false` and will update `xbins` accordingly before deleting `autobinx` from the trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": null
            }
          ]
        },
        "autobiny": {
          "description": "Obsolete: since v1.42 each bin attribute is auto-determined separately and `autobiny` is not needed. However, we accept `autobiny: true` or `false` and will update `ybins` accordingly before deleting `autobiny` from the trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": null
            }
          ]
        },
        "autocolorscale": {
          "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": false
            }
          ]
        },
        "bingroup": {
          "default": "",
          "description": "Set the `xbingroup` and `ybingroup` default prefix For example, setting a `bingroup` of *1* on two histogram2d traces will make them their x-bins and y-bins match separately.",
          "type": "string"
        },
        "coloraxis": {
          "description": "Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": null,
              "pattern": "/^coloraxis([2-9]|[1-9][0-9]+)?$/"
            }
          ]
        },
        "colorbar": {
          "type": "object",
          "properties": {
            "bgcolor": {
              "description": "Sets the color of padded area.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "bordercolor": {
              "description": "Sets the axis line color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "borderwidth": {
              "description": "Sets the width (in px) or the border enclosing this color bar.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "dtick": {
              "description": "Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L<f>*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M<n>* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48*"
            },
            "exponentformat": {
              "description": "Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "none",
                    "e",
                    "E",
                    "power",
                    "SI",
                    "B"
                  ],
                  "default": "B"
                }
              ]
            },
            "labelalias": {
              "default": false,
              "description": "Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax."
            },
            "len": {
              "description": "Sets the length of the color bar This measure excludes the padding of both ends. That is, the color bar length is this length minus the padding on both ends.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 1
                }
              ]
            },
            "lenmode": {
              "description": "Determines whether this color bar's length (i.e. the measure in the color variation direction) is set in units of plot *fraction* or in *pixels. Use `len` to set the value.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "fraction",
                    "pixels"
                  ],
                  "default": "fraction"
                }
              ]
            },
            "minexponent": {
              "description": "Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 3
                }
              ]
            },
            "nticks": {
              "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "orientation": {
              "description": "Sets the orientation of the colorbar.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "h",
                    "v"
                  ],
                  "default": "v"
                }
              ]
            },
            "outlinecolor": {
              "description": "Sets the axis line color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "outlinewidth": {
              "description": "Sets the width (in px) of the axis line.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 1
                }
              ]
            },
            "separatethousands": {
              "description": "If \"true\", even 4-digit integers are separated",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            },
            "showexponent": {
              "description": "If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "all",
                    "first",
                    "last",
                    "none"
                  ],
                  "default": "all"
                }
              ]
            },
            "showticklabels": {
              "description": "Determines whether or not the tick labels are drawn.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": true
                }
              ]
            },
            "showtickprefix": {
              "description": "If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "all",
                    "first",
                    "last",
                    "none"
                  ],
                  "default": "all"
                }
              ]
            },
            "showticksuffix": {
              "description": "Same as `showtickprefix` but for tick suffixes.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "all",
                    "first",
                    "last",
                    "none"
                  ],
                  "default": "all"
                }
              ]
            },
            "thickness": {
              "description": "Sets the thickness of the color bar This measure excludes the size of the padding, ticks and labels.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 30
                }
              ]
            },
            "thicknessmode": {
              "description": "Determines whether this color bar's thickness (i.e. the measure in the constant color direction) is set in units of plot *fraction* or in *pixels*. Use `thickness` to set the value.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "fraction",
                    "pixels"
                  ],
                  "default": "pixels"
                }
              ]
            },
            "tick0": {
              "description": "Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L<f>* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears."
            },
            "tickangle": {
              "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": -180,
                  "maximum": 180,
                  "default": "auto"
                }
              ]
            },
            "tickcolor": {
              "description": "Sets the tick color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "tickfont": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "family": {
                  "pattern": ".*\\S.*$",
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                "shadow": {
                  "default": "none",
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "tickformat": {
              "default": "",
              "description": "Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*",
              "type": "string"
            },
            "tickformatstops": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "dtickrange": {
                    "description": "range [*min*, *max*], where *min*, *max* - dtick values which describe some zoom level, it is possible to omit *min* or *max* value by passing *null*",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "array",
                        "items": {},
                        "minItems": 2,
                        "maxItems": 2
                      }
                    ]
                  },
                  "enabled": {
                    "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "boolean",
                        "default": true
                      }
                    ]
                  },
                  "name": {
                    "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.",
                    "type": "string"
                  },
                  "templateitemname": {
                    "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.",
                    "type": "string"
                  },
                  "value": {
                    "default": "",
                    "description": "string - dtickformat for described zoom level, the same as *tickformat*",
                    "type": "string"
                  }
                },
                "additionalProperties": false
              },
              "minItems": 1
            },
            "ticklabeloverflow": {
              "description": "Determines how we handle tick labels that would overflow either the graph div or the domain of the axis. The default value for inside tick labels is *hide past domain*. In other cases the default is *hide past div*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "allow",
                    "hide past div",
                    "hide past domain"
                  ]
                }
              ]
            },
            "ticklabelposition": {
              "description": "Determines where tick labels are drawn relative to the ticks. Left and right options are used when `orientation` is *h*, top and bottom when `orientation` is *v*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "outside",
                    "inside",
                    "outside top",
                    "inside top",
                    "outside left",
                    "inside left",
                    "outside right",
                    "inside right",
                    "outside bottom",
                    "inside bottom"
                  ],
                  "default": "outside"
                }
              ]
            },
            "ticklabelstep": {
              "description": "Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 1,
                  "default": 1
                }
              ]
            },
            "ticklen": {
              "description": "Sets the tick length (in px).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 5
                }
              ]
            },
            "tickmode": {
              "description": "Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "auto",
                    "linear",
                    "array"
                  ]
                }
              ]
            },
            "tickprefix": {
              "default": "",
              "description": "Sets a tick label prefix.",
              "type": "string"
            },
            "ticks": {
              "description": "Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "outside",
                    "inside",
                    ""
                  ],
                  "default": ""
                }
              ]
            },
            "ticksuffix": {
              "default": "",
              "description": "Sets a tick label suffix.",
              "type": "string"
            },
            "ticktext": {
              "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  }
                }
              ]
            },
            "ticktextsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.",
              "type": "string"
            },
            "tickvals": {
              "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  }
                }
              ]
            },
            "tickvalssrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.",
              "type": "string"
            },
            "tickwidth": {
              "description": "Sets the tick width (in px).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 1
                }
              ]
            },
            "title": {
              "type": "object",
              "properties": {
                "font": {
                  "type": "object",
                  "properties": {
                    "color": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    "family": {
                      "pattern": ".*\\S.*$",
                      "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                      "type": "string"
                    },
                    "lineposition": {
                      "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    "shadow": {
                      "default": "none",
                      "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                      "type": "string"
                    },
                    "size": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    "style": {
                      "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "textcase": {
                      "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "variant": {
                      "description": "Sets the variant of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "weight": {
                      "description": "Sets the weight (or boldness) of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    }
                  },
                  "additionalProperties": false
                },
                "side": {
                  "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and  defaults to *right* when `orientation` if *h*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "right",
                        "top",
                        "bottom"
                      ]
                    }
                  ]
                },
                "text": {
                  "description": "Sets the title of the color bar.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "x": {
              "description": "Sets the x position with respect to `xref` of the color bar (in plot fraction). When `xref` is *paper*, defaults to 1.02 when `orientation` is *v* and 0.5 when `orientation` is *h*. When `xref` is *container*, defaults to *1* when `orientation` is *v* and 0.5 when `orientation` is *h*. Must be between *0* and *1* if `xref` is *container* and between *-2* and *3* if `xref` is *paper*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number"
                }
              ]
            },
            "xanchor": {
              "description": "Sets this color bar's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the color bar. Defaults to *left* when `orientation` is *v* and *center* when `orientation` is *h*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "left",
                    "center",
                    "right"
                  ]
                }
              ]
            },
            "xpad": {
              "description": "Sets the amount of padding (in px) along the x direction.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 10
                }
              ]
            },
            "xref": {
              "description": "Sets the container `x` refers to. *container* spans the entire `width` of the plot. *paper* refers to the width of the plotting area only.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "container",
                    "paper"
                  ],
                  "default": "paper"
                }
              ]
            },
            "y": {
              "description": "Sets the y position with respect to `yref` of the color bar (in plot fraction). When `yref` is *paper*, defaults to 0.5 when `orientation` is *v* and 1.02 when `orientation` is *h*. When `yref` is *container*, defaults to 0.5 when `orientation` is *v* and 1 when `orientation` is *h*. Must be between *0* and *1* if `yref` is *container* and between *-2* and *3* if `yref` is *paper*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number"
                }
              ]
            },
            "yanchor": {
              "description": "Sets this color bar's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the color bar. Defaults to *middle* when `orientation` is *v* and *bottom* when `orientation` is *h*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "top",
                    "middle",
                    "bottom"
                  ]
                }
              ]
            },
            "ypad": {
              "description": "Sets the amount of padding (in px) along the y direction.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 10
                }
              ]
            },
            "yref": {
              "description": "Sets the container `y` refers to. *container* spans the entire `height` of the plot. *paper* refers to the height of the plotting area only.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "container",
                    "paper"
                  ],
                  "default": "paper"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "colorscale": {
          "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "$ref": "#/$defs/colorscale",
              "default": null
            }
          ]
        },
        "customdata": {
          "description": "Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "customdatasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `customdata`.",
          "type": "string"
        },
        "histfunc": {
          "description": "Specifies the binning function used for this histogram trace. If *count*, the histogram values are computed by counting the number of values lying inside each bin. If *sum*, *avg*, *min*, *max*, the histogram values are computed using the sum, the average, the minimum or the maximum of the values lying inside each bin respectively.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "count",
                "sum",
                "avg",
                "min",
                "max"
              ],
              "default": "count"
            }
          ]
        },
        "histnorm": {
          "description": "Specifies the type of normalization used for this histogram trace. If **, the span of each bar corresponds to the number of occurrences (i.e. the number of data points lying inside the bins). If *percent* / *probability*, the span of each bar corresponds to the percentage / fraction of occurrences with respect to the total number of sample points (here, the sum of all bin HEIGHTS equals 100% / 1). If *density*, the span of each bar corresponds to the number of occurrences in a bin divided by the size of the bin interval (here, the sum of all bin AREAS equals the total number of sample points). If *probability density*, the area of each bar corresponds to the probability that an event will fall into the corresponding bin (here, the sum of all bin AREAS equals 1).",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "",
                "percent",
                "probability",
                "density",
                "probability density"
              ],
              "default": ""
            }
          ]
        },
        "hoverinfo": {
          "description": "Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired.",
          "oneOf": [
            {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "oneOf": [
                    {
                      "type": "string",
                      "enum": [
                        "all",
                        "none",
                        "skip"
                      ]
                    },
                    {
                      "type": "string",
                      "pattern": "^(x|y|z|text|name)(\\+(x|y|z|text|name))*$"
                    }
                  ],
                  "default": "all"
                }
              ]
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "oneOf": [
                      {
                        "type": "string",
                        "enum": [
                          "all",
                          "none",
                          "skip"
                        ]
                      },
                      {
                        "type": "string",
                        "pattern": "^(x|y|z|text|name)(\\+(x|y|z|text|name))*$"
                      }
                    ],
                    "default": "all"
                  }
                ]
              }
            }
          ]
        },
        "hoverinfosrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.",
          "type": "string"
        },
        "hoverlabel": {
          "type": "object",
          "properties": {
            "align": {
              "description": "Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "left",
                        "right",
                        "auto"
                      ],
                      "default": "auto"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "left",
                          "right",
                          "auto"
                        ],
                        "default": "auto"
                      }
                    ]
                  }
                }
              ]
            },
            "alignsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `align`.",
              "type": "string"
            },
            "bgcolor": {
              "description": "Sets the background color of the hover labels for this trace",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "bgcolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.",
              "type": "string"
            },
            "bordercolor": {
              "description": "Sets the border color of the hover labels for this trace.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "bordercolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.",
              "type": "string"
            },
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "colorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `color`.",
                  "type": "string"
                },
                "family": {
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "oneOf": [
                    {
                      "pattern": ".*\\S.*$",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "pattern": ".*\\S.*$",
                        "type": "string"
                      }
                    },
                    {
                      "$ref": "#/$defs/query-string"
                    }
                  ]
                },
                "familysrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `family`.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "oneOf": [
                              {
                                "type": "string",
                                "enum": [
                                  "none"
                                ]
                              },
                              {
                                "type": "string",
                                "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                              }
                            ],
                            "default": "none"
                          }
                        ]
                      }
                    }
                  ]
                },
                "linepositionsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.",
                  "type": "string"
                },
                "shadow": {
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "oneOf": [
                    {
                      "default": "none",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "default": "none",
                        "type": "string"
                      }
                    }
                  ]
                },
                "shadowsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `shadow`.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 1
                          }
                        ]
                      }
                    }
                  ]
                },
                "sizesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `size`.",
                  "type": "string"
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "italic"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "stylesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `style`.",
                  "type": "string"
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "word caps",
                              "upper",
                              "lower"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "textcasesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `textcase`.",
                  "type": "string"
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "small-caps",
                              "all-small-caps",
                              "all-petite-caps",
                              "petite-caps",
                              "unicase"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "variantsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `variant`.",
                  "type": "string"
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 1000,
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "weightsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `weight`.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "namelength": {
              "description": "Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": -1,
                      "default": 15
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "integer",
                        "minimum": -1,
                        "default": 15
                      }
                    ]
                  }
                }
              ]
            },
            "namelengthsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `namelength`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "hovertemplate": {
          "description": "Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". <https://github.com/d3/d3-format/tree/v1.4.5#d3-format> for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format> for details on the date formatting syntax. The variables available in `hovertemplate` are the ones emitted as event data described at this link <https://plotly.com/javascript/plotlyjs-events/#event-data>. Additionally, every attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variable `z` Anything contained in tag `<extra>` is displayed in the secondary box, for example \"<extra>{fullData.name}</extra>\". To hide the secondary box completely, use an empty tag `<extra></extra>`.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "hovertemplatesrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.",
          "type": "string"
        },
        "ids": {
          "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "idssrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `ids`.",
          "type": "string"
        },
        "legend": {
          "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "legend",
              "pattern": "^legend([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "legendgroup": {
          "default": "",
          "description": "Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items.",
          "type": "string"
        },
        "legendgrouptitle": {
          "type": "object",
          "properties": {
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "family": {
                  "pattern": ".*\\S.*$",
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                "shadow": {
                  "default": "none",
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "text": {
              "default": "",
              "description": "Sets the title of the legend group.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "legendrank": {
          "description": "Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": 1000
            }
          ]
        },
        "legendwidth": {
          "description": "Sets the width (in px or fraction) of the legend for this trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0
            }
          ]
        },
        "marker": {
          "type": "object",
          "properties": {
            "color": {
              "description": "Sets the aggregation data.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  }
                }
              ]
            },
            "colorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `color`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "metasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `meta`.",
          "type": "string"
        },
        "name": {
          "description": "Sets the trace name. The trace name appears as the legend item and on hover.",
          "type": "string"
        },
        "nbinsx": {
          "description": "Specifies the maximum number of desired bins. This value will be used in an algorithm that will decide the optimal bin size such that the histogram best visualizes the distribution of the data. Ignored if `xbins.size` is provided.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "integer",
              "minimum": 0,
              "default": 0
            }
          ]
        },
        "nbinsy": {
          "description": "Specifies the maximum number of desired bins. This value will be used in an algorithm that will decide the optimal bin size such that the histogram best visualizes the distribution of the data. Ignored if `ybins.size` is provided.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "integer",
              "minimum": 0,
              "default": 0
            }
          ]
        },
        "opacity": {
          "description": "Sets the opacity of the trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0,
              "maximum": 1,
              "default": 1
            }
          ]
        },
        "reversescale": {
          "description": "Reverses the color mapping if true. If true, `zmin` will correspond to the last color in the array and `zmax` will correspond to the first color.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": false
            }
          ]
        },
        "showlegend": {
          "description": "Determines whether or not an item corresponding to this trace is shown in the legend.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": false
            }
          ]
        },
        "showscale": {
          "description": "Determines whether or not a colorbar is displayed for this trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "stream": {
          "type": "object",
          "properties": {
            "maxpoints": {
              "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 10000,
                  "default": 500
                }
              ]
            },
            "token": {
              "pattern": ".*\\S.*$",
              "description": "The stream id number links a data trace on a plot with a stream. See <https://chart-studio.plotly.com/settings> for more details.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "textfont": {
          "type": "object",
          "properties": {
            "color": {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "family": {
              "pattern": ".*\\S.*$",
              "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
              "type": "string"
            },
            "lineposition": {
              "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "oneOf": [
                    {
                      "type": "string",
                      "enum": [
                        "none"
                      ]
                    },
                    {
                      "type": "string",
                      "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                    }
                  ],
                  "default": "none"
                }
              ]
            },
            "shadow": {
              "default": "none",
              "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
              "type": "string"
            },
            "size": {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 1,
                  "default": "auto"
                }
              ]
            },
            "style": {
              "description": "Sets whether a font should be styled with a normal or italic face from its family.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "normal",
                    "italic"
                  ],
                  "default": "normal"
                }
              ]
            },
            "textcase": {
              "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "normal",
                    "word caps",
                    "upper",
                    "lower"
                  ],
                  "default": "normal"
                }
              ]
            },
            "variant": {
              "description": "Sets the variant of the font.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "normal",
                    "small-caps",
                    "all-small-caps",
                    "all-petite-caps",
                    "petite-caps",
                    "unicase"
                  ],
                  "default": "normal"
                }
              ]
            },
            "weight": {
              "description": "Sets the weight (or boldness) of the font.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 1,
                  "maximum": 1000,
                  "default": "normal"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "texttemplate": {
          "default": "",
          "description": "Template string used for rendering the information text that appear on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". <https://github.com/d3/d3-format/tree/v1.4.5#d3-format> for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format> for details on the date formatting syntax. Every attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variable `z`",
          "type": "string"
        },
        "uid": {
          "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.",
          "type": "string"
        },
        "uirevision": {
          "description": "Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves."
        },
        "visible": {
          "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                true,
                false,
                "legendonly"
              ],
              "default": true
            }
          ]
        },
        "x": {
          "description": "Sets the sample data to be binned on the x axis.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "xaxis": {
          "description": "Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "x",
              "pattern": "^x([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "xbingroup": {
          "default": "",
          "description": "Set a group of histogram traces which will have compatible x-bin settings. Using `xbingroup`, histogram2d and histogram2dcontour traces  (on axes of the same axis type) can have compatible x-bin settings. Note that the same `xbingroup` value can be used to set (1D) histogram `bingroup`",
          "type": "string"
        },
        "xbins": {
          "type": "object",
          "properties": {
            "end": {
              "description": "Sets the end value for the x axis bins. The last bin may not end exactly at this value, we increment the bin edge by `size` from `start` until we reach or exceed `end`. Defaults to the maximum data value. Like `start`, for dates use a date string, and for category data `end` is based on the category serial numbers."
            },
            "size": {
              "description": "Sets the size of each x axis bin. Default behavior: If `nbinsx` is 0 or omitted, we choose a nice round bin size such that the number of bins is about the same as the typical number of samples in each bin. If `nbinsx` is provided, we choose a nice round bin size giving no more than that many bins. For date data, use milliseconds or *M<n>* for months, as in `axis.dtick`. For category data, the number of categories to bin together (always defaults to 1). "
            },
            "start": {
              "description": "Sets the starting value for the x axis bins. Defaults to the minimum data value, shifted down if necessary to make nice round values and to remove ambiguous bin edges. For example, if most of the data is integers we shift the bin edges 0.5 down, so a `size` of 5 would have a default `start` of -0.5, so it is clear that 0-4 are in the first bin, 5-9 in the second, but continuous data gets a start of 0 and bins [0,5), [5,10) etc. Dates behave similarly, and `start` should be a date string. For category data, `start` is based on the category serial numbers, and defaults to -0.5. "
            }
          },
          "additionalProperties": false
        },
        "xcalendar": {
          "description": "Sets the calendar system to use with `x` date data.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "chinese",
                "coptic",
                "discworld",
                "ethiopian",
                "gregorian",
                "hebrew",
                "islamic",
                "jalali",
                "julian",
                "mayan",
                "nanakshahi",
                "nepali",
                "persian",
                "taiwan",
                "thai",
                "ummalqura"
              ],
              "default": "gregorian"
            }
          ]
        },
        "xgap": {
          "description": "Sets the horizontal gap (in pixels) between bricks.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0,
              "default": 0
            }
          ]
        },
        "xhoverformat": {
          "default": "",
          "description": "Sets the hover text formatting rulefor `x`  using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.",
          "type": "string"
        },
        "xsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `x`.",
          "type": "string"
        },
        "y": {
          "description": "Sets the sample data to be binned on the y axis.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "yaxis": {
          "description": "Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "y",
              "pattern": "^y([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "ybingroup": {
          "default": "",
          "description": "Set a group of histogram traces which will have compatible y-bin settings. Using `ybingroup`, histogram2d and histogram2dcontour traces  (on axes of the same axis type) can have compatible y-bin settings. Note that the same `ybingroup` value can be used to set (1D) histogram `bingroup`",
          "type": "string"
        },
        "ybins": {
          "type": "object",
          "properties": {
            "end": {
              "description": "Sets the end value for the y axis bins. The last bin may not end exactly at this value, we increment the bin edge by `size` from `start` until we reach or exceed `end`. Defaults to the maximum data value. Like `start`, for dates use a date string, and for category data `end` is based on the category serial numbers."
            },
            "size": {
              "description": "Sets the size of each y axis bin. Default behavior: If `nbinsy` is 0 or omitted, we choose a nice round bin size such that the number of bins is about the same as the typical number of samples in each bin. If `nbinsy` is provided, we choose a nice round bin size giving no more than that many bins. For date data, use milliseconds or *M<n>* for months, as in `axis.dtick`. For category data, the number of categories to bin together (always defaults to 1). "
            },
            "start": {
              "description": "Sets the starting value for the y axis bins. Defaults to the minimum data value, shifted down if necessary to make nice round values and to remove ambiguous bin edges. For example, if most of the data is integers we shift the bin edges 0.5 down, so a `size` of 5 would have a default `start` of -0.5, so it is clear that 0-4 are in the first bin, 5-9 in the second, but continuous data gets a start of 0 and bins [0,5), [5,10) etc. Dates behave similarly, and `start` should be a date string. For category data, `start` is based on the category serial numbers, and defaults to -0.5. "
            }
          },
          "additionalProperties": false
        },
        "ycalendar": {
          "description": "Sets the calendar system to use with `y` date data.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "chinese",
                "coptic",
                "discworld",
                "ethiopian",
                "gregorian",
                "hebrew",
                "islamic",
                "jalali",
                "julian",
                "mayan",
                "nanakshahi",
                "nepali",
                "persian",
                "taiwan",
                "thai",
                "ummalqura"
              ],
              "default": "gregorian"
            }
          ]
        },
        "ygap": {
          "description": "Sets the vertical gap (in pixels) between bricks.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0,
              "default": 0
            }
          ]
        },
        "yhoverformat": {
          "default": "",
          "description": "Sets the hover text formatting rulefor `y`  using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.",
          "type": "string"
        },
        "ysrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `y`.",
          "type": "string"
        },
        "z": {
          "description": "Sets the aggregation data.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "zauto": {
          "description": "Determines whether or not the color domain is computed with respect to the input data (here in `z`) or the bounds set in `zmin` and `zmax` Defaults to `false` when `zmin` and `zmax` are set by the user.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "zhoverformat": {
          "default": "",
          "description": "Sets the hover text formatting rulefor `z`  using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By> default the values are formatted using generic number format.",
          "type": "string"
        },
        "zmax": {
          "description": "Sets the upper bound of the color domain. Value should have the same units as in `z` and if set, `zmin` must be set as well.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": null
            }
          ]
        },
        "zmid": {
          "description": "Sets the mid-point of the color domain by scaling `zmin` and/or `zmax` to be equidistant to this point. Value should have the same units as in `z`. Has no effect when `zauto` is `false`.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": null
            }
          ]
        },
        "zmin": {
          "description": "Sets the lower bound of the color domain. Value should have the same units as in `z` and if set, `zmax` must be set as well.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": null
            }
          ]
        },
        "zsmooth": {
          "description": "Picks a smoothing algorithm use to smooth `z` data.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "fast",
                "best",
                false
              ],
              "default": false
            }
          ]
        },
        "zsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `z`.",
          "type": "string"
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false
    },
    "Histogram2dcontour": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "$id": "https://visivo.io/trace-properties/schema",
      "description": "A schema to validate plotly trace properties",
      "type": "object",
      "properties": {
        "type": {
          "const": "histogram2dcontour"
        },
        "autobinx": {
          "description": "Obsolete: since v1.42 each bin attribute is auto-determined separately and `autobinx` is not needed. However, we accept `autobinx: true` or `false` and will update `xbins` accordingly before deleting `autobinx` from the trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": null
            }
          ]
        },
        "autobiny": {
          "description": "Obsolete: since v1.42 each bin attribute is auto-determined separately and `autobiny` is not needed. However, we accept `autobiny: true` or `false` and will update `ybins` accordingly before deleting `autobiny` from the trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": null
            }
          ]
        },
        "autocolorscale": {
          "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "autocontour": {
          "description": "Determines whether or not the contour level attributes are picked by an algorithm. If *true*, the number of contour levels can be set in `ncontours`. If *false*, set the contour level attributes in `contours`.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "bingroup": {
          "default": "",
          "description": "Set the `xbingroup` and `ybingroup` default prefix For example, setting a `bingroup` of *1* on two histogram2d traces will make them their x-bins and y-bins match separately.",
          "type": "string"
        },
        "coloraxis": {
          "description": "Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": null,
              "pattern": "/^coloraxis([2-9]|[1-9][0-9]+)?$/"
            }
          ]
        },
        "colorbar": {
          "type": "object",
          "properties": {
            "bgcolor": {
              "description": "Sets the color of padded area.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "bordercolor": {
              "description": "Sets the axis line color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "borderwidth": {
              "description": "Sets the width (in px) or the border enclosing this color bar.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "dtick": {
              "description": "Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L<f>*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M<n>* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48*"
            },
            "exponentformat": {
              "description": "Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "none",
                    "e",
                    "E",
                    "power",
                    "SI",
                    "B"
                  ],
                  "default": "B"
                }
              ]
            },
            "labelalias": {
              "default": false,
              "description": "Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax."
            },
            "len": {
              "description": "Sets the length of the color bar This measure excludes the padding of both ends. That is, the color bar length is this length minus the padding on both ends.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 1
                }
              ]
            },
            "lenmode": {
              "description": "Determines whether this color bar's length (i.e. the measure in the color variation direction) is set in units of plot *fraction* or in *pixels. Use `len` to set the value.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "fraction",
                    "pixels"
                  ],
                  "default": "fraction"
                }
              ]
            },
            "minexponent": {
              "description": "Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 3
                }
              ]
            },
            "nticks": {
              "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "orientation": {
              "description": "Sets the orientation of the colorbar.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "h",
                    "v"
                  ],
                  "default": "v"
                }
              ]
            },
            "outlinecolor": {
              "description": "Sets the axis line color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "outlinewidth": {
              "description": "Sets the width (in px) of the axis line.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 1
                }
              ]
            },
            "separatethousands": {
              "description": "If \"true\", even 4-digit integers are separated",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            },
            "showexponent": {
              "description": "If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "all",
                    "first",
                    "last",
                    "none"
                  ],
                  "default": "all"
                }
              ]
            },
            "showticklabels": {
              "description": "Determines whether or not the tick labels are drawn.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": true
                }
              ]
            },
            "showtickprefix": {
              "description": "If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "all",
                    "first",
                    "last",
                    "none"
                  ],
                  "default": "all"
                }
              ]
            },
            "showticksuffix": {
              "description": "Same as `showtickprefix` but for tick suffixes.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "all",
                    "first",
                    "last",
                    "none"
                  ],
                  "default": "all"
                }
              ]
            },
            "thickness": {
              "description": "Sets the thickness of the color bar This measure excludes the size of the padding, ticks and labels.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 30
                }
              ]
            },
            "thicknessmode": {
              "description": "Determines whether this color bar's thickness (i.e. the measure in the constant color direction) is set in units of plot *fraction* or in *pixels*. Use `thickness` to set the value.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "fraction",
                    "pixels"
                  ],
                  "default": "pixels"
                }
              ]
            },
            "tick0": {
              "description": "Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L<f>* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears."
            },
            "tickangle": {
              "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": -180,
                  "maximum": 180,
                  "default": "auto"
                }
              ]
            },
            "tickcolor": {
              "description": "Sets the tick color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "tickfont": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "family": {
                  "pattern": ".*\\S.*$",
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                "shadow": {
                  "default": "none",
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "tickformat": {
              "default": "",
              "description": "Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*",
              "type": "string"
            },
            "tickformatstops": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "dtickrange": {
                    "description": "range [*min*, *max*], where *min*, *max* - dtick values which describe some zoom level, it is possible to omit *min* or *max* value by passing *null*",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "array",
                        "items": {},
                        "minItems": 2,
                        "maxItems": 2
                      }
                    ]
                  },
                  "enabled": {
                    "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "boolean",
                        "default": true
                      }
                    ]
                  },
                  "name": {
                    "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.",
                    "type": "string"
                  },
                  "templateitemname": {
                    "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.",
                    "type": "string"
                  },
                  "value": {
                    "default": "",
                    "description": "string - dtickformat for described zoom level, the same as *tickformat*",
                    "type": "string"
                  }
                },
                "additionalProperties": false
              },
              "minItems": 1
            },
            "ticklabeloverflow": {
              "description": "Determines how we handle tick labels that would overflow either the graph div or the domain of the axis. The default value for inside tick labels is *hide past domain*. In other cases the default is *hide past div*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "allow",
                    "hide past div",
                    "hide past domain"
                  ]
                }
              ]
            },
            "ticklabelposition": {
              "description": "Determines where tick labels are drawn relative to the ticks. Left and right options are used when `orientation` is *h*, top and bottom when `orientation` is *v*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "outside",
                    "inside",
                    "outside top",
                    "inside top",
                    "outside left",
                    "inside left",
                    "outside right",
                    "inside right",
                    "outside bottom",
                    "inside bottom"
                  ],
                  "default": "outside"
                }
              ]
            },
            "ticklabelstep": {
              "description": "Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 1,
                  "default": 1
                }
              ]
            },
            "ticklen": {
              "description": "Sets the tick length (in px).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 5
                }
              ]
            },
            "tickmode": {
              "description": "Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "auto",
                    "linear",
                    "array"
                  ]
                }
              ]
            },
            "tickprefix": {
              "default": "",
              "description": "Sets a tick label prefix.",
              "type": "string"
            },
            "ticks": {
              "description": "Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "outside",
                    "inside",
                    ""
                  ],
                  "default": ""
                }
              ]
            },
            "ticksuffix": {
              "default": "",
              "description": "Sets a tick label suffix.",
              "type": "string"
            },
            "ticktext": {
              "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  }
                }
              ]
            },
            "ticktextsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.",
              "type": "string"
            },
            "tickvals": {
              "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  }
                }
              ]
            },
            "tickvalssrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.",
              "type": "string"
            },
            "tickwidth": {
              "description": "Sets the tick width (in px).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 1
                }
              ]
            },
            "title": {
              "type": "object",
              "properties": {
                "font": {
                  "type": "object",
                  "properties": {
                    "color": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    "family": {
                      "pattern": ".*\\S.*$",
                      "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                      "type": "string"
                    },
                    "lineposition": {
                      "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    "shadow": {
                      "default": "none",
                      "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                      "type": "string"
                    },
                    "size": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    "style": {
                      "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "textcase": {
                      "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "variant": {
                      "description": "Sets the variant of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "weight": {
                      "description": "Sets the weight (or boldness) of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    }
                  },
                  "additionalProperties": false
                },
                "side": {
                  "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and  defaults to *right* when `orientation` if *h*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "right",
                        "top",
                        "bottom"
                      ]
                    }
                  ]
                },
                "text": {
                  "description": "Sets the title of the color bar.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "x": {
              "description": "Sets the x position with respect to `xref` of the color bar (in plot fraction). When `xref` is *paper*, defaults to 1.02 when `orientation` is *v* and 0.5 when `orientation` is *h*. When `xref` is *container*, defaults to *1* when `orientation` is *v* and 0.5 when `orientation` is *h*. Must be between *0* and *1* if `xref` is *container* and between *-2* and *3* if `xref` is *paper*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number"
                }
              ]
            },
            "xanchor": {
              "description": "Sets this color bar's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the color bar. Defaults to *left* when `orientation` is *v* and *center* when `orientation` is *h*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "left",
                    "center",
                    "right"
                  ]
                }
              ]
            },
            "xpad": {
              "description": "Sets the amount of padding (in px) along the x direction.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 10
                }
              ]
            },
            "xref": {
              "description": "Sets the container `x` refers to. *container* spans the entire `width` of the plot. *paper* refers to the width of the plotting area only.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "container",
                    "paper"
                  ],
                  "default": "paper"
                }
              ]
            },
            "y": {
              "description": "Sets the y position with respect to `yref` of the color bar (in plot fraction). When `yref` is *paper*, defaults to 0.5 when `orientation` is *v* and 1.02 when `orientation` is *h*. When `yref` is *container*, defaults to 0.5 when `orientation` is *v* and 1 when `orientation` is *h*. Must be between *0* and *1* if `yref` is *container* and between *-2* and *3* if `yref` is *paper*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number"
                }
              ]
            },
            "yanchor": {
              "description": "Sets this color bar's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the color bar. Defaults to *middle* when `orientation` is *v* and *bottom* when `orientation` is *h*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "top",
                    "middle",
                    "bottom"
                  ]
                }
              ]
            },
            "ypad": {
              "description": "Sets the amount of padding (in px) along the y direction.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 10
                }
              ]
            },
            "yref": {
              "description": "Sets the container `y` refers to. *container* spans the entire `height` of the plot. *paper* refers to the height of the plotting area only.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "container",
                    "paper"
                  ],
                  "default": "paper"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "colorscale": {
          "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `zmin` and `zmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "$ref": "#/$defs/colorscale",
              "default": null
            }
          ]
        },
        "contours": {
          "type": "object",
          "properties": {
            "coloring": {
              "description": "Determines the coloring method showing the contour values. If *fill*, coloring is done evenly between each contour level If *heatmap*, a heatmap gradient coloring is applied between each contour level. If *lines*, coloring is done on the contour lines. If *none*, no coloring is applied on this trace.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "fill",
                    "heatmap",
                    "lines",
                    "none"
                  ],
                  "default": "fill"
                }
              ]
            },
            "end": {
              "description": "Sets the end contour level value. Must be more than `contours.start`",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": null
                }
              ]
            },
            "impliedEdits": {},
            "labelfont": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "family": {
                  "pattern": ".*\\S.*$",
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                "shadow": {
                  "default": "none",
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "labelformat": {
              "default": "",
              "description": "Sets the contour label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>.",
              "type": "string"
            },
            "operation": {
              "description": "Sets the constraint operation. *=* keeps regions equal to `value` *<* and *<=* keep regions less than `value` *>* and *>=* keep regions greater than `value` *[]*, *()*, *[)*, and *(]* keep regions inside `value[0]` to `value[1]` *][*, *)(*, *](*, *)[* keep regions outside `value[0]` to value[1]` Open vs. closed intervals make no difference to constraint display, but all versions are allowed for consistency with filter transforms.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "=",
                    "<",
                    ">=",
                    ">",
                    "<=",
                    "[]",
                    "()",
                    "[)",
                    "(]",
                    "][",
                    ")(",
                    "](",
                    ")["
                  ],
                  "default": "="
                }
              ]
            },
            "showlabels": {
              "description": "Determines whether to label the contour lines with their values.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            },
            "showlines": {
              "description": "Determines whether or not the contour lines are drawn. Has an effect only if `contours.coloring` is set to *fill*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": true
                }
              ]
            },
            "size": {
              "description": "Sets the step between each contour level. Must be positive.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": null
                }
              ]
            },
            "start": {
              "description": "Sets the starting contour level value. Must be less than `contours.end`",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": null
                }
              ]
            },
            "type": {
              "description": "If `levels`, the data is represented as a contour plot with multiple levels displayed. If `constraint`, the data is represented as constraints with the invalid region shaded as specified by the `operation` and `value` parameters.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "levels",
                    "constraint"
                  ],
                  "default": "levels"
                }
              ]
            },
            "value": {
              "default": 0,
              "description": "Sets the value or values of the constraint boundary. When `operation` is set to one of the comparison values (=,<,>=,>,<=) *value* is expected to be a number. When `operation` is set to one of the interval values ([],(),[),(],][,)(,](,)[) *value* is expected to be an array of two numbers where the first is the lower bound and the second is the upper bound."
            }
          },
          "additionalProperties": false
        },
        "customdata": {
          "description": "Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "customdatasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `customdata`.",
          "type": "string"
        },
        "histfunc": {
          "description": "Specifies the binning function used for this histogram trace. If *count*, the histogram values are computed by counting the number of values lying inside each bin. If *sum*, *avg*, *min*, *max*, the histogram values are computed using the sum, the average, the minimum or the maximum of the values lying inside each bin respectively.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "count",
                "sum",
                "avg",
                "min",
                "max"
              ],
              "default": "count"
            }
          ]
        },
        "histnorm": {
          "description": "Specifies the type of normalization used for this histogram trace. If **, the span of each bar corresponds to the number of occurrences (i.e. the number of data points lying inside the bins). If *percent* / *probability*, the span of each bar corresponds to the percentage / fraction of occurrences with respect to the total number of sample points (here, the sum of all bin HEIGHTS equals 100% / 1). If *density*, the span of each bar corresponds to the number of occurrences in a bin divided by the size of the bin interval (here, the sum of all bin AREAS equals the total number of sample points). If *probability density*, the area of each bar corresponds to the probability that an event will fall into the corresponding bin (here, the sum of all bin AREAS equals 1).",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "",
                "percent",
                "probability",
                "density",
                "probability density"
              ],
              "default": ""
            }
          ]
        },
        "hoverinfo": {
          "description": "Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired.",
          "oneOf": [
            {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "oneOf": [
                    {
                      "type": "string",
                      "enum": [
                        "all",
                        "none",
                        "skip"
                      ]
                    },
                    {
                      "type": "string",
                      "pattern": "^(x|y|z|text|name)(\\+(x|y|z|text|name))*$"
                    }
                  ],
                  "default": "all"
                }
              ]
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "oneOf": [
                      {
                        "type": "string",
                        "enum": [
                          "all",
                          "none",
                          "skip"
                        ]
                      },
                      {
                        "type": "string",
                        "pattern": "^(x|y|z|text|name)(\\+(x|y|z|text|name))*$"
                      }
                    ],
                    "default": "all"
                  }
                ]
              }
            }
          ]
        },
        "hoverinfosrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.",
          "type": "string"
        },
        "hoverlabel": {
          "type": "object",
          "properties": {
            "align": {
              "description": "Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "left",
                        "right",
                        "auto"
                      ],
                      "default": "auto"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "left",
                          "right",
                          "auto"
                        ],
                        "default": "auto"
                      }
                    ]
                  }
                }
              ]
            },
            "alignsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `align`.",
              "type": "string"
            },
            "bgcolor": {
              "description": "Sets the background color of the hover labels for this trace",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "bgcolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.",
              "type": "string"
            },
            "bordercolor": {
              "description": "Sets the border color of the hover labels for this trace.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "bordercolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.",
              "type": "string"
            },
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "colorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `color`.",
                  "type": "string"
                },
                "family": {
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "oneOf": [
                    {
                      "pattern": ".*\\S.*$",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "pattern": ".*\\S.*$",
                        "type": "string"
                      }
                    },
                    {
                      "$ref": "#/$defs/query-string"
                    }
                  ]
                },
                "familysrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `family`.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "oneOf": [
                              {
                                "type": "string",
                                "enum": [
                                  "none"
                                ]
                              },
                              {
                                "type": "string",
                                "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                              }
                            ],
                            "default": "none"
                          }
                        ]
                      }
                    }
                  ]
                },
                "linepositionsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.",
                  "type": "string"
                },
                "shadow": {
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "oneOf": [
                    {
                      "default": "none",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "default": "none",
                        "type": "string"
                      }
                    }
                  ]
                },
                "shadowsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `shadow`.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 1
                          }
                        ]
                      }
                    }
                  ]
                },
                "sizesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `size`.",
                  "type": "string"
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "italic"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "stylesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `style`.",
                  "type": "string"
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "word caps",
                              "upper",
                              "lower"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "textcasesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `textcase`.",
                  "type": "string"
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "small-caps",
                              "all-small-caps",
                              "all-petite-caps",
                              "petite-caps",
                              "unicase"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "variantsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `variant`.",
                  "type": "string"
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 1000,
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "weightsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `weight`.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "namelength": {
              "description": "Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": -1,
                      "default": 15
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "integer",
                        "minimum": -1,
                        "default": 15
                      }
                    ]
                  }
                }
              ]
            },
            "namelengthsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `namelength`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "hovertemplate": {
          "description": "Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". <https://github.com/d3/d3-format/tree/v1.4.5#d3-format> for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format> for details on the date formatting syntax. The variables available in `hovertemplate` are the ones emitted as event data described at this link <https://plotly.com/javascript/plotlyjs-events/#event-data>. Additionally, every attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variable `z` Anything contained in tag `<extra>` is displayed in the secondary box, for example \"<extra>{fullData.name}</extra>\". To hide the secondary box completely, use an empty tag `<extra></extra>`.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "hovertemplatesrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.",
          "type": "string"
        },
        "ids": {
          "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "idssrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `ids`.",
          "type": "string"
        },
        "legend": {
          "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "legend",
              "pattern": "^legend([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "legendgroup": {
          "default": "",
          "description": "Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items.",
          "type": "string"
        },
        "legendgrouptitle": {
          "type": "object",
          "properties": {
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "family": {
                  "pattern": ".*\\S.*$",
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                "shadow": {
                  "default": "none",
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "text": {
              "default": "",
              "description": "Sets the title of the legend group.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "legendrank": {
          "description": "Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": 1000
            }
          ]
        },
        "legendwidth": {
          "description": "Sets the width (in px or fraction) of the legend for this trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0
            }
          ]
        },
        "line": {
          "type": "object",
          "properties": {
            "color": {
              "description": "Sets the color of the contour level. Has no effect if `contours.coloring` is set to *lines*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "dash": {
              "default": "solid",
              "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).",
              "type": "string"
            },
            "smoothing": {
              "description": "Sets the amount of smoothing for the contour lines, where *0* corresponds to no smoothing.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 1.3,
                  "default": 1
                }
              ]
            },
            "width": {
              "description": "Sets the contour line width in (in px)",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 0.5
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "marker": {
          "type": "object",
          "properties": {
            "color": {
              "description": "Sets the aggregation data.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  }
                }
              ]
            },
            "colorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `color`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "metasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `meta`.",
          "type": "string"
        },
        "name": {
          "description": "Sets the trace name. The trace name appears as the legend item and on hover.",
          "type": "string"
        },
        "nbinsx": {
          "description": "Specifies the maximum number of desired bins. This value will be used in an algorithm that will decide the optimal bin size such that the histogram best visualizes the distribution of the data. Ignored if `xbins.size` is provided.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "integer",
              "minimum": 0,
              "default": 0
            }
          ]
        },
        "nbinsy": {
          "description": "Specifies the maximum number of desired bins. This value will be used in an algorithm that will decide the optimal bin size such that the histogram best visualizes the distribution of the data. Ignored if `ybins.size` is provided.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "integer",
              "minimum": 0,
              "default": 0
            }
          ]
        },
        "ncontours": {
          "description": "Sets the maximum number of contour levels. The actual number of contours will be chosen automatically to be less than or equal to the value of `ncontours`. Has an effect only if `autocontour` is *true* or if `contours.size` is missing.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "integer",
              "minimum": 1,
              "default": 15
            }
          ]
        },
        "opacity": {
          "description": "Sets the opacity of the trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0,
              "maximum": 1,
              "default": 1
            }
          ]
        },
        "reversescale": {
          "description": "Reverses the color mapping if true. If true, `zmin` will correspond to the last color in the array and `zmax` will correspond to the first color.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": false
            }
          ]
        },
        "showlegend": {
          "description": "Determines whether or not an item corresponding to this trace is shown in the legend.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "showscale": {
          "description": "Determines whether or not a colorbar is displayed for this trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "stream": {
          "type": "object",
          "properties": {
            "maxpoints": {
              "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 10000,
                  "default": 500
                }
              ]
            },
            "token": {
              "pattern": ".*\\S.*$",
              "description": "The stream id number links a data trace on a plot with a stream. See <https://chart-studio.plotly.com/settings> for more details.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "textfont": {
          "type": "object",
          "properties": {
            "color": {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "family": {
              "pattern": ".*\\S.*$",
              "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
              "type": "string"
            },
            "lineposition": {
              "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "oneOf": [
                    {
                      "type": "string",
                      "enum": [
                        "none"
                      ]
                    },
                    {
                      "type": "string",
                      "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                    }
                  ],
                  "default": "none"
                }
              ]
            },
            "shadow": {
              "default": "none",
              "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
              "type": "string"
            },
            "size": {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 1,
                  "default": "auto"
                }
              ]
            },
            "style": {
              "description": "Sets whether a font should be styled with a normal or italic face from its family.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "normal",
                    "italic"
                  ],
                  "default": "normal"
                }
              ]
            },
            "textcase": {
              "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "normal",
                    "word caps",
                    "upper",
                    "lower"
                  ],
                  "default": "normal"
                }
              ]
            },
            "variant": {
              "description": "Sets the variant of the font.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "normal",
                    "small-caps",
                    "all-small-caps",
                    "all-petite-caps",
                    "petite-caps",
                    "unicase"
                  ],
                  "default": "normal"
                }
              ]
            },
            "weight": {
              "description": "Sets the weight (or boldness) of the font.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 1,
                  "maximum": 1000,
                  "default": "normal"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "texttemplate": {
          "default": "",
          "description": "For this trace it only has an effect if `coloring` is set to *heatmap*. Template string used for rendering the information text that appear on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". <https://github.com/d3/d3-format/tree/v1.4.5#d3-format> for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format> for details on the date formatting syntax. Every attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `x`, `y`, `z` and `text`.",
          "type": "string"
        },
        "uid": {
          "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.",
          "type": "string"
        },
        "uirevision": {
          "description": "Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves."
        },
        "visible": {
          "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                true,
                false,
                "legendonly"
              ],
              "default": true
            }
          ]
        },
        "x": {
          "description": "Sets the sample data to be binned on the x axis.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "xaxis": {
          "description": "Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "x",
              "pattern": "^x([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "xbingroup": {
          "default": "",
          "description": "Set a group of histogram traces which will have compatible x-bin settings. Using `xbingroup`, histogram2d and histogram2dcontour traces  (on axes of the same axis type) can have compatible x-bin settings. Note that the same `xbingroup` value can be used to set (1D) histogram `bingroup`",
          "type": "string"
        },
        "xbins": {
          "type": "object",
          "properties": {
            "end": {
              "description": "Sets the end value for the x axis bins. The last bin may not end exactly at this value, we increment the bin edge by `size` from `start` until we reach or exceed `end`. Defaults to the maximum data value. Like `start`, for dates use a date string, and for category data `end` is based on the category serial numbers."
            },
            "size": {
              "description": "Sets the size of each x axis bin. Default behavior: If `nbinsx` is 0 or omitted, we choose a nice round bin size such that the number of bins is about the same as the typical number of samples in each bin. If `nbinsx` is provided, we choose a nice round bin size giving no more than that many bins. For date data, use milliseconds or *M<n>* for months, as in `axis.dtick`. For category data, the number of categories to bin together (always defaults to 1). "
            },
            "start": {
              "description": "Sets the starting value for the x axis bins. Defaults to the minimum data value, shifted down if necessary to make nice round values and to remove ambiguous bin edges. For example, if most of the data is integers we shift the bin edges 0.5 down, so a `size` of 5 would have a default `start` of -0.5, so it is clear that 0-4 are in the first bin, 5-9 in the second, but continuous data gets a start of 0 and bins [0,5), [5,10) etc. Dates behave similarly, and `start` should be a date string. For category data, `start` is based on the category serial numbers, and defaults to -0.5. "
            }
          },
          "additionalProperties": false
        },
        "xcalendar": {
          "description": "Sets the calendar system to use with `x` date data.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "chinese",
                "coptic",
                "discworld",
                "ethiopian",
                "gregorian",
                "hebrew",
                "islamic",
                "jalali",
                "julian",
                "mayan",
                "nanakshahi",
                "nepali",
                "persian",
                "taiwan",
                "thai",
                "ummalqura"
              ],
              "default": "gregorian"
            }
          ]
        },
        "xhoverformat": {
          "default": "",
          "description": "Sets the hover text formatting rulefor `x`  using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.",
          "type": "string"
        },
        "xsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `x`.",
          "type": "string"
        },
        "y": {
          "description": "Sets the sample data to be binned on the y axis.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "yaxis": {
          "description": "Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "y",
              "pattern": "^y([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "ybingroup": {
          "default": "",
          "description": "Set a group of histogram traces which will have compatible y-bin settings. Using `ybingroup`, histogram2d and histogram2dcontour traces  (on axes of the same axis type) can have compatible y-bin settings. Note that the same `ybingroup` value can be used to set (1D) histogram `bingroup`",
          "type": "string"
        },
        "ybins": {
          "type": "object",
          "properties": {
            "end": {
              "description": "Sets the end value for the y axis bins. The last bin may not end exactly at this value, we increment the bin edge by `size` from `start` until we reach or exceed `end`. Defaults to the maximum data value. Like `start`, for dates use a date string, and for category data `end` is based on the category serial numbers."
            },
            "size": {
              "description": "Sets the size of each y axis bin. Default behavior: If `nbinsy` is 0 or omitted, we choose a nice round bin size such that the number of bins is about the same as the typical number of samples in each bin. If `nbinsy` is provided, we choose a nice round bin size giving no more than that many bins. For date data, use milliseconds or *M<n>* for months, as in `axis.dtick`. For category data, the number of categories to bin together (always defaults to 1). "
            },
            "start": {
              "description": "Sets the starting value for the y axis bins. Defaults to the minimum data value, shifted down if necessary to make nice round values and to remove ambiguous bin edges. For example, if most of the data is integers we shift the bin edges 0.5 down, so a `size` of 5 would have a default `start` of -0.5, so it is clear that 0-4 are in the first bin, 5-9 in the second, but continuous data gets a start of 0 and bins [0,5), [5,10) etc. Dates behave similarly, and `start` should be a date string. For category data, `start` is based on the category serial numbers, and defaults to -0.5. "
            }
          },
          "additionalProperties": false
        },
        "ycalendar": {
          "description": "Sets the calendar system to use with `y` date data.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "chinese",
                "coptic",
                "discworld",
                "ethiopian",
                "gregorian",
                "hebrew",
                "islamic",
                "jalali",
                "julian",
                "mayan",
                "nanakshahi",
                "nepali",
                "persian",
                "taiwan",
                "thai",
                "ummalqura"
              ],
              "default": "gregorian"
            }
          ]
        },
        "yhoverformat": {
          "default": "",
          "description": "Sets the hover text formatting rulefor `y`  using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.",
          "type": "string"
        },
        "ysrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `y`.",
          "type": "string"
        },
        "z": {
          "description": "Sets the aggregation data.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "zauto": {
          "description": "Determines whether or not the color domain is computed with respect to the input data (here in `z`) or the bounds set in `zmin` and `zmax` Defaults to `false` when `zmin` and `zmax` are set by the user.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "zhoverformat": {
          "default": "",
          "description": "Sets the hover text formatting rulefor `z`  using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By> default the values are formatted using generic number format.",
          "type": "string"
        },
        "zmax": {
          "description": "Sets the upper bound of the color domain. Value should have the same units as in `z` and if set, `zmin` must be set as well.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": null
            }
          ]
        },
        "zmid": {
          "description": "Sets the mid-point of the color domain by scaling `zmin` and/or `zmax` to be equidistant to this point. Value should have the same units as in `z`. Has no effect when `zauto` is `false`.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": null
            }
          ]
        },
        "zmin": {
          "description": "Sets the lower bound of the color domain. Value should have the same units as in `z` and if set, `zmax` must be set as well.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": null
            }
          ]
        },
        "zsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `z`.",
          "type": "string"
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false
    },
    "Icicle": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "$id": "https://visivo.io/trace-properties/schema",
      "description": "A schema to validate plotly trace properties",
      "type": "object",
      "properties": {
        "type": {
          "const": "icicle"
        },
        "branchvalues": {
          "description": "Determines how the items in `values` are summed. When set to *total*, items in `values` are taken to be value of all its descendants. When set to *remainder*, items in `values` corresponding to the root and the branches sectors are taken to be the extra part not part of the sum of the values at their leaves.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "remainder",
                "total"
              ],
              "default": "remainder"
            }
          ]
        },
        "count": {
          "description": "Determines default for `values` when it is not provided, by inferring a 1 for each of the *leaves* and/or *branches*, otherwise 0.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "pattern": "^(branches|leaves)(\\+(branches|leaves))*$",
              "default": "leaves"
            }
          ]
        },
        "customdata": {
          "description": "Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "customdatasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `customdata`.",
          "type": "string"
        },
        "domain": {
          "type": "object",
          "properties": {
            "column": {
              "description": "If there is a layout grid, use the domain for this column in the grid for this icicle trace .",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "row": {
              "description": "If there is a layout grid, use the domain for this row in the grid for this icicle trace .",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "x": {
              "description": "Sets the horizontal domain of this icicle trace (in plot fraction).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 1
                      }
                    ]
                  },
                  "minItems": 2,
                  "maxItems": 2,
                  "default": [
                    0,
                    1
                  ]
                }
              ]
            },
            "y": {
              "description": "Sets the vertical domain of this icicle trace (in plot fraction).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 1
                      }
                    ]
                  },
                  "minItems": 2,
                  "maxItems": 2,
                  "default": [
                    0,
                    1
                  ]
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "hoverinfo": {
          "description": "Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired.",
          "oneOf": [
            {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "oneOf": [
                    {
                      "type": "string",
                      "enum": [
                        "all",
                        "none",
                        "skip"
                      ]
                    },
                    {
                      "type": "string",
                      "pattern": "^(label|text|value|name|current path|percent root|percent entry|percent parent)(\\+(label|text|value|name|current path|percent root|percent entry|percent parent))*$"
                    }
                  ],
                  "default": "label+text+value+name"
                }
              ]
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "oneOf": [
                      {
                        "type": "string",
                        "enum": [
                          "all",
                          "none",
                          "skip"
                        ]
                      },
                      {
                        "type": "string",
                        "pattern": "^(label|text|value|name|current path|percent root|percent entry|percent parent)(\\+(label|text|value|name|current path|percent root|percent entry|percent parent))*$"
                      }
                    ],
                    "default": "label+text+value+name"
                  }
                ]
              }
            }
          ]
        },
        "hoverinfosrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.",
          "type": "string"
        },
        "hoverlabel": {
          "type": "object",
          "properties": {
            "align": {
              "description": "Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "left",
                        "right",
                        "auto"
                      ],
                      "default": "auto"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "left",
                          "right",
                          "auto"
                        ],
                        "default": "auto"
                      }
                    ]
                  }
                }
              ]
            },
            "alignsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `align`.",
              "type": "string"
            },
            "bgcolor": {
              "description": "Sets the background color of the hover labels for this trace",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "bgcolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.",
              "type": "string"
            },
            "bordercolor": {
              "description": "Sets the border color of the hover labels for this trace.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "bordercolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.",
              "type": "string"
            },
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "colorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `color`.",
                  "type": "string"
                },
                "family": {
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "oneOf": [
                    {
                      "pattern": ".*\\S.*$",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "pattern": ".*\\S.*$",
                        "type": "string"
                      }
                    },
                    {
                      "$ref": "#/$defs/query-string"
                    }
                  ]
                },
                "familysrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `family`.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "oneOf": [
                              {
                                "type": "string",
                                "enum": [
                                  "none"
                                ]
                              },
                              {
                                "type": "string",
                                "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                              }
                            ],
                            "default": "none"
                          }
                        ]
                      }
                    }
                  ]
                },
                "linepositionsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.",
                  "type": "string"
                },
                "shadow": {
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "oneOf": [
                    {
                      "default": "none",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "default": "none",
                        "type": "string"
                      }
                    }
                  ]
                },
                "shadowsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `shadow`.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 1
                          }
                        ]
                      }
                    }
                  ]
                },
                "sizesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `size`.",
                  "type": "string"
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "italic"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "stylesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `style`.",
                  "type": "string"
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "word caps",
                              "upper",
                              "lower"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "textcasesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `textcase`.",
                  "type": "string"
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "small-caps",
                              "all-small-caps",
                              "all-petite-caps",
                              "petite-caps",
                              "unicase"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "variantsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `variant`.",
                  "type": "string"
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 1000,
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "weightsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `weight`.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "namelength": {
              "description": "Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": -1,
                      "default": 15
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "integer",
                        "minimum": -1,
                        "default": 15
                      }
                    ]
                  }
                }
              ]
            },
            "namelengthsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `namelength`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "hovertemplate": {
          "description": "Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". <https://github.com/d3/d3-format/tree/v1.4.5#d3-format> for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format> for details on the date formatting syntax. The variables available in `hovertemplate` are the ones emitted as event data described at this link <https://plotly.com/javascript/plotlyjs-events/#event-data>. Additionally, every attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `currentPath`, `root`, `entry`, `percentRoot`, `percentEntry` and `percentParent`. Anything contained in tag `<extra>` is displayed in the secondary box, for example \"<extra>{fullData.name}</extra>\". To hide the secondary box completely, use an empty tag `<extra></extra>`.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "hovertemplatesrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.",
          "type": "string"
        },
        "hovertext": {
          "description": "Sets hover text elements associated with each sector. If a single string, the same string appears for all data points. If an array of string, the items are mapped in order of this trace's sectors. To be seen, trace `hoverinfo` must contain a *text* flag.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "hovertextsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.",
          "type": "string"
        },
        "ids": {
          "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "idssrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `ids`.",
          "type": "string"
        },
        "insidetextfont": {
          "type": "object",
          "properties": {
            "color": {
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "colorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `color`.",
              "type": "string"
            },
            "family": {
              "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
              "oneOf": [
                {
                  "pattern": ".*\\S.*$",
                  "type": "string"
                },
                {
                  "type": "array",
                  "items": {
                    "pattern": ".*\\S.*$",
                    "type": "string"
                  }
                },
                {
                  "$ref": "#/$defs/query-string"
                }
              ]
            },
            "familysrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `family`.",
              "type": "string"
            },
            "lineposition": {
              "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "oneOf": [
                          {
                            "type": "string",
                            "enum": [
                              "none"
                            ]
                          },
                          {
                            "type": "string",
                            "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                          }
                        ],
                        "default": "none"
                      }
                    ]
                  }
                }
              ]
            },
            "linepositionsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.",
              "type": "string"
            },
            "shadow": {
              "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
              "oneOf": [
                {
                  "default": "none",
                  "type": "string"
                },
                {
                  "type": "array",
                  "items": {
                    "default": "none",
                    "type": "string"
                  }
                }
              ]
            },
            "shadowsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `shadow`.",
              "type": "string"
            },
            "size": {
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 1
                      }
                    ]
                  }
                }
              ]
            },
            "sizesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `size`.",
              "type": "string"
            },
            "style": {
              "description": "Sets whether a font should be styled with a normal or italic face from its family.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "italic"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "stylesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `style`.",
              "type": "string"
            },
            "textcase": {
              "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "word caps",
                          "upper",
                          "lower"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "textcasesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `textcase`.",
              "type": "string"
            },
            "variant": {
              "description": "Sets the variant of the font.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "small-caps",
                          "all-small-caps",
                          "all-petite-caps",
                          "petite-caps",
                          "unicase"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "variantsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `variant`.",
              "type": "string"
            },
            "weight": {
              "description": "Sets the weight (or boldness) of the font.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 1000,
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "weightsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `weight`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "labels": {
          "description": "Sets the labels of each of the sectors.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "labelssrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `labels`.",
          "type": "string"
        },
        "leaf": {
          "type": "object",
          "properties": {
            "opacity": {
              "description": "Sets the opacity of the leaves. With colorscale it is defaulted to 1; otherwise it is defaulted to 0.7",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 1
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "legend": {
          "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "legend",
              "pattern": "^legend([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "legendgrouptitle": {
          "type": "object",
          "properties": {
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "family": {
                  "pattern": ".*\\S.*$",
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                "shadow": {
                  "default": "none",
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "text": {
              "default": "",
              "description": "Sets the title of the legend group.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "legendrank": {
          "description": "Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": 1000
            }
          ]
        },
        "legendwidth": {
          "description": "Sets the width (in px or fraction) of the legend for this trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0
            }
          ]
        },
        "level": {
          "description": "Sets the level from which this trace hierarchy is rendered. Set `level` to `''` to start from the root node in the hierarchy. Must be an \"id\" if `ids` is filled in, otherwise plotly attempts to find a matching item in `labels`."
        },
        "marker": {
          "type": "object",
          "properties": {
            "autocolorscale": {
              "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if colors is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": true
                }
              ]
            },
            "cauto": {
              "description": "Determines whether or not the color domain is computed with respect to the input data (here colors) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if colors is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": true
                }
              ]
            },
            "cmax": {
              "description": "Sets the upper bound of the color domain. Has an effect only if colors is set to a numerical array. Value should have the same units as colors and if set, `marker.cmin` must be set as well.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": null
                }
              ]
            },
            "cmid": {
              "description": "Sets the mid-point of the color domain by scaling `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if colors is set to a numerical array. Value should have the same units as colors. Has no effect when `marker.cauto` is `false`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": null
                }
              ]
            },
            "cmin": {
              "description": "Sets the lower bound of the color domain. Has an effect only if colors is set to a numerical array. Value should have the same units as colors and if set, `marker.cmax` must be set as well.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": null
                }
              ]
            },
            "coloraxis": {
              "description": "Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "string",
                  "default": null,
                  "pattern": "/^coloraxis([2-9]|[1-9][0-9]+)?$/"
                }
              ]
            },
            "colorbar": {
              "type": "object",
              "properties": {
                "bgcolor": {
                  "description": "Sets the color of padded area.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "bordercolor": {
                  "description": "Sets the axis line color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "borderwidth": {
                  "description": "Sets the width (in px) or the border enclosing this color bar.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 0
                    }
                  ]
                },
                "dtick": {
                  "description": "Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L<f>*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M<n>* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48*"
                },
                "exponentformat": {
                  "description": "Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "none",
                        "e",
                        "E",
                        "power",
                        "SI",
                        "B"
                      ],
                      "default": "B"
                    }
                  ]
                },
                "labelalias": {
                  "default": false,
                  "description": "Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax."
                },
                "len": {
                  "description": "Sets the length of the color bar This measure excludes the padding of both ends. That is, the color bar length is this length minus the padding on both ends.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "lenmode": {
                  "description": "Determines whether this color bar's length (i.e. the measure in the color variation direction) is set in units of plot *fraction* or in *pixels. Use `len` to set the value.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "fraction",
                        "pixels"
                      ],
                      "default": "fraction"
                    }
                  ]
                },
                "minexponent": {
                  "description": "Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 3
                    }
                  ]
                },
                "nticks": {
                  "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 0,
                      "default": 0
                    }
                  ]
                },
                "orientation": {
                  "description": "Sets the orientation of the colorbar.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "h",
                        "v"
                      ],
                      "default": "v"
                    }
                  ]
                },
                "outlinecolor": {
                  "description": "Sets the axis line color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "outlinewidth": {
                  "description": "Sets the width (in px) of the axis line.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "separatethousands": {
                  "description": "If \"true\", even 4-digit integers are separated",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": false
                    }
                  ]
                },
                "showexponent": {
                  "description": "If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "showticklabels": {
                  "description": "Determines whether or not the tick labels are drawn.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                },
                "showtickprefix": {
                  "description": "If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "showticksuffix": {
                  "description": "Same as `showtickprefix` but for tick suffixes.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "thickness": {
                  "description": "Sets the thickness of the color bar This measure excludes the size of the padding, ticks and labels.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 30
                    }
                  ]
                },
                "thicknessmode": {
                  "description": "Determines whether this color bar's thickness (i.e. the measure in the constant color direction) is set in units of plot *fraction* or in *pixels*. Use `thickness` to set the value.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "fraction",
                        "pixels"
                      ],
                      "default": "pixels"
                    }
                  ]
                },
                "tick0": {
                  "description": "Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L<f>* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears."
                },
                "tickangle": {
                  "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": -180,
                      "maximum": 180,
                      "default": "auto"
                    }
                  ]
                },
                "tickcolor": {
                  "description": "Sets the tick color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "tickfont": {
                  "type": "object",
                  "properties": {
                    "color": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    "family": {
                      "pattern": ".*\\S.*$",
                      "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                      "type": "string"
                    },
                    "lineposition": {
                      "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    "shadow": {
                      "default": "none",
                      "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                      "type": "string"
                    },
                    "size": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    "style": {
                      "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "textcase": {
                      "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "variant": {
                      "description": "Sets the variant of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "weight": {
                      "description": "Sets the weight (or boldness) of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    }
                  },
                  "additionalProperties": false
                },
                "tickformat": {
                  "default": "",
                  "description": "Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*",
                  "type": "string"
                },
                "tickformatstops": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "dtickrange": {
                        "description": "range [*min*, *max*], where *min*, *max* - dtick values which describe some zoom level, it is possible to omit *min* or *max* value by passing *null*",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "array",
                            "items": {},
                            "minItems": 2,
                            "maxItems": 2
                          }
                        ]
                      },
                      "enabled": {
                        "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "boolean",
                            "default": true
                          }
                        ]
                      },
                      "name": {
                        "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.",
                        "type": "string"
                      },
                      "templateitemname": {
                        "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.",
                        "type": "string"
                      },
                      "value": {
                        "default": "",
                        "description": "string - dtickformat for described zoom level, the same as *tickformat*",
                        "type": "string"
                      }
                    },
                    "additionalProperties": false
                  },
                  "minItems": 1
                },
                "ticklabeloverflow": {
                  "description": "Determines how we handle tick labels that would overflow either the graph div or the domain of the axis. The default value for inside tick labels is *hide past domain*. In other cases the default is *hide past div*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "allow",
                        "hide past div",
                        "hide past domain"
                      ]
                    }
                  ]
                },
                "ticklabelposition": {
                  "description": "Determines where tick labels are drawn relative to the ticks. Left and right options are used when `orientation` is *h*, top and bottom when `orientation` is *v*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "outside",
                        "inside",
                        "outside top",
                        "inside top",
                        "outside left",
                        "inside left",
                        "outside right",
                        "inside right",
                        "outside bottom",
                        "inside bottom"
                      ],
                      "default": "outside"
                    }
                  ]
                },
                "ticklabelstep": {
                  "description": "Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "default": 1
                    }
                  ]
                },
                "ticklen": {
                  "description": "Sets the tick length (in px).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 5
                    }
                  ]
                },
                "tickmode": {
                  "description": "Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "auto",
                        "linear",
                        "array"
                      ]
                    }
                  ]
                },
                "tickprefix": {
                  "default": "",
                  "description": "Sets a tick label prefix.",
                  "type": "string"
                },
                "ticks": {
                  "description": "Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "outside",
                        "inside",
                        ""
                      ],
                      "default": ""
                    }
                  ]
                },
                "ticksuffix": {
                  "default": "",
                  "description": "Sets a tick label suffix.",
                  "type": "string"
                },
                "ticktext": {
                  "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "string"
                          }
                        ]
                      }
                    }
                  ]
                },
                "ticktextsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.",
                  "type": "string"
                },
                "tickvals": {
                  "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "string"
                          }
                        ]
                      }
                    }
                  ]
                },
                "tickvalssrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.",
                  "type": "string"
                },
                "tickwidth": {
                  "description": "Sets the tick width (in px).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "title": {
                  "type": "object",
                  "properties": {
                    "font": {
                      "type": "object",
                      "properties": {
                        "color": {
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "$ref": "#/$defs/color"
                            }
                          ]
                        },
                        "family": {
                          "pattern": ".*\\S.*$",
                          "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                          "type": "string"
                        },
                        "lineposition": {
                          "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "oneOf": [
                                {
                                  "type": "string",
                                  "enum": [
                                    "none"
                                  ]
                                },
                                {
                                  "type": "string",
                                  "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                                }
                              ],
                              "default": "none"
                            }
                          ]
                        },
                        "shadow": {
                          "default": "none",
                          "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                          "type": "string"
                        },
                        "size": {
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "type": "number",
                              "minimum": 1
                            }
                          ]
                        },
                        "style": {
                          "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "italic"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "textcase": {
                          "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "word caps",
                                "upper",
                                "lower"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "variant": {
                          "description": "Sets the variant of the font.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "small-caps",
                                "all-small-caps",
                                "all-petite-caps",
                                "petite-caps",
                                "unicase"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "weight": {
                          "description": "Sets the weight (or boldness) of the font.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "type": "integer",
                              "minimum": 1,
                              "maximum": 1000,
                              "default": "normal"
                            }
                          ]
                        }
                      },
                      "additionalProperties": false
                    },
                    "side": {
                      "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and  defaults to *right* when `orientation` if *h*.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "right",
                            "top",
                            "bottom"
                          ]
                        }
                      ]
                    },
                    "text": {
                      "description": "Sets the title of the color bar.",
                      "type": "string"
                    }
                  },
                  "additionalProperties": false
                },
                "x": {
                  "description": "Sets the x position with respect to `xref` of the color bar (in plot fraction). When `xref` is *paper*, defaults to 1.02 when `orientation` is *v* and 0.5 when `orientation` is *h*. When `xref` is *container*, defaults to *1* when `orientation` is *v* and 0.5 when `orientation` is *h*. Must be between *0* and *1* if `xref` is *container* and between *-2* and *3* if `xref` is *paper*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number"
                    }
                  ]
                },
                "xanchor": {
                  "description": "Sets this color bar's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the color bar. Defaults to *left* when `orientation` is *v* and *center* when `orientation` is *h*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "left",
                        "center",
                        "right"
                      ]
                    }
                  ]
                },
                "xpad": {
                  "description": "Sets the amount of padding (in px) along the x direction.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 10
                    }
                  ]
                },
                "xref": {
                  "description": "Sets the container `x` refers to. *container* spans the entire `width` of the plot. *paper* refers to the width of the plotting area only.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "container",
                        "paper"
                      ],
                      "default": "paper"
                    }
                  ]
                },
                "y": {
                  "description": "Sets the y position with respect to `yref` of the color bar (in plot fraction). When `yref` is *paper*, defaults to 0.5 when `orientation` is *v* and 1.02 when `orientation` is *h*. When `yref` is *container*, defaults to 0.5 when `orientation` is *v* and 1 when `orientation` is *h*. Must be between *0* and *1* if `yref` is *container* and between *-2* and *3* if `yref` is *paper*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number"
                    }
                  ]
                },
                "yanchor": {
                  "description": "Sets this color bar's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the color bar. Defaults to *middle* when `orientation` is *v* and *bottom* when `orientation` is *h*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "top",
                        "middle",
                        "bottom"
                      ]
                    }
                  ]
                },
                "ypad": {
                  "description": "Sets the amount of padding (in px) along the y direction.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 10
                    }
                  ]
                },
                "yref": {
                  "description": "Sets the container `y` refers to. *container* spans the entire `height` of the plot. *paper* refers to the height of the plotting area only.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "container",
                        "paper"
                      ],
                      "default": "paper"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "colors": {
              "description": "Sets the color of each sector of this trace. If not specified, the default trace color set is used to pick the sector colors.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  }
                }
              ]
            },
            "colorscale": {
              "description": "Sets the colorscale. Has an effect only if colors is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/colorscale",
                  "default": null
                }
              ]
            },
            "colorssrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `colors`.",
              "type": "string"
            },
            "line": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the color of the line enclosing each sector. Defaults to the `paper_bgcolor` value.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "colorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `color`.",
                  "type": "string"
                },
                "width": {
                  "description": "Sets the width (in px) of the line enclosing each sector.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 0,
                          "default": 1
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 0,
                            "default": 1
                          }
                        ]
                      }
                    }
                  ]
                },
                "widthsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `width`.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "pattern": {
              "type": "object",
              "properties": {
                "bgcolor": {
                  "description": "When there is no colorscale sets the color of background pattern fill. Defaults to a `marker.color` background when `fillmode` is *overlay*. Otherwise, defaults to a transparent background.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "bgcolorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.",
                  "type": "string"
                },
                "fgcolor": {
                  "description": "When there is no colorscale sets the color of foreground pattern fill. Defaults to a `marker.color` background when `fillmode` is *replace*. Otherwise, defaults to dark grey or white to increase contrast with the `bgcolor`.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "fgcolorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `fgcolor`.",
                  "type": "string"
                },
                "fgopacity": {
                  "description": "Sets the opacity of the foreground pattern fill. Defaults to a 0.5 when `fillmode` is *overlay*. Otherwise, defaults to 1.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1
                    }
                  ]
                },
                "fillmode": {
                  "description": "Determines whether `marker.color` should be used as a default to `bgcolor` or a `fgcolor`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "replace",
                        "overlay"
                      ],
                      "default": "replace"
                    }
                  ]
                },
                "shape": {
                  "description": "Sets the shape of the pattern fill. By default, no pattern is used for filling the area.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "",
                            "/",
                            "\\",
                            "x",
                            "-",
                            "|",
                            "+",
                            "."
                          ],
                          "default": ""
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "",
                              "/",
                              "\\",
                              "x",
                              "-",
                              "|",
                              "+",
                              "."
                            ],
                            "default": ""
                          }
                        ]
                      }
                    }
                  ]
                },
                "shapesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `shape`.",
                  "type": "string"
                },
                "size": {
                  "description": "Sets the size of unit squares of the pattern fill in pixels, which corresponds to the interval of repetition of the pattern.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 0,
                          "default": 8
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 0,
                            "default": 8
                          }
                        ]
                      }
                    }
                  ]
                },
                "sizesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `size`.",
                  "type": "string"
                },
                "solidity": {
                  "description": "Sets the solidity of the pattern fill. Solidity is roughly the fraction of the area filled by the pattern. Solidity of 0 shows only the background color without pattern and solidty of 1 shows only the foreground color without pattern.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 0,
                          "maximum": 1,
                          "default": 0.3
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 0,
                            "maximum": 1,
                            "default": 0.3
                          }
                        ]
                      }
                    }
                  ]
                },
                "soliditysrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `solidity`.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "reversescale": {
              "description": "Reverses the color mapping if true. Has an effect only if colors is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            },
            "showscale": {
              "description": "Determines whether or not a colorbar is displayed for this trace. Has an effect only if colors is set to a numerical array.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "maxdepth": {
          "description": "Sets the number of rendered sectors from any given `level`. Set `maxdepth` to *-1* to render all the levels in the hierarchy.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "integer",
              "default": -1
            }
          ]
        },
        "metasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `meta`.",
          "type": "string"
        },
        "name": {
          "description": "Sets the trace name. The trace name appears as the legend item and on hover.",
          "type": "string"
        },
        "opacity": {
          "description": "Sets the opacity of the trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0,
              "maximum": 1,
              "default": 1
            }
          ]
        },
        "outsidetextfont": {
          "type": "object",
          "properties": {
            "color": {
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "colorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `color`.",
              "type": "string"
            },
            "family": {
              "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
              "oneOf": [
                {
                  "pattern": ".*\\S.*$",
                  "type": "string"
                },
                {
                  "type": "array",
                  "items": {
                    "pattern": ".*\\S.*$",
                    "type": "string"
                  }
                },
                {
                  "$ref": "#/$defs/query-string"
                }
              ]
            },
            "familysrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `family`.",
              "type": "string"
            },
            "lineposition": {
              "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "oneOf": [
                          {
                            "type": "string",
                            "enum": [
                              "none"
                            ]
                          },
                          {
                            "type": "string",
                            "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                          }
                        ],
                        "default": "none"
                      }
                    ]
                  }
                }
              ]
            },
            "linepositionsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.",
              "type": "string"
            },
            "shadow": {
              "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
              "oneOf": [
                {
                  "default": "none",
                  "type": "string"
                },
                {
                  "type": "array",
                  "items": {
                    "default": "none",
                    "type": "string"
                  }
                }
              ]
            },
            "shadowsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `shadow`.",
              "type": "string"
            },
            "size": {
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 1
                      }
                    ]
                  }
                }
              ]
            },
            "sizesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `size`.",
              "type": "string"
            },
            "style": {
              "description": "Sets whether a font should be styled with a normal or italic face from its family.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "italic"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "stylesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `style`.",
              "type": "string"
            },
            "textcase": {
              "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "word caps",
                          "upper",
                          "lower"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "textcasesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `textcase`.",
              "type": "string"
            },
            "variant": {
              "description": "Sets the variant of the font.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "small-caps",
                          "all-small-caps",
                          "all-petite-caps",
                          "petite-caps",
                          "unicase"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "variantsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `variant`.",
              "type": "string"
            },
            "weight": {
              "description": "Sets the weight (or boldness) of the font.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 1000,
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "weightsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `weight`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "parents": {
          "description": "Sets the parent sectors for each of the sectors. Empty string items '' are understood to reference the root node in the hierarchy. If `ids` is filled, `parents` items are understood to be \"ids\" themselves. When `ids` is not set, plotly attempts to find matching items in `labels`, but beware they must be unique.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "parentssrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `parents`.",
          "type": "string"
        },
        "pathbar": {
          "type": "object",
          "properties": {
            "edgeshape": {
              "description": "Determines which shape is used for edges between `barpath` labels.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    ">",
                    "<",
                    "|",
                    "/",
                    "\\"
                  ],
                  "default": ">"
                }
              ]
            },
            "side": {
              "description": "Determines on which side of the the treemap the `pathbar` should be presented.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "top",
                    "bottom"
                  ],
                  "default": "top"
                }
              ]
            },
            "textfont": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "colorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `color`.",
                  "type": "string"
                },
                "family": {
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "oneOf": [
                    {
                      "pattern": ".*\\S.*$",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "pattern": ".*\\S.*$",
                        "type": "string"
                      }
                    },
                    {
                      "$ref": "#/$defs/query-string"
                    }
                  ]
                },
                "familysrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `family`.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "oneOf": [
                              {
                                "type": "string",
                                "enum": [
                                  "none"
                                ]
                              },
                              {
                                "type": "string",
                                "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                              }
                            ],
                            "default": "none"
                          }
                        ]
                      }
                    }
                  ]
                },
                "linepositionsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.",
                  "type": "string"
                },
                "shadow": {
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "oneOf": [
                    {
                      "default": "none",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "default": "none",
                        "type": "string"
                      }
                    }
                  ]
                },
                "shadowsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `shadow`.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 1
                          }
                        ]
                      }
                    }
                  ]
                },
                "sizesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `size`.",
                  "type": "string"
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "italic"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "stylesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `style`.",
                  "type": "string"
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "word caps",
                              "upper",
                              "lower"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "textcasesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `textcase`.",
                  "type": "string"
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "small-caps",
                              "all-small-caps",
                              "all-petite-caps",
                              "petite-caps",
                              "unicase"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "variantsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `variant`.",
                  "type": "string"
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 1000,
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "weightsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `weight`.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "thickness": {
              "description": "Sets the thickness of `pathbar` (in px). If not specified the `pathbar.textfont.size` is used with 3 pixles extra padding on each side.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 12
                }
              ]
            },
            "visible": {
              "description": "Determines if the path bar is drawn i.e. outside the trace `domain` and with one pixel gap.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": true
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "root": {
          "type": "object",
          "properties": {
            "color": {
              "description": "sets the color of the root node for a sunburst/treemap/icicle trace. this has no effect when a colorscale is used to set the markers.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "sort": {
          "description": "Determines whether or not the sectors are reordered from largest to smallest.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "stream": {
          "type": "object",
          "properties": {
            "maxpoints": {
              "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 10000,
                  "default": 500
                }
              ]
            },
            "token": {
              "pattern": ".*\\S.*$",
              "description": "The stream id number links a data trace on a plot with a stream. See <https://chart-studio.plotly.com/settings> for more details.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "text": {
          "description": "Sets text elements associated with each sector. If trace `textinfo` contains a *text* flag, these elements will be seen on the chart. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "textfont": {
          "type": "object",
          "properties": {
            "color": {
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "colorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `color`.",
              "type": "string"
            },
            "family": {
              "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
              "oneOf": [
                {
                  "pattern": ".*\\S.*$",
                  "type": "string"
                },
                {
                  "type": "array",
                  "items": {
                    "pattern": ".*\\S.*$",
                    "type": "string"
                  }
                },
                {
                  "$ref": "#/$defs/query-string"
                }
              ]
            },
            "familysrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `family`.",
              "type": "string"
            },
            "lineposition": {
              "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "oneOf": [
                          {
                            "type": "string",
                            "enum": [
                              "none"
                            ]
                          },
                          {
                            "type": "string",
                            "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                          }
                        ],
                        "default": "none"
                      }
                    ]
                  }
                }
              ]
            },
            "linepositionsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.",
              "type": "string"
            },
            "shadow": {
              "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
              "oneOf": [
                {
                  "default": "none",
                  "type": "string"
                },
                {
                  "type": "array",
                  "items": {
                    "default": "none",
                    "type": "string"
                  }
                }
              ]
            },
            "shadowsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `shadow`.",
              "type": "string"
            },
            "size": {
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 1
                      }
                    ]
                  }
                }
              ]
            },
            "sizesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `size`.",
              "type": "string"
            },
            "style": {
              "description": "Sets whether a font should be styled with a normal or italic face from its family.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "italic"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "stylesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `style`.",
              "type": "string"
            },
            "textcase": {
              "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "word caps",
                          "upper",
                          "lower"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "textcasesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `textcase`.",
              "type": "string"
            },
            "variant": {
              "description": "Sets the variant of the font.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "small-caps",
                          "all-small-caps",
                          "all-petite-caps",
                          "petite-caps",
                          "unicase"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "variantsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `variant`.",
              "type": "string"
            },
            "weight": {
              "description": "Sets the weight (or boldness) of the font.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 1000,
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "weightsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `weight`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "textinfo": {
          "description": "Determines which trace information appear on the graph.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "oneOf": [
                {
                  "type": "string",
                  "enum": [
                    "none"
                  ]
                },
                {
                  "type": "string",
                  "pattern": "^(label|text|value|current path|percent root|percent entry|percent parent)(\\+(label|text|value|current path|percent root|percent entry|percent parent))*$"
                }
              ]
            }
          ]
        },
        "textposition": {
          "description": "Sets the positions of the `text` elements.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "top left",
                "top center",
                "top right",
                "middle left",
                "middle center",
                "middle right",
                "bottom left",
                "bottom center",
                "bottom right"
              ],
              "default": "top left"
            }
          ]
        },
        "textsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `text`.",
          "type": "string"
        },
        "texttemplate": {
          "description": "Template string used for rendering the information text that appear on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". <https://github.com/d3/d3-format/tree/v1.4.5#d3-format> for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format> for details on the date formatting syntax. Every attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `currentPath`, `root`, `entry`, `percentRoot`, `percentEntry`, `percentParent`, `label` and `value`.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "texttemplatesrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.",
          "type": "string"
        },
        "tiling": {
          "type": "object",
          "properties": {
            "flip": {
              "description": "Determines if the positions obtained from solver are flipped on each axis.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "string",
                  "pattern": "^(x|y)(\\+(x|y))*$",
                  "default": ""
                }
              ]
            },
            "orientation": {
              "description": "When set in conjunction with `tiling.flip`, determines on which side the root nodes are drawn in the chart. If `tiling.orientation` is *v* and `tiling.flip` is **, the root nodes appear at the top. If `tiling.orientation` is *v* and `tiling.flip` is *y*, the root nodes appear at the bottom. If `tiling.orientation` is *h* and `tiling.flip` is **, the root nodes appear at the left. If `tiling.orientation` is *h* and `tiling.flip` is *x*, the root nodes appear at the right.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "v",
                    "h"
                  ],
                  "default": "h"
                }
              ]
            },
            "pad": {
              "description": "Sets the inner padding (in px).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 0
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "uid": {
          "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.",
          "type": "string"
        },
        "uirevision": {
          "description": "Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves."
        },
        "values": {
          "description": "Sets the values associated with each of the sectors. Use with `branchvalues` to determine how the values are summed.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "valuessrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `values`.",
          "type": "string"
        },
        "visible": {
          "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                true,
                false,
                "legendonly"
              ],
              "default": true
            }
          ]
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false
    },
    "Image": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "$id": "https://visivo.io/trace-properties/schema",
      "description": "A schema to validate plotly trace properties",
      "type": "object",
      "properties": {
        "type": {
          "const": "image"
        },
        "colormodel": {
          "description": "Color model used to map the numerical color components described in `z` into colors. If `source` is specified, this attribute will be set to `rgba256` otherwise it defaults to `rgb`.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "rgb",
                "rgba",
                "rgba256",
                "hsl",
                "hsla"
              ]
            }
          ]
        },
        "customdata": {
          "description": "Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "customdatasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `customdata`.",
          "type": "string"
        },
        "dx": {
          "description": "Set the pixel's horizontal size.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": 1
            }
          ]
        },
        "dy": {
          "description": "Set the pixel's vertical size",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": 1
            }
          ]
        },
        "hoverinfo": {
          "description": "Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired.",
          "oneOf": [
            {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "oneOf": [
                    {
                      "type": "string",
                      "enum": [
                        "all",
                        "none",
                        "skip"
                      ]
                    },
                    {
                      "type": "string",
                      "pattern": "^(x|y|z|color|name|text)(\\+(x|y|z|color|name|text))*$"
                    }
                  ],
                  "default": "x+y+z+text+name"
                }
              ]
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "oneOf": [
                      {
                        "type": "string",
                        "enum": [
                          "all",
                          "none",
                          "skip"
                        ]
                      },
                      {
                        "type": "string",
                        "pattern": "^(x|y|z|color|name|text)(\\+(x|y|z|color|name|text))*$"
                      }
                    ],
                    "default": "x+y+z+text+name"
                  }
                ]
              }
            }
          ]
        },
        "hoverinfosrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.",
          "type": "string"
        },
        "hoverlabel": {
          "type": "object",
          "properties": {
            "align": {
              "description": "Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "left",
                        "right",
                        "auto"
                      ],
                      "default": "auto"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "left",
                          "right",
                          "auto"
                        ],
                        "default": "auto"
                      }
                    ]
                  }
                }
              ]
            },
            "alignsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `align`.",
              "type": "string"
            },
            "bgcolor": {
              "description": "Sets the background color of the hover labels for this trace",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "bgcolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.",
              "type": "string"
            },
            "bordercolor": {
              "description": "Sets the border color of the hover labels for this trace.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "bordercolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.",
              "type": "string"
            },
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "colorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `color`.",
                  "type": "string"
                },
                "family": {
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "oneOf": [
                    {
                      "pattern": ".*\\S.*$",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "pattern": ".*\\S.*$",
                        "type": "string"
                      }
                    },
                    {
                      "$ref": "#/$defs/query-string"
                    }
                  ]
                },
                "familysrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `family`.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "oneOf": [
                              {
                                "type": "string",
                                "enum": [
                                  "none"
                                ]
                              },
                              {
                                "type": "string",
                                "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                              }
                            ],
                            "default": "none"
                          }
                        ]
                      }
                    }
                  ]
                },
                "linepositionsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.",
                  "type": "string"
                },
                "shadow": {
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "oneOf": [
                    {
                      "default": "none",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "default": "none",
                        "type": "string"
                      }
                    }
                  ]
                },
                "shadowsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `shadow`.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 1
                          }
                        ]
                      }
                    }
                  ]
                },
                "sizesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `size`.",
                  "type": "string"
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "italic"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "stylesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `style`.",
                  "type": "string"
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "word caps",
                              "upper",
                              "lower"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "textcasesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `textcase`.",
                  "type": "string"
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "small-caps",
                              "all-small-caps",
                              "all-petite-caps",
                              "petite-caps",
                              "unicase"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "variantsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `variant`.",
                  "type": "string"
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 1000,
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "weightsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `weight`.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "namelength": {
              "description": "Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": -1,
                      "default": 15
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "integer",
                        "minimum": -1,
                        "default": 15
                      }
                    ]
                  }
                }
              ]
            },
            "namelengthsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `namelength`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "hovertemplate": {
          "description": "Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". <https://github.com/d3/d3-format/tree/v1.4.5#d3-format> for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format> for details on the date formatting syntax. The variables available in `hovertemplate` are the ones emitted as event data described at this link <https://plotly.com/javascript/plotlyjs-events/#event-data>. Additionally, every attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `z`, `color` and `colormodel`. Anything contained in tag `<extra>` is displayed in the secondary box, for example \"<extra>{fullData.name}</extra>\". To hide the secondary box completely, use an empty tag `<extra></extra>`.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "hovertemplatesrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.",
          "type": "string"
        },
        "hovertext": {
          "description": "Same as `text`.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "hovertextsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.",
          "type": "string"
        },
        "ids": {
          "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "idssrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `ids`.",
          "type": "string"
        },
        "legend": {
          "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "legend",
              "pattern": "^legend([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "legendgrouptitle": {
          "type": "object",
          "properties": {
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "family": {
                  "pattern": ".*\\S.*$",
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                "shadow": {
                  "default": "none",
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "text": {
              "default": "",
              "description": "Sets the title of the legend group.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "legendrank": {
          "description": "Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": 1000
            }
          ]
        },
        "legendwidth": {
          "description": "Sets the width (in px or fraction) of the legend for this trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0
            }
          ]
        },
        "metasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `meta`.",
          "type": "string"
        },
        "name": {
          "description": "Sets the trace name. The trace name appears as the legend item and on hover.",
          "type": "string"
        },
        "opacity": {
          "description": "Sets the opacity of the trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0,
              "maximum": 1,
              "default": 1
            }
          ]
        },
        "source": {
          "description": "Specifies the data URI of the image to be visualized. The URI consists of \"data:image/[<media subtype>][;base64],<data>\"",
          "type": "string"
        },
        "stream": {
          "type": "object",
          "properties": {
            "maxpoints": {
              "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 10000,
                  "default": 500
                }
              ]
            },
            "token": {
              "pattern": ".*\\S.*$",
              "description": "The stream id number links a data trace on a plot with a stream. See <https://chart-studio.plotly.com/settings> for more details.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "text": {
          "description": "Sets the text elements associated with each z value.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "textsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `text`.",
          "type": "string"
        },
        "uid": {
          "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.",
          "type": "string"
        },
        "uirevision": {
          "description": "Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves."
        },
        "visible": {
          "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                true,
                false,
                "legendonly"
              ],
              "default": true
            }
          ]
        },
        "x0": {
          "default": 0,
          "description": "Set the image's x position. The left edge of the image (or the right edge if the x axis is reversed or dx is negative) will be found at xmin=x0-dx/2"
        },
        "xaxis": {
          "description": "Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "x",
              "pattern": "^x([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "y0": {
          "default": 0,
          "description": "Set the image's y position. The top edge of the image (or the bottom edge if the y axis is NOT reversed or if dy is negative) will be found at ymin=y0-dy/2. By default when an image trace is included, the y axis will be reversed so that the image is right-side-up, but you can disable this by setting yaxis.autorange=true or by providing an explicit y axis range."
        },
        "yaxis": {
          "description": "Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "y",
              "pattern": "^y([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "z": {
          "description": "A 2-dimensional array in which each element is an array of 3 or 4 numbers representing a color.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "zmax": {
          "description": "Array defining the higher bound for each color component. Note that the default value will depend on the colormodel. For the `rgb` colormodel, it is [255, 255, 255]. For the `rgba` colormodel, it is [255, 255, 255, 1]. For the `rgba256` colormodel, it is [255, 255, 255, 255]. For the `hsl` colormodel, it is [360, 100, 100]. For the `hsla` colormodel, it is [360, 100, 100, 1].",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "number"
                  }
                ]
              },
              "minItems": 4,
              "maxItems": 4
            }
          ]
        },
        "zmin": {
          "description": "Array defining the lower bound for each color component. Note that the default value will depend on the colormodel. For the `rgb` colormodel, it is [0, 0, 0]. For the `rgba` colormodel, it is [0, 0, 0, 0]. For the `rgba256` colormodel, it is [0, 0, 0, 0]. For the `hsl` colormodel, it is [0, 0, 0]. For the `hsla` colormodel, it is [0, 0, 0, 0].",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "number"
                  }
                ]
              },
              "minItems": 4,
              "maxItems": 4
            }
          ]
        },
        "zorder": {
          "description": "Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "integer",
              "default": 0
            }
          ]
        },
        "zsmooth": {
          "description": "Picks a smoothing algorithm used to smooth `z` data. This only applies for image traces that use the `source` attribute.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "fast",
                false
              ],
              "default": false
            }
          ]
        },
        "zsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `z`.",
          "type": "string"
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false
    },
    "Indicator": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "$id": "https://visivo.io/trace-properties/schema",
      "description": "A schema to validate plotly trace properties",
      "type": "object",
      "properties": {
        "type": {
          "const": "indicator"
        },
        "align": {
          "description": "Sets the horizontal alignment of the `text` within the box. Note that this attribute has no effect if an angular gauge is displayed: in this case, it is always centered",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "left",
                "center",
                "right"
              ]
            }
          ]
        },
        "customdata": {
          "description": "Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "customdatasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `customdata`.",
          "type": "string"
        },
        "delta": {
          "type": "object",
          "properties": {
            "decreasing": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the color for increasing value.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "symbol": {
                  "default": "▼",
                  "description": "Sets the symbol to display for increasing value",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "family": {
                  "pattern": ".*\\S.*$",
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                "shadow": {
                  "default": "none",
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "increasing": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the color for increasing value.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "symbol": {
                  "default": "▲",
                  "description": "Sets the symbol to display for increasing value",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "position": {
              "description": "Sets the position of delta with respect to the number.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "top",
                    "bottom",
                    "left",
                    "right"
                  ],
                  "default": "bottom"
                }
              ]
            },
            "prefix": {
              "default": "",
              "description": "Sets a prefix appearing before the delta.",
              "type": "string"
            },
            "reference": {
              "description": "Sets the reference value to compute the delta. By default, it is set to the current value.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number"
                }
              ]
            },
            "relative": {
              "description": "Show relative change",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            },
            "suffix": {
              "default": "",
              "description": "Sets a suffix appearing next to the delta.",
              "type": "string"
            },
            "valueformat": {
              "description": "Sets the value formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "domain": {
          "type": "object",
          "properties": {
            "column": {
              "description": "If there is a layout grid, use the domain for this column in the grid for this indicator trace .",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "row": {
              "description": "If there is a layout grid, use the domain for this row in the grid for this indicator trace .",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "x": {
              "description": "Sets the horizontal domain of this indicator trace (in plot fraction).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 1
                      }
                    ]
                  },
                  "minItems": 2,
                  "maxItems": 2,
                  "default": [
                    0,
                    1
                  ]
                }
              ]
            },
            "y": {
              "description": "Sets the vertical domain of this indicator trace (in plot fraction).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 1
                      }
                    ]
                  },
                  "minItems": 2,
                  "maxItems": 2,
                  "default": [
                    0,
                    1
                  ]
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "gauge": {
          "type": "object",
          "properties": {
            "axis": {
              "type": "object",
              "properties": {
                "dtick": {
                  "description": "Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L<f>*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M<n>* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48*"
                },
                "exponentformat": {
                  "description": "Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "none",
                        "e",
                        "E",
                        "power",
                        "SI",
                        "B"
                      ],
                      "default": "B"
                    }
                  ]
                },
                "labelalias": {
                  "default": false,
                  "description": "Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax."
                },
                "minexponent": {
                  "description": "Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 3
                    }
                  ]
                },
                "nticks": {
                  "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 0,
                      "default": 0
                    }
                  ]
                },
                "range": {
                  "description": "Sets the range of this axis.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number"
                          }
                        ]
                      },
                      "minItems": 2,
                      "maxItems": 2
                    }
                  ]
                },
                "separatethousands": {
                  "description": "If \"true\", even 4-digit integers are separated",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": false
                    }
                  ]
                },
                "showexponent": {
                  "description": "If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "showticklabels": {
                  "description": "Determines whether or not the tick labels are drawn.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                },
                "showtickprefix": {
                  "description": "If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "showticksuffix": {
                  "description": "Same as `showtickprefix` but for tick suffixes.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "tick0": {
                  "description": "Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L<f>* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears."
                },
                "tickangle": {
                  "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": -180,
                      "maximum": 180,
                      "default": "auto"
                    }
                  ]
                },
                "tickcolor": {
                  "description": "Sets the tick color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "tickfont": {
                  "type": "object",
                  "properties": {
                    "color": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    "family": {
                      "pattern": ".*\\S.*$",
                      "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                      "type": "string"
                    },
                    "lineposition": {
                      "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    "shadow": {
                      "default": "none",
                      "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                      "type": "string"
                    },
                    "size": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    "style": {
                      "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "textcase": {
                      "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "variant": {
                      "description": "Sets the variant of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "weight": {
                      "description": "Sets the weight (or boldness) of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    }
                  },
                  "additionalProperties": false
                },
                "tickformat": {
                  "default": "",
                  "description": "Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*",
                  "type": "string"
                },
                "tickformatstops": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "dtickrange": {
                        "description": "range [*min*, *max*], where *min*, *max* - dtick values which describe some zoom level, it is possible to omit *min* or *max* value by passing *null*",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "array",
                            "items": {},
                            "minItems": 2,
                            "maxItems": 2
                          }
                        ]
                      },
                      "enabled": {
                        "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "boolean",
                            "default": true
                          }
                        ]
                      },
                      "name": {
                        "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.",
                        "type": "string"
                      },
                      "templateitemname": {
                        "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.",
                        "type": "string"
                      },
                      "value": {
                        "default": "",
                        "description": "string - dtickformat for described zoom level, the same as *tickformat*",
                        "type": "string"
                      }
                    },
                    "additionalProperties": false
                  },
                  "minItems": 1
                },
                "ticklabelstep": {
                  "description": "Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "default": 1
                    }
                  ]
                },
                "ticklen": {
                  "description": "Sets the tick length (in px).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 5
                    }
                  ]
                },
                "tickmode": {
                  "description": "Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "auto",
                        "linear",
                        "array"
                      ]
                    }
                  ]
                },
                "tickprefix": {
                  "default": "",
                  "description": "Sets a tick label prefix.",
                  "type": "string"
                },
                "ticks": {
                  "description": "Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "outside",
                        "inside",
                        ""
                      ],
                      "default": "outside"
                    }
                  ]
                },
                "ticksuffix": {
                  "default": "",
                  "description": "Sets a tick label suffix.",
                  "type": "string"
                },
                "ticktext": {
                  "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "string"
                          }
                        ]
                      }
                    }
                  ]
                },
                "ticktextsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.",
                  "type": "string"
                },
                "tickvals": {
                  "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "string"
                          }
                        ]
                      }
                    }
                  ]
                },
                "tickvalssrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.",
                  "type": "string"
                },
                "tickwidth": {
                  "description": "Sets the tick width (in px).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "visible": {
                  "description": "A single toggle to hide the axis while preserving interaction like dragging. Default is true when a cheater plot is present on the axis, otherwise false",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "bar": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the background color of the arc.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "line": {
                  "type": "object",
                  "properties": {
                    "color": {
                      "description": "Sets the color of the line enclosing each sector.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    "width": {
                      "description": "Sets the width (in px) of the line enclosing each sector.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 0,
                          "default": 0
                        }
                      ]
                    }
                  },
                  "additionalProperties": false
                },
                "thickness": {
                  "description": "Sets the thickness of the bar as a fraction of the total thickness of the gauge.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1,
                      "default": 1
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "bgcolor": {
              "description": "Sets the gauge background color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "bordercolor": {
              "description": "Sets the color of the border enclosing the gauge.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "borderwidth": {
              "description": "Sets the width (in px) of the border enclosing the gauge.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 1
                }
              ]
            },
            "shape": {
              "description": "Set the shape of the gauge",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "angular",
                    "bullet"
                  ],
                  "default": "angular"
                }
              ]
            },
            "steps": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "color": {
                    "description": "Sets the background color of the arc.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  },
                  "line": {
                    "type": "object",
                    "properties": {
                      "color": {
                        "description": "Sets the color of the line enclosing each sector.",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      },
                      "width": {
                        "description": "Sets the width (in px) of the line enclosing each sector.",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 0,
                            "default": 0
                          }
                        ]
                      }
                    },
                    "additionalProperties": false
                  },
                  "name": {
                    "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.",
                    "type": "string"
                  },
                  "range": {
                    "description": "Sets the range of this axis.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "array",
                        "items": {
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "type": "number"
                            }
                          ]
                        },
                        "minItems": 2,
                        "maxItems": 2
                      }
                    ]
                  },
                  "templateitemname": {
                    "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.",
                    "type": "string"
                  },
                  "thickness": {
                    "description": "Sets the thickness of the bar as a fraction of the total thickness of the gauge.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 1,
                        "default": 1
                      }
                    ]
                  }
                },
                "additionalProperties": false
              },
              "minItems": 1
            },
            "threshold": {
              "type": "object",
              "properties": {
                "line": {
                  "type": "object",
                  "properties": {
                    "color": {
                      "description": "Sets the color of the threshold line.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    "width": {
                      "description": "Sets the width (in px) of the threshold line.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 0,
                          "default": 1
                        }
                      ]
                    }
                  },
                  "additionalProperties": false
                },
                "thickness": {
                  "description": "Sets the thickness of the threshold line as a fraction of the thickness of the gauge.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1,
                      "default": 0.85
                    }
                  ]
                },
                "value": {
                  "description": "Sets a threshold value drawn as a line.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "default": false
                    }
                  ]
                }
              },
              "additionalProperties": false
            }
          },
          "additionalProperties": false
        },
        "ids": {
          "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "idssrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `ids`.",
          "type": "string"
        },
        "legend": {
          "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "legend",
              "pattern": "^legend([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "legendgrouptitle": {
          "type": "object",
          "properties": {
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "family": {
                  "pattern": ".*\\S.*$",
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                "shadow": {
                  "default": "none",
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "text": {
              "default": "",
              "description": "Sets the title of the legend group.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "legendrank": {
          "description": "Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": 1000
            }
          ]
        },
        "legendwidth": {
          "description": "Sets the width (in px or fraction) of the legend for this trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0
            }
          ]
        },
        "metasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `meta`.",
          "type": "string"
        },
        "mode": {
          "description": "Determines how the value is displayed on the graph. `number` displays the value numerically in text. `delta` displays the difference to a reference value in text. Finally, `gauge` displays the value graphically on an axis.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "pattern": "^(number|delta|gauge)(\\+(number|delta|gauge))*$",
              "default": "number"
            }
          ]
        },
        "name": {
          "description": "Sets the trace name. The trace name appears as the legend item and on hover.",
          "type": "string"
        },
        "number": {
          "type": "object",
          "properties": {
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "family": {
                  "pattern": ".*\\S.*$",
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                "shadow": {
                  "default": "none",
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "prefix": {
              "default": "",
              "description": "Sets a prefix appearing before the number.",
              "type": "string"
            },
            "suffix": {
              "default": "",
              "description": "Sets a suffix appearing next to the number.",
              "type": "string"
            },
            "valueformat": {
              "default": "",
              "description": "Sets the value formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "stream": {
          "type": "object",
          "properties": {
            "maxpoints": {
              "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 10000,
                  "default": 500
                }
              ]
            },
            "token": {
              "pattern": ".*\\S.*$",
              "description": "The stream id number links a data trace on a plot with a stream. See <https://chart-studio.plotly.com/settings> for more details.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "title": {
          "type": "object",
          "properties": {
            "align": {
              "description": "Sets the horizontal alignment of the title. It defaults to `center` except for bullet charts for which it defaults to right.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "left",
                    "center",
                    "right"
                  ]
                }
              ]
            },
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "family": {
                  "pattern": ".*\\S.*$",
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                "shadow": {
                  "default": "none",
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "text": {
              "description": "Sets the title of this indicator.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "uid": {
          "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.",
          "type": "string"
        },
        "uirevision": {
          "description": "Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves."
        },
        "value": {
          "description": "Sets the number to be displayed.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number"
            }
          ]
        },
        "visible": {
          "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                true,
                false,
                "legendonly"
              ],
              "default": true
            }
          ]
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false
    },
    "Isosurface": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "$id": "https://visivo.io/trace-properties/schema",
      "description": "A schema to validate plotly trace properties",
      "type": "object",
      "properties": {
        "type": {
          "const": "isosurface"
        },
        "autocolorscale": {
          "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "caps": {
          "type": "object",
          "properties": {
            "x": {
              "type": "object",
              "properties": {
                "fill": {
                  "description": "Sets the fill ratio of the `caps`. The default fill value of the `caps` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1,
                      "default": 1
                    }
                  ]
                },
                "show": {
                  "description": "Sets the fill ratio of the `slices`. The default fill value of the x `slices` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "y": {
              "type": "object",
              "properties": {
                "fill": {
                  "description": "Sets the fill ratio of the `caps`. The default fill value of the `caps` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1,
                      "default": 1
                    }
                  ]
                },
                "show": {
                  "description": "Sets the fill ratio of the `slices`. The default fill value of the y `slices` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "z": {
              "type": "object",
              "properties": {
                "fill": {
                  "description": "Sets the fill ratio of the `caps`. The default fill value of the `caps` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1,
                      "default": 1
                    }
                  ]
                },
                "show": {
                  "description": "Sets the fill ratio of the `slices`. The default fill value of the z `slices` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                }
              },
              "additionalProperties": false
            }
          },
          "additionalProperties": false
        },
        "cauto": {
          "description": "Determines whether or not the color domain is computed with respect to the input data (here `value`) or the bounds set in `cmin` and `cmax` Defaults to `false` when `cmin` and `cmax` are set by the user.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "cmax": {
          "description": "Sets the upper bound of the color domain. Value should have the same units as `value` and if set, `cmin` must be set as well.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": null
            }
          ]
        },
        "cmid": {
          "description": "Sets the mid-point of the color domain by scaling `cmin` and/or `cmax` to be equidistant to this point. Value should have the same units as `value`. Has no effect when `cauto` is `false`.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": null
            }
          ]
        },
        "cmin": {
          "description": "Sets the lower bound of the color domain. Value should have the same units as `value` and if set, `cmax` must be set as well.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": null
            }
          ]
        },
        "coloraxis": {
          "description": "Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": null,
              "pattern": "/^coloraxis([2-9]|[1-9][0-9]+)?$/"
            }
          ]
        },
        "colorbar": {
          "type": "object",
          "properties": {
            "bgcolor": {
              "description": "Sets the color of padded area.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "bordercolor": {
              "description": "Sets the axis line color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "borderwidth": {
              "description": "Sets the width (in px) or the border enclosing this color bar.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "dtick": {
              "description": "Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L<f>*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M<n>* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48*"
            },
            "exponentformat": {
              "description": "Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "none",
                    "e",
                    "E",
                    "power",
                    "SI",
                    "B"
                  ],
                  "default": "B"
                }
              ]
            },
            "labelalias": {
              "default": false,
              "description": "Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax."
            },
            "len": {
              "description": "Sets the length of the color bar This measure excludes the padding of both ends. That is, the color bar length is this length minus the padding on both ends.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 1
                }
              ]
            },
            "lenmode": {
              "description": "Determines whether this color bar's length (i.e. the measure in the color variation direction) is set in units of plot *fraction* or in *pixels. Use `len` to set the value.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "fraction",
                    "pixels"
                  ],
                  "default": "fraction"
                }
              ]
            },
            "minexponent": {
              "description": "Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 3
                }
              ]
            },
            "nticks": {
              "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "orientation": {
              "description": "Sets the orientation of the colorbar.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "h",
                    "v"
                  ],
                  "default": "v"
                }
              ]
            },
            "outlinecolor": {
              "description": "Sets the axis line color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "outlinewidth": {
              "description": "Sets the width (in px) of the axis line.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 1
                }
              ]
            },
            "separatethousands": {
              "description": "If \"true\", even 4-digit integers are separated",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            },
            "showexponent": {
              "description": "If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "all",
                    "first",
                    "last",
                    "none"
                  ],
                  "default": "all"
                }
              ]
            },
            "showticklabels": {
              "description": "Determines whether or not the tick labels are drawn.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": true
                }
              ]
            },
            "showtickprefix": {
              "description": "If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "all",
                    "first",
                    "last",
                    "none"
                  ],
                  "default": "all"
                }
              ]
            },
            "showticksuffix": {
              "description": "Same as `showtickprefix` but for tick suffixes.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "all",
                    "first",
                    "last",
                    "none"
                  ],
                  "default": "all"
                }
              ]
            },
            "thickness": {
              "description": "Sets the thickness of the color bar This measure excludes the size of the padding, ticks and labels.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 30
                }
              ]
            },
            "thicknessmode": {
              "description": "Determines whether this color bar's thickness (i.e. the measure in the constant color direction) is set in units of plot *fraction* or in *pixels*. Use `thickness` to set the value.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "fraction",
                    "pixels"
                  ],
                  "default": "pixels"
                }
              ]
            },
            "tick0": {
              "description": "Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L<f>* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears."
            },
            "tickangle": {
              "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": -180,
                  "maximum": 180,
                  "default": "auto"
                }
              ]
            },
            "tickcolor": {
              "description": "Sets the tick color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "tickfont": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "family": {
                  "pattern": ".*\\S.*$",
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                "shadow": {
                  "default": "none",
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "tickformat": {
              "default": "",
              "description": "Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*",
              "type": "string"
            },
            "tickformatstops": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "dtickrange": {
                    "description": "range [*min*, *max*], where *min*, *max* - dtick values which describe some zoom level, it is possible to omit *min* or *max* value by passing *null*",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "array",
                        "items": {},
                        "minItems": 2,
                        "maxItems": 2
                      }
                    ]
                  },
                  "enabled": {
                    "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "boolean",
                        "default": true
                      }
                    ]
                  },
                  "name": {
                    "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.",
                    "type": "string"
                  },
                  "templateitemname": {
                    "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.",
                    "type": "string"
                  },
                  "value": {
                    "default": "",
                    "description": "string - dtickformat for described zoom level, the same as *tickformat*",
                    "type": "string"
                  }
                },
                "additionalProperties": false
              },
              "minItems": 1
            },
            "ticklabeloverflow": {
              "description": "Determines how we handle tick labels that would overflow either the graph div or the domain of the axis. The default value for inside tick labels is *hide past domain*. In other cases the default is *hide past div*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "allow",
                    "hide past div",
                    "hide past domain"
                  ]
                }
              ]
            },
            "ticklabelposition": {
              "description": "Determines where tick labels are drawn relative to the ticks. Left and right options are used when `orientation` is *h*, top and bottom when `orientation` is *v*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "outside",
                    "inside",
                    "outside top",
                    "inside top",
                    "outside left",
                    "inside left",
                    "outside right",
                    "inside right",
                    "outside bottom",
                    "inside bottom"
                  ],
                  "default": "outside"
                }
              ]
            },
            "ticklabelstep": {
              "description": "Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 1,
                  "default": 1
                }
              ]
            },
            "ticklen": {
              "description": "Sets the tick length (in px).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 5
                }
              ]
            },
            "tickmode": {
              "description": "Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "auto",
                    "linear",
                    "array"
                  ]
                }
              ]
            },
            "tickprefix": {
              "default": "",
              "description": "Sets a tick label prefix.",
              "type": "string"
            },
            "ticks": {
              "description": "Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "outside",
                    "inside",
                    ""
                  ],
                  "default": ""
                }
              ]
            },
            "ticksuffix": {
              "default": "",
              "description": "Sets a tick label suffix.",
              "type": "string"
            },
            "ticktext": {
              "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  }
                }
              ]
            },
            "ticktextsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.",
              "type": "string"
            },
            "tickvals": {
              "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  }
                }
              ]
            },
            "tickvalssrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.",
              "type": "string"
            },
            "tickwidth": {
              "description": "Sets the tick width (in px).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 1
                }
              ]
            },
            "title": {
              "type": "object",
              "properties": {
                "font": {
                  "type": "object",
                  "properties": {
                    "color": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    "family": {
                      "pattern": ".*\\S.*$",
                      "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                      "type": "string"
                    },
                    "lineposition": {
                      "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    "shadow": {
                      "default": "none",
                      "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                      "type": "string"
                    },
                    "size": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    "style": {
                      "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "textcase": {
                      "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "variant": {
                      "description": "Sets the variant of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "weight": {
                      "description": "Sets the weight (or boldness) of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    }
                  },
                  "additionalProperties": false
                },
                "side": {
                  "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and  defaults to *right* when `orientation` if *h*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "right",
                        "top",
                        "bottom"
                      ]
                    }
                  ]
                },
                "text": {
                  "description": "Sets the title of the color bar.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "x": {
              "description": "Sets the x position with respect to `xref` of the color bar (in plot fraction). When `xref` is *paper*, defaults to 1.02 when `orientation` is *v* and 0.5 when `orientation` is *h*. When `xref` is *container*, defaults to *1* when `orientation` is *v* and 0.5 when `orientation` is *h*. Must be between *0* and *1* if `xref` is *container* and between *-2* and *3* if `xref` is *paper*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number"
                }
              ]
            },
            "xanchor": {
              "description": "Sets this color bar's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the color bar. Defaults to *left* when `orientation` is *v* and *center* when `orientation` is *h*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "left",
                    "center",
                    "right"
                  ]
                }
              ]
            },
            "xpad": {
              "description": "Sets the amount of padding (in px) along the x direction.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 10
                }
              ]
            },
            "xref": {
              "description": "Sets the container `x` refers to. *container* spans the entire `width` of the plot. *paper* refers to the width of the plotting area only.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "container",
                    "paper"
                  ],
                  "default": "paper"
                }
              ]
            },
            "y": {
              "description": "Sets the y position with respect to `yref` of the color bar (in plot fraction). When `yref` is *paper*, defaults to 0.5 when `orientation` is *v* and 1.02 when `orientation` is *h*. When `yref` is *container*, defaults to 0.5 when `orientation` is *v* and 1 when `orientation` is *h*. Must be between *0* and *1* if `yref` is *container* and between *-2* and *3* if `yref` is *paper*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number"
                }
              ]
            },
            "yanchor": {
              "description": "Sets this color bar's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the color bar. Defaults to *middle* when `orientation` is *v* and *bottom* when `orientation` is *h*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "top",
                    "middle",
                    "bottom"
                  ]
                }
              ]
            },
            "ypad": {
              "description": "Sets the amount of padding (in px) along the y direction.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 10
                }
              ]
            },
            "yref": {
              "description": "Sets the container `y` refers to. *container* spans the entire `height` of the plot. *paper* refers to the height of the plotting area only.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "container",
                    "paper"
                  ],
                  "default": "paper"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "colorscale": {
          "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "$ref": "#/$defs/colorscale",
              "default": null
            }
          ]
        },
        "contour": {
          "type": "object",
          "properties": {
            "color": {
              "description": "Sets the color of the contour lines.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "show": {
              "description": "Sets whether or not dynamic contours are shown on hover",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            },
            "width": {
              "description": "Sets the width of the contour lines.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 1,
                  "maximum": 16,
                  "default": 2
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "customdata": {
          "description": "Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "customdatasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `customdata`.",
          "type": "string"
        },
        "flatshading": {
          "description": "Determines whether or not normal smoothing is applied to the meshes, creating meshes with an angular, low-poly look via flat reflections.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "hoverinfo": {
          "description": "Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired.",
          "oneOf": [
            {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "oneOf": [
                    {
                      "type": "string",
                      "enum": [
                        "all",
                        "none",
                        "skip"
                      ]
                    },
                    {
                      "type": "string",
                      "pattern": "^(x|y|z|text|name)(\\+(x|y|z|text|name))*$"
                    }
                  ],
                  "default": "all"
                }
              ]
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "oneOf": [
                      {
                        "type": "string",
                        "enum": [
                          "all",
                          "none",
                          "skip"
                        ]
                      },
                      {
                        "type": "string",
                        "pattern": "^(x|y|z|text|name)(\\+(x|y|z|text|name))*$"
                      }
                    ],
                    "default": "all"
                  }
                ]
              }
            }
          ]
        },
        "hoverinfosrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.",
          "type": "string"
        },
        "hoverlabel": {
          "type": "object",
          "properties": {
            "align": {
              "description": "Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "left",
                        "right",
                        "auto"
                      ],
                      "default": "auto"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "left",
                          "right",
                          "auto"
                        ],
                        "default": "auto"
                      }
                    ]
                  }
                }
              ]
            },
            "alignsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `align`.",
              "type": "string"
            },
            "bgcolor": {
              "description": "Sets the background color of the hover labels for this trace",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "bgcolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.",
              "type": "string"
            },
            "bordercolor": {
              "description": "Sets the border color of the hover labels for this trace.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "bordercolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.",
              "type": "string"
            },
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "colorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `color`.",
                  "type": "string"
                },
                "family": {
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "oneOf": [
                    {
                      "pattern": ".*\\S.*$",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "pattern": ".*\\S.*$",
                        "type": "string"
                      }
                    },
                    {
                      "$ref": "#/$defs/query-string"
                    }
                  ]
                },
                "familysrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `family`.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "oneOf": [
                              {
                                "type": "string",
                                "enum": [
                                  "none"
                                ]
                              },
                              {
                                "type": "string",
                                "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                              }
                            ],
                            "default": "none"
                          }
                        ]
                      }
                    }
                  ]
                },
                "linepositionsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.",
                  "type": "string"
                },
                "shadow": {
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "oneOf": [
                    {
                      "default": "none",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "default": "none",
                        "type": "string"
                      }
                    }
                  ]
                },
                "shadowsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `shadow`.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 1
                          }
                        ]
                      }
                    }
                  ]
                },
                "sizesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `size`.",
                  "type": "string"
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "italic"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "stylesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `style`.",
                  "type": "string"
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "word caps",
                              "upper",
                              "lower"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "textcasesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `textcase`.",
                  "type": "string"
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "small-caps",
                              "all-small-caps",
                              "all-petite-caps",
                              "petite-caps",
                              "unicase"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "variantsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `variant`.",
                  "type": "string"
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 1000,
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "weightsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `weight`.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "namelength": {
              "description": "Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": -1,
                      "default": 15
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "integer",
                        "minimum": -1,
                        "default": 15
                      }
                    ]
                  }
                }
              ]
            },
            "namelengthsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `namelength`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "hovertemplate": {
          "description": "Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". <https://github.com/d3/d3-format/tree/v1.4.5#d3-format> for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format> for details on the date formatting syntax. The variables available in `hovertemplate` are the ones emitted as event data described at this link <https://plotly.com/javascript/plotlyjs-events/#event-data>. Additionally, every attributes that can be specified per-point (the ones that are `arrayOk: true`) are available.  Anything contained in tag `<extra>` is displayed in the secondary box, for example \"<extra>{fullData.name}</extra>\". To hide the secondary box completely, use an empty tag `<extra></extra>`.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "hovertemplatesrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.",
          "type": "string"
        },
        "hovertext": {
          "description": "Same as `text`.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "hovertextsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.",
          "type": "string"
        },
        "ids": {
          "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "idssrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `ids`.",
          "type": "string"
        },
        "isomax": {
          "description": "Sets the maximum boundary for iso-surface plot.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number"
            }
          ]
        },
        "isomin": {
          "description": "Sets the minimum boundary for iso-surface plot.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number"
            }
          ]
        },
        "legend": {
          "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "legend",
              "pattern": "^legend([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "legendgroup": {
          "default": "",
          "description": "Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items.",
          "type": "string"
        },
        "legendgrouptitle": {
          "type": "object",
          "properties": {
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "family": {
                  "pattern": ".*\\S.*$",
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                "shadow": {
                  "default": "none",
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "text": {
              "default": "",
              "description": "Sets the title of the legend group.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "legendrank": {
          "description": "Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": 1000
            }
          ]
        },
        "legendwidth": {
          "description": "Sets the width (in px or fraction) of the legend for this trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0
            }
          ]
        },
        "lighting": {
          "type": "object",
          "properties": {
            "ambient": {
              "description": "Ambient light increases overall color visibility but can wash out the image.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 1,
                  "default": 0.8
                }
              ]
            },
            "diffuse": {
              "description": "Represents the extent that incident rays are reflected in a range of angles.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 1,
                  "default": 0.8
                }
              ]
            },
            "facenormalsepsilon": {
              "description": "Epsilon for face normals calculation avoids math issues arising from degenerate geometry.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 1,
                  "default": 0
                }
              ]
            },
            "fresnel": {
              "description": "Represents the reflectance as a dependency of the viewing angle; e.g. paper is reflective when viewing it from the edge of the paper (almost 90 degrees), causing shine.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 5,
                  "default": 0.2
                }
              ]
            },
            "roughness": {
              "description": "Alters specular reflection; the rougher the surface, the wider and less contrasty the shine.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 1,
                  "default": 0.5
                }
              ]
            },
            "specular": {
              "description": "Represents the level that incident rays are reflected in a single direction, causing shine.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 2,
                  "default": 0.05
                }
              ]
            },
            "vertexnormalsepsilon": {
              "description": "Epsilon for vertex normals calculation avoids math issues arising from degenerate geometry.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 1,
                  "default": 1e-12
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "lightposition": {
          "type": "object",
          "properties": {
            "x": {
              "description": "Numeric vector, representing the X coordinate for each vertex.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": -100000,
                  "maximum": 100000,
                  "default": 100000
                }
              ]
            },
            "y": {
              "description": "Numeric vector, representing the Y coordinate for each vertex.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": -100000,
                  "maximum": 100000,
                  "default": 100000
                }
              ]
            },
            "z": {
              "description": "Numeric vector, representing the Z coordinate for each vertex.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": -100000,
                  "maximum": 100000,
                  "default": 0
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "metasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `meta`.",
          "type": "string"
        },
        "name": {
          "description": "Sets the trace name. The trace name appears as the legend item and on hover.",
          "type": "string"
        },
        "opacity": {
          "description": "Sets the opacity of the surface. Please note that in the case of using high `opacity` values for example a value greater than or equal to 0.5 on two surfaces (and 0.25 with four surfaces), an overlay of multiple transparent surfaces may not perfectly be sorted in depth by the webgl API. This behavior may be improved in the near future and is subject to change.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0,
              "maximum": 1,
              "default": 1
            }
          ]
        },
        "reversescale": {
          "description": "Reverses the color mapping if true. If true, `cmin` will correspond to the last color in the array and `cmax` will correspond to the first color.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": false
            }
          ]
        },
        "scene": {
          "description": "Sets a reference between this trace's 3D coordinate system and a 3D scene. If *scene* (the default value), the (x,y,z) coordinates refer to `layout.scene`. If *scene2*, the (x,y,z) coordinates refer to `layout.scene2`, and so on.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "scene",
              "pattern": "^scene([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "showlegend": {
          "description": "Determines whether or not an item corresponding to this trace is shown in the legend.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": false
            }
          ]
        },
        "showscale": {
          "description": "Determines whether or not a colorbar is displayed for this trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "slices": {
          "type": "object",
          "properties": {
            "x": {
              "type": "object",
              "properties": {
                "fill": {
                  "description": "Sets the fill ratio of the `slices`. The default fill value of the `slices` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1,
                      "default": 1
                    }
                  ]
                },
                "locations": {
                  "description": "Specifies the location(s) of slices on the axis. When not specified slices would be created for all points of the axis x except start and end.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "string"
                          }
                        ]
                      },
                      "default": []
                    }
                  ]
                },
                "locationssrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `locations`.",
                  "type": "string"
                },
                "show": {
                  "description": "Determines whether or not slice planes about the x dimension are drawn.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": false
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "y": {
              "type": "object",
              "properties": {
                "fill": {
                  "description": "Sets the fill ratio of the `slices`. The default fill value of the `slices` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1,
                      "default": 1
                    }
                  ]
                },
                "locations": {
                  "description": "Specifies the location(s) of slices on the axis. When not specified slices would be created for all points of the axis y except start and end.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "string"
                          }
                        ]
                      },
                      "default": []
                    }
                  ]
                },
                "locationssrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `locations`.",
                  "type": "string"
                },
                "show": {
                  "description": "Determines whether or not slice planes about the y dimension are drawn.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": false
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "z": {
              "type": "object",
              "properties": {
                "fill": {
                  "description": "Sets the fill ratio of the `slices`. The default fill value of the `slices` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1,
                      "default": 1
                    }
                  ]
                },
                "locations": {
                  "description": "Specifies the location(s) of slices on the axis. When not specified slices would be created for all points of the axis z except start and end.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "string"
                          }
                        ]
                      },
                      "default": []
                    }
                  ]
                },
                "locationssrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `locations`.",
                  "type": "string"
                },
                "show": {
                  "description": "Determines whether or not slice planes about the z dimension are drawn.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": false
                    }
                  ]
                }
              },
              "additionalProperties": false
            }
          },
          "additionalProperties": false
        },
        "spaceframe": {
          "type": "object",
          "properties": {
            "fill": {
              "description": "Sets the fill ratio of the `spaceframe` elements. The default fill value is 0.15 meaning that only 15% of the area of every faces of tetras would be shaded. Applying a greater `fill` ratio would allow the creation of stronger elements or could be sued to have entirely closed areas (in case of using 1).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 1,
                  "default": 0.15
                }
              ]
            },
            "show": {
              "description": "Displays/hides tetrahedron shapes between minimum and maximum iso-values. Often useful when either caps or surfaces are disabled or filled with values less than 1.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "stream": {
          "type": "object",
          "properties": {
            "maxpoints": {
              "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 10000,
                  "default": 500
                }
              ]
            },
            "token": {
              "pattern": ".*\\S.*$",
              "description": "The stream id number links a data trace on a plot with a stream. See <https://chart-studio.plotly.com/settings> for more details.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "surface": {
          "type": "object",
          "properties": {
            "count": {
              "description": "Sets the number of iso-surfaces between minimum and maximum iso-values. By default this value is 2 meaning that only minimum and maximum surfaces would be drawn.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 1,
                  "default": 2
                }
              ]
            },
            "fill": {
              "description": "Sets the fill ratio of the iso-surface. The default fill value of the surface is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 1,
                  "default": 1
                }
              ]
            },
            "pattern": {
              "description": "Sets the surface pattern of the iso-surface 3-D sections. The default pattern of the surface is `all` meaning that the rest of surface elements would be shaded. The check options (either 1 or 2) could be used to draw half of the squares on the surface. Using various combinations of capital `A`, `B`, `C`, `D` and `E` may also be used to reduce the number of triangles on the iso-surfaces and creating other patterns of interest.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "oneOf": [
                    {
                      "type": "string",
                      "enum": [
                        "all",
                        "odd",
                        "even"
                      ]
                    },
                    {
                      "type": "string",
                      "pattern": "^(A|B|C|D|E)(\\+(A|B|C|D|E))*$"
                    }
                  ],
                  "default": "all"
                }
              ]
            },
            "show": {
              "description": "Hides/displays surfaces between minimum and maximum iso-values.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": true
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "text": {
          "description": "Sets the text elements associated with the vertices. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "textsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `text`.",
          "type": "string"
        },
        "uid": {
          "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.",
          "type": "string"
        },
        "uirevision": {
          "description": "Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves."
        },
        "value": {
          "description": "Sets the 4th dimension (value) of the vertices.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "valuehoverformat": {
          "default": "",
          "description": "Sets the hover text formatting rulefor `value`  using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By> default the values are formatted using generic number format.",
          "type": "string"
        },
        "valuesrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `value`.",
          "type": "string"
        },
        "visible": {
          "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                true,
                false,
                "legendonly"
              ],
              "default": true
            }
          ]
        },
        "x": {
          "description": "Sets the X coordinates of the vertices on X axis.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "xhoverformat": {
          "default": "",
          "description": "Sets the hover text formatting rulefor `x`  using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.",
          "type": "string"
        },
        "xsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `x`.",
          "type": "string"
        },
        "y": {
          "description": "Sets the Y coordinates of the vertices on Y axis.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "yhoverformat": {
          "default": "",
          "description": "Sets the hover text formatting rulefor `y`  using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.",
          "type": "string"
        },
        "ysrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `y`.",
          "type": "string"
        },
        "z": {
          "description": "Sets the Z coordinates of the vertices on Z axis.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "zhoverformat": {
          "default": "",
          "description": "Sets the hover text formatting rulefor `z`  using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `zaxis.hoverformat`.",
          "type": "string"
        },
        "zsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `z`.",
          "type": "string"
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false
    },
    "Mesh3d": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "$id": "https://visivo.io/trace-properties/schema",
      "description": "A schema to validate plotly trace properties",
      "type": "object",
      "properties": {
        "type": {
          "const": "mesh3d"
        },
        "alphahull": {
          "description": "Determines how the mesh surface triangles are derived from the set of vertices (points) represented by the `x`, `y` and `z` arrays, if the `i`, `j`, `k` arrays are not supplied. For general use of `mesh3d` it is preferred that `i`, `j`, `k` are supplied. If *-1*, Delaunay triangulation is used, which is mainly suitable if the mesh is a single, more or less layer surface that is perpendicular to `delaunayaxis`. In case the `delaunayaxis` intersects the mesh surface at more than one point it will result triangles that are very long in the dimension of `delaunayaxis`. If *>0*, the alpha-shape algorithm is used. In this case, the positive `alphahull` value signals the use of the alpha-shape algorithm, _and_ its value acts as the parameter for the mesh fitting. If *0*,  the convex-hull algorithm is used. It is suitable for convex bodies or if the intention is to enclose the `x`, `y` and `z` point set into a convex hull.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": -1
            }
          ]
        },
        "autocolorscale": {
          "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "cauto": {
          "description": "Determines whether or not the color domain is computed with respect to the input data (here `intensity`) or the bounds set in `cmin` and `cmax` Defaults to `false` when `cmin` and `cmax` are set by the user.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "cmax": {
          "description": "Sets the upper bound of the color domain. Value should have the same units as `intensity` and if set, `cmin` must be set as well.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": null
            }
          ]
        },
        "cmid": {
          "description": "Sets the mid-point of the color domain by scaling `cmin` and/or `cmax` to be equidistant to this point. Value should have the same units as `intensity`. Has no effect when `cauto` is `false`.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": null
            }
          ]
        },
        "cmin": {
          "description": "Sets the lower bound of the color domain. Value should have the same units as `intensity` and if set, `cmax` must be set as well.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": null
            }
          ]
        },
        "color": {
          "description": "Sets the color of the whole mesh",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "$ref": "#/$defs/color"
            }
          ]
        },
        "coloraxis": {
          "description": "Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": null,
              "pattern": "/^coloraxis([2-9]|[1-9][0-9]+)?$/"
            }
          ]
        },
        "colorbar": {
          "type": "object",
          "properties": {
            "bgcolor": {
              "description": "Sets the color of padded area.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "bordercolor": {
              "description": "Sets the axis line color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "borderwidth": {
              "description": "Sets the width (in px) or the border enclosing this color bar.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "dtick": {
              "description": "Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L<f>*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M<n>* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48*"
            },
            "exponentformat": {
              "description": "Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "none",
                    "e",
                    "E",
                    "power",
                    "SI",
                    "B"
                  ],
                  "default": "B"
                }
              ]
            },
            "labelalias": {
              "default": false,
              "description": "Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax."
            },
            "len": {
              "description": "Sets the length of the color bar This measure excludes the padding of both ends. That is, the color bar length is this length minus the padding on both ends.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 1
                }
              ]
            },
            "lenmode": {
              "description": "Determines whether this color bar's length (i.e. the measure in the color variation direction) is set in units of plot *fraction* or in *pixels. Use `len` to set the value.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "fraction",
                    "pixels"
                  ],
                  "default": "fraction"
                }
              ]
            },
            "minexponent": {
              "description": "Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 3
                }
              ]
            },
            "nticks": {
              "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "orientation": {
              "description": "Sets the orientation of the colorbar.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "h",
                    "v"
                  ],
                  "default": "v"
                }
              ]
            },
            "outlinecolor": {
              "description": "Sets the axis line color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "outlinewidth": {
              "description": "Sets the width (in px) of the axis line.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 1
                }
              ]
            },
            "separatethousands": {
              "description": "If \"true\", even 4-digit integers are separated",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            },
            "showexponent": {
              "description": "If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "all",
                    "first",
                    "last",
                    "none"
                  ],
                  "default": "all"
                }
              ]
            },
            "showticklabels": {
              "description": "Determines whether or not the tick labels are drawn.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": true
                }
              ]
            },
            "showtickprefix": {
              "description": "If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "all",
                    "first",
                    "last",
                    "none"
                  ],
                  "default": "all"
                }
              ]
            },
            "showticksuffix": {
              "description": "Same as `showtickprefix` but for tick suffixes.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "all",
                    "first",
                    "last",
                    "none"
                  ],
                  "default": "all"
                }
              ]
            },
            "thickness": {
              "description": "Sets the thickness of the color bar This measure excludes the size of the padding, ticks and labels.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 30
                }
              ]
            },
            "thicknessmode": {
              "description": "Determines whether this color bar's thickness (i.e. the measure in the constant color direction) is set in units of plot *fraction* or in *pixels*. Use `thickness` to set the value.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "fraction",
                    "pixels"
                  ],
                  "default": "pixels"
                }
              ]
            },
            "tick0": {
              "description": "Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L<f>* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears."
            },
            "tickangle": {
              "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": -180,
                  "maximum": 180,
                  "default": "auto"
                }
              ]
            },
            "tickcolor": {
              "description": "Sets the tick color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "tickfont": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "family": {
                  "pattern": ".*\\S.*$",
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                "shadow": {
                  "default": "none",
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "tickformat": {
              "default": "",
              "description": "Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*",
              "type": "string"
            },
            "tickformatstops": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "dtickrange": {
                    "description": "range [*min*, *max*], where *min*, *max* - dtick values which describe some zoom level, it is possible to omit *min* or *max* value by passing *null*",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "array",
                        "items": {},
                        "minItems": 2,
                        "maxItems": 2
                      }
                    ]
                  },
                  "enabled": {
                    "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "boolean",
                        "default": true
                      }
                    ]
                  },
                  "name": {
                    "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.",
                    "type": "string"
                  },
                  "templateitemname": {
                    "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.",
                    "type": "string"
                  },
                  "value": {
                    "default": "",
                    "description": "string - dtickformat for described zoom level, the same as *tickformat*",
                    "type": "string"
                  }
                },
                "additionalProperties": false
              },
              "minItems": 1
            },
            "ticklabeloverflow": {
              "description": "Determines how we handle tick labels that would overflow either the graph div or the domain of the axis. The default value for inside tick labels is *hide past domain*. In other cases the default is *hide past div*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "allow",
                    "hide past div",
                    "hide past domain"
                  ]
                }
              ]
            },
            "ticklabelposition": {
              "description": "Determines where tick labels are drawn relative to the ticks. Left and right options are used when `orientation` is *h*, top and bottom when `orientation` is *v*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "outside",
                    "inside",
                    "outside top",
                    "inside top",
                    "outside left",
                    "inside left",
                    "outside right",
                    "inside right",
                    "outside bottom",
                    "inside bottom"
                  ],
                  "default": "outside"
                }
              ]
            },
            "ticklabelstep": {
              "description": "Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 1,
                  "default": 1
                }
              ]
            },
            "ticklen": {
              "description": "Sets the tick length (in px).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 5
                }
              ]
            },
            "tickmode": {
              "description": "Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "auto",
                    "linear",
                    "array"
                  ]
                }
              ]
            },
            "tickprefix": {
              "default": "",
              "description": "Sets a tick label prefix.",
              "type": "string"
            },
            "ticks": {
              "description": "Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "outside",
                    "inside",
                    ""
                  ],
                  "default": ""
                }
              ]
            },
            "ticksuffix": {
              "default": "",
              "description": "Sets a tick label suffix.",
              "type": "string"
            },
            "ticktext": {
              "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  }
                }
              ]
            },
            "ticktextsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.",
              "type": "string"
            },
            "tickvals": {
              "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  }
                }
              ]
            },
            "tickvalssrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.",
              "type": "string"
            },
            "tickwidth": {
              "description": "Sets the tick width (in px).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 1
                }
              ]
            },
            "title": {
              "type": "object",
              "properties": {
                "font": {
                  "type": "object",
                  "properties": {
                    "color": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    "family": {
                      "pattern": ".*\\S.*$",
                      "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                      "type": "string"
                    },
                    "lineposition": {
                      "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    "shadow": {
                      "default": "none",
                      "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                      "type": "string"
                    },
                    "size": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    "style": {
                      "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "textcase": {
                      "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "variant": {
                      "description": "Sets the variant of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "weight": {
                      "description": "Sets the weight (or boldness) of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    }
                  },
                  "additionalProperties": false
                },
                "side": {
                  "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and  defaults to *right* when `orientation` if *h*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "right",
                        "top",
                        "bottom"
                      ]
                    }
                  ]
                },
                "text": {
                  "description": "Sets the title of the color bar.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "x": {
              "description": "Sets the x position with respect to `xref` of the color bar (in plot fraction). When `xref` is *paper*, defaults to 1.02 when `orientation` is *v* and 0.5 when `orientation` is *h*. When `xref` is *container*, defaults to *1* when `orientation` is *v* and 0.5 when `orientation` is *h*. Must be between *0* and *1* if `xref` is *container* and between *-2* and *3* if `xref` is *paper*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number"
                }
              ]
            },
            "xanchor": {
              "description": "Sets this color bar's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the color bar. Defaults to *left* when `orientation` is *v* and *center* when `orientation` is *h*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "left",
                    "center",
                    "right"
                  ]
                }
              ]
            },
            "xpad": {
              "description": "Sets the amount of padding (in px) along the x direction.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 10
                }
              ]
            },
            "xref": {
              "description": "Sets the container `x` refers to. *container* spans the entire `width` of the plot. *paper* refers to the width of the plotting area only.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "container",
                    "paper"
                  ],
                  "default": "paper"
                }
              ]
            },
            "y": {
              "description": "Sets the y position with respect to `yref` of the color bar (in plot fraction). When `yref` is *paper*, defaults to 0.5 when `orientation` is *v* and 1.02 when `orientation` is *h*. When `yref` is *container*, defaults to 0.5 when `orientation` is *v* and 1 when `orientation` is *h*. Must be between *0* and *1* if `yref` is *container* and between *-2* and *3* if `yref` is *paper*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number"
                }
              ]
            },
            "yanchor": {
              "description": "Sets this color bar's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the color bar. Defaults to *middle* when `orientation` is *v* and *bottom* when `orientation` is *h*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "top",
                    "middle",
                    "bottom"
                  ]
                }
              ]
            },
            "ypad": {
              "description": "Sets the amount of padding (in px) along the y direction.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 10
                }
              ]
            },
            "yref": {
              "description": "Sets the container `y` refers to. *container* spans the entire `height` of the plot. *paper* refers to the height of the plotting area only.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "container",
                    "paper"
                  ],
                  "default": "paper"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "colorscale": {
          "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "$ref": "#/$defs/colorscale",
              "default": null
            }
          ]
        },
        "contour": {
          "type": "object",
          "properties": {
            "color": {
              "description": "Sets the color of the contour lines.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "show": {
              "description": "Sets whether or not dynamic contours are shown on hover",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            },
            "width": {
              "description": "Sets the width of the contour lines.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 1,
                  "maximum": 16,
                  "default": 2
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "customdata": {
          "description": "Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "customdatasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `customdata`.",
          "type": "string"
        },
        "delaunayaxis": {
          "description": "Sets the Delaunay axis, which is the axis that is perpendicular to the surface of the Delaunay triangulation. It has an effect if `i`, `j`, `k` are not provided and `alphahull` is set to indicate Delaunay triangulation.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "x",
                "y",
                "z"
              ],
              "default": "z"
            }
          ]
        },
        "facecolor": {
          "description": "Sets the color of each face Overrides *color* and *vertexcolor*.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "facecolorsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `facecolor`.",
          "type": "string"
        },
        "flatshading": {
          "description": "Determines whether or not normal smoothing is applied to the meshes, creating meshes with an angular, low-poly look via flat reflections.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": false
            }
          ]
        },
        "hoverinfo": {
          "description": "Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired.",
          "oneOf": [
            {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "oneOf": [
                    {
                      "type": "string",
                      "enum": [
                        "all",
                        "none",
                        "skip"
                      ]
                    },
                    {
                      "type": "string",
                      "pattern": "^(x|y|z|text|name)(\\+(x|y|z|text|name))*$"
                    }
                  ],
                  "default": "all"
                }
              ]
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "oneOf": [
                      {
                        "type": "string",
                        "enum": [
                          "all",
                          "none",
                          "skip"
                        ]
                      },
                      {
                        "type": "string",
                        "pattern": "^(x|y|z|text|name)(\\+(x|y|z|text|name))*$"
                      }
                    ],
                    "default": "all"
                  }
                ]
              }
            }
          ]
        },
        "hoverinfosrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.",
          "type": "string"
        },
        "hoverlabel": {
          "type": "object",
          "properties": {
            "align": {
              "description": "Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "left",
                        "right",
                        "auto"
                      ],
                      "default": "auto"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "left",
                          "right",
                          "auto"
                        ],
                        "default": "auto"
                      }
                    ]
                  }
                }
              ]
            },
            "alignsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `align`.",
              "type": "string"
            },
            "bgcolor": {
              "description": "Sets the background color of the hover labels for this trace",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "bgcolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.",
              "type": "string"
            },
            "bordercolor": {
              "description": "Sets the border color of the hover labels for this trace.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "bordercolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.",
              "type": "string"
            },
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "colorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `color`.",
                  "type": "string"
                },
                "family": {
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "oneOf": [
                    {
                      "pattern": ".*\\S.*$",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "pattern": ".*\\S.*$",
                        "type": "string"
                      }
                    },
                    {
                      "$ref": "#/$defs/query-string"
                    }
                  ]
                },
                "familysrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `family`.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "oneOf": [
                              {
                                "type": "string",
                                "enum": [
                                  "none"
                                ]
                              },
                              {
                                "type": "string",
                                "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                              }
                            ],
                            "default": "none"
                          }
                        ]
                      }
                    }
                  ]
                },
                "linepositionsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.",
                  "type": "string"
                },
                "shadow": {
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "oneOf": [
                    {
                      "default": "none",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "default": "none",
                        "type": "string"
                      }
                    }
                  ]
                },
                "shadowsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `shadow`.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 1
                          }
                        ]
                      }
                    }
                  ]
                },
                "sizesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `size`.",
                  "type": "string"
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "italic"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "stylesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `style`.",
                  "type": "string"
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "word caps",
                              "upper",
                              "lower"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "textcasesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `textcase`.",
                  "type": "string"
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "small-caps",
                              "all-small-caps",
                              "all-petite-caps",
                              "petite-caps",
                              "unicase"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "variantsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `variant`.",
                  "type": "string"
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 1000,
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "weightsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `weight`.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "namelength": {
              "description": "Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": -1,
                      "default": 15
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "integer",
                        "minimum": -1,
                        "default": 15
                      }
                    ]
                  }
                }
              ]
            },
            "namelengthsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `namelength`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "hovertemplate": {
          "description": "Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". <https://github.com/d3/d3-format/tree/v1.4.5#d3-format> for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format> for details on the date formatting syntax. The variables available in `hovertemplate` are the ones emitted as event data described at this link <https://plotly.com/javascript/plotlyjs-events/#event-data>. Additionally, every attributes that can be specified per-point (the ones that are `arrayOk: true`) are available.  Anything contained in tag `<extra>` is displayed in the secondary box, for example \"<extra>{fullData.name}</extra>\". To hide the secondary box completely, use an empty tag `<extra></extra>`.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "hovertemplatesrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.",
          "type": "string"
        },
        "hovertext": {
          "description": "Same as `text`.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "hovertextsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.",
          "type": "string"
        },
        "i": {
          "description": "A vector of vertex indices, i.e. integer values between 0 and the length of the vertex vectors, representing the *first* vertex of a triangle. For example, `{i[m], j[m], k[m]}` together represent face m (triangle m) in the mesh, where `i[m] = n` points to the triplet `{x[n], y[n], z[n]}` in the vertex arrays. Therefore, each element in `i` represents a point in space, which is the first vertex of a triangle.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "ids": {
          "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "idssrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `ids`.",
          "type": "string"
        },
        "intensity": {
          "description": "Sets the intensity values for vertices or cells as defined by `intensitymode`. It can be used for plotting fields on meshes.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "intensitymode": {
          "description": "Determines the source of `intensity` values.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "vertex",
                "cell"
              ],
              "default": "vertex"
            }
          ]
        },
        "intensitysrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `intensity`.",
          "type": "string"
        },
        "isrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `i`.",
          "type": "string"
        },
        "j": {
          "description": "A vector of vertex indices, i.e. integer values between 0 and the length of the vertex vectors, representing the *second* vertex of a triangle. For example, `{i[m], j[m], k[m]}`  together represent face m (triangle m) in the mesh, where `j[m] = n` points to the triplet `{x[n], y[n], z[n]}` in the vertex arrays. Therefore, each element in `j` represents a point in space, which is the second vertex of a triangle.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "jsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `j`.",
          "type": "string"
        },
        "k": {
          "description": "A vector of vertex indices, i.e. integer values between 0 and the length of the vertex vectors, representing the *third* vertex of a triangle. For example, `{i[m], j[m], k[m]}` together represent face m (triangle m) in the mesh, where `k[m] = n` points to the triplet  `{x[n], y[n], z[n]}` in the vertex arrays. Therefore, each element in `k` represents a point in space, which is the third vertex of a triangle.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "ksrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `k`.",
          "type": "string"
        },
        "legend": {
          "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "legend",
              "pattern": "^legend([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "legendgroup": {
          "default": "",
          "description": "Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items.",
          "type": "string"
        },
        "legendgrouptitle": {
          "type": "object",
          "properties": {
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "family": {
                  "pattern": ".*\\S.*$",
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                "shadow": {
                  "default": "none",
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "text": {
              "default": "",
              "description": "Sets the title of the legend group.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "legendrank": {
          "description": "Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": 1000
            }
          ]
        },
        "legendwidth": {
          "description": "Sets the width (in px or fraction) of the legend for this trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0
            }
          ]
        },
        "lighting": {
          "type": "object",
          "properties": {
            "ambient": {
              "description": "Ambient light increases overall color visibility but can wash out the image.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 1,
                  "default": 0.8
                }
              ]
            },
            "diffuse": {
              "description": "Represents the extent that incident rays are reflected in a range of angles.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 1,
                  "default": 0.8
                }
              ]
            },
            "facenormalsepsilon": {
              "description": "Epsilon for face normals calculation avoids math issues arising from degenerate geometry.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 1,
                  "default": 1e-6
                }
              ]
            },
            "fresnel": {
              "description": "Represents the reflectance as a dependency of the viewing angle; e.g. paper is reflective when viewing it from the edge of the paper (almost 90 degrees), causing shine.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 5,
                  "default": 0.2
                }
              ]
            },
            "roughness": {
              "description": "Alters specular reflection; the rougher the surface, the wider and less contrasty the shine.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 1,
                  "default": 0.5
                }
              ]
            },
            "specular": {
              "description": "Represents the level that incident rays are reflected in a single direction, causing shine.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 2,
                  "default": 0.05
                }
              ]
            },
            "vertexnormalsepsilon": {
              "description": "Epsilon for vertex normals calculation avoids math issues arising from degenerate geometry.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 1,
                  "default": 1e-12
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "lightposition": {
          "type": "object",
          "properties": {
            "x": {
              "description": "Numeric vector, representing the X coordinate for each vertex.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": -100000,
                  "maximum": 100000,
                  "default": 100000
                }
              ]
            },
            "y": {
              "description": "Numeric vector, representing the Y coordinate for each vertex.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": -100000,
                  "maximum": 100000,
                  "default": 100000
                }
              ]
            },
            "z": {
              "description": "Numeric vector, representing the Z coordinate for each vertex.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": -100000,
                  "maximum": 100000,
                  "default": 0
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "metasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `meta`.",
          "type": "string"
        },
        "name": {
          "description": "Sets the trace name. The trace name appears as the legend item and on hover.",
          "type": "string"
        },
        "opacity": {
          "description": "Sets the opacity of the surface. Please note that in the case of using high `opacity` values for example a value greater than or equal to 0.5 on two surfaces (and 0.25 with four surfaces), an overlay of multiple transparent surfaces may not perfectly be sorted in depth by the webgl API. This behavior may be improved in the near future and is subject to change.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0,
              "maximum": 1,
              "default": 1
            }
          ]
        },
        "reversescale": {
          "description": "Reverses the color mapping if true. If true, `cmin` will correspond to the last color in the array and `cmax` will correspond to the first color.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": false
            }
          ]
        },
        "scene": {
          "description": "Sets a reference between this trace's 3D coordinate system and a 3D scene. If *scene* (the default value), the (x,y,z) coordinates refer to `layout.scene`. If *scene2*, the (x,y,z) coordinates refer to `layout.scene2`, and so on.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "scene",
              "pattern": "^scene([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "showlegend": {
          "description": "Determines whether or not an item corresponding to this trace is shown in the legend.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": false
            }
          ]
        },
        "showscale": {
          "description": "Determines whether or not a colorbar is displayed for this trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "stream": {
          "type": "object",
          "properties": {
            "maxpoints": {
              "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 10000,
                  "default": 500
                }
              ]
            },
            "token": {
              "pattern": ".*\\S.*$",
              "description": "The stream id number links a data trace on a plot with a stream. See <https://chart-studio.plotly.com/settings> for more details.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "text": {
          "description": "Sets the text elements associated with the vertices. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "textsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `text`.",
          "type": "string"
        },
        "uid": {
          "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.",
          "type": "string"
        },
        "uirevision": {
          "description": "Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves."
        },
        "vertexcolor": {
          "description": "Sets the color of each vertex Overrides *color*. While Red, green and blue colors are in the range of 0 and 255; in the case of having vertex color data in RGBA format, the alpha color should be normalized to be between 0 and 1.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "vertexcolorsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `vertexcolor`.",
          "type": "string"
        },
        "visible": {
          "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                true,
                false,
                "legendonly"
              ],
              "default": true
            }
          ]
        },
        "x": {
          "description": "Sets the X coordinates of the vertices. The nth element of vectors `x`, `y` and `z` jointly represent the X, Y and Z coordinates of the nth vertex.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "xcalendar": {
          "description": "Sets the calendar system to use with `x` date data.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "chinese",
                "coptic",
                "discworld",
                "ethiopian",
                "gregorian",
                "hebrew",
                "islamic",
                "jalali",
                "julian",
                "mayan",
                "nanakshahi",
                "nepali",
                "persian",
                "taiwan",
                "thai",
                "ummalqura"
              ],
              "default": "gregorian"
            }
          ]
        },
        "xhoverformat": {
          "default": "",
          "description": "Sets the hover text formatting rulefor `x`  using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.",
          "type": "string"
        },
        "xsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `x`.",
          "type": "string"
        },
        "y": {
          "description": "Sets the Y coordinates of the vertices. The nth element of vectors `x`, `y` and `z` jointly represent the X, Y and Z coordinates of the nth vertex.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "ycalendar": {
          "description": "Sets the calendar system to use with `y` date data.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "chinese",
                "coptic",
                "discworld",
                "ethiopian",
                "gregorian",
                "hebrew",
                "islamic",
                "jalali",
                "julian",
                "mayan",
                "nanakshahi",
                "nepali",
                "persian",
                "taiwan",
                "thai",
                "ummalqura"
              ],
              "default": "gregorian"
            }
          ]
        },
        "yhoverformat": {
          "default": "",
          "description": "Sets the hover text formatting rulefor `y`  using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.",
          "type": "string"
        },
        "ysrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `y`.",
          "type": "string"
        },
        "z": {
          "description": "Sets the Z coordinates of the vertices. The nth element of vectors `x`, `y` and `z` jointly represent the X, Y and Z coordinates of the nth vertex.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "zcalendar": {
          "description": "Sets the calendar system to use with `z` date data.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "chinese",
                "coptic",
                "discworld",
                "ethiopian",
                "gregorian",
                "hebrew",
                "islamic",
                "jalali",
                "julian",
                "mayan",
                "nanakshahi",
                "nepali",
                "persian",
                "taiwan",
                "thai",
                "ummalqura"
              ],
              "default": "gregorian"
            }
          ]
        },
        "zhoverformat": {
          "default": "",
          "description": "Sets the hover text formatting rulefor `z`  using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `zaxis.hoverformat`.",
          "type": "string"
        },
        "zsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `z`.",
          "type": "string"
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false
    },
    "Ohlc": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "$id": "https://visivo.io/trace-properties/schema",
      "description": "A schema to validate plotly trace properties",
      "type": "object",
      "properties": {
        "type": {
          "const": "ohlc"
        },
        "close": {
          "description": "Sets the close values.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "closesrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `close`.",
          "type": "string"
        },
        "customdata": {
          "description": "Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "customdatasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `customdata`.",
          "type": "string"
        },
        "decreasing": {
          "type": "object",
          "properties": {
            "line": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the line color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "dash": {
                  "default": "solid",
                  "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).",
                  "type": "string"
                },
                "width": {
                  "description": "Sets the line width (in px).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 2
                    }
                  ]
                }
              },
              "additionalProperties": false
            }
          },
          "additionalProperties": false
        },
        "high": {
          "description": "Sets the high values.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "highsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `high`.",
          "type": "string"
        },
        "hoverinfo": {
          "description": "Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired.",
          "oneOf": [
            {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "oneOf": [
                    {
                      "type": "string",
                      "enum": [
                        "all",
                        "none",
                        "skip"
                      ]
                    },
                    {
                      "type": "string",
                      "pattern": "^(x|y|z|text|name)(\\+(x|y|z|text|name))*$"
                    }
                  ],
                  "default": "all"
                }
              ]
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "oneOf": [
                      {
                        "type": "string",
                        "enum": [
                          "all",
                          "none",
                          "skip"
                        ]
                      },
                      {
                        "type": "string",
                        "pattern": "^(x|y|z|text|name)(\\+(x|y|z|text|name))*$"
                      }
                    ],
                    "default": "all"
                  }
                ]
              }
            }
          ]
        },
        "hoverinfosrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.",
          "type": "string"
        },
        "hoverlabel": {
          "type": "object",
          "properties": {
            "align": {
              "description": "Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "left",
                        "right",
                        "auto"
                      ],
                      "default": "auto"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "left",
                          "right",
                          "auto"
                        ],
                        "default": "auto"
                      }
                    ]
                  }
                }
              ]
            },
            "alignsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `align`.",
              "type": "string"
            },
            "bgcolor": {
              "description": "Sets the background color of the hover labels for this trace",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "bgcolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.",
              "type": "string"
            },
            "bordercolor": {
              "description": "Sets the border color of the hover labels for this trace.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "bordercolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.",
              "type": "string"
            },
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "colorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `color`.",
                  "type": "string"
                },
                "family": {
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "oneOf": [
                    {
                      "pattern": ".*\\S.*$",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "pattern": ".*\\S.*$",
                        "type": "string"
                      }
                    },
                    {
                      "$ref": "#/$defs/query-string"
                    }
                  ]
                },
                "familysrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `family`.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "oneOf": [
                              {
                                "type": "string",
                                "enum": [
                                  "none"
                                ]
                              },
                              {
                                "type": "string",
                                "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                              }
                            ],
                            "default": "none"
                          }
                        ]
                      }
                    }
                  ]
                },
                "linepositionsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.",
                  "type": "string"
                },
                "shadow": {
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "oneOf": [
                    {
                      "default": "none",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "default": "none",
                        "type": "string"
                      }
                    }
                  ]
                },
                "shadowsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `shadow`.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 1
                          }
                        ]
                      }
                    }
                  ]
                },
                "sizesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `size`.",
                  "type": "string"
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "italic"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "stylesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `style`.",
                  "type": "string"
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "word caps",
                              "upper",
                              "lower"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "textcasesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `textcase`.",
                  "type": "string"
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "small-caps",
                              "all-small-caps",
                              "all-petite-caps",
                              "petite-caps",
                              "unicase"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "variantsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `variant`.",
                  "type": "string"
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 1000,
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "weightsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `weight`.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "namelength": {
              "description": "Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": -1,
                      "default": 15
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "integer",
                        "minimum": -1,
                        "default": 15
                      }
                    ]
                  }
                }
              ]
            },
            "namelengthsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `namelength`.",
              "type": "string"
            },
            "split": {
              "description": "Show hover information (open, close, high, low) in separate labels.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "hovertext": {
          "description": "Same as `text`.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "hovertextsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.",
          "type": "string"
        },
        "ids": {
          "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "idssrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `ids`.",
          "type": "string"
        },
        "increasing": {
          "type": "object",
          "properties": {
            "line": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the line color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "dash": {
                  "default": "solid",
                  "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).",
                  "type": "string"
                },
                "width": {
                  "description": "Sets the line width (in px).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 2
                    }
                  ]
                }
              },
              "additionalProperties": false
            }
          },
          "additionalProperties": false
        },
        "legend": {
          "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "legend",
              "pattern": "^legend([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "legendgroup": {
          "default": "",
          "description": "Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items.",
          "type": "string"
        },
        "legendgrouptitle": {
          "type": "object",
          "properties": {
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "family": {
                  "pattern": ".*\\S.*$",
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                "shadow": {
                  "default": "none",
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "text": {
              "default": "",
              "description": "Sets the title of the legend group.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "legendrank": {
          "description": "Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": 1000
            }
          ]
        },
        "legendwidth": {
          "description": "Sets the width (in px or fraction) of the legend for this trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0
            }
          ]
        },
        "line": {
          "type": "object",
          "properties": {
            "dash": {
              "default": "solid",
              "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*). Note that this style setting can also be set per direction via `increasing.line.dash` and `decreasing.line.dash`.",
              "type": "string"
            },
            "width": {
              "description": "[object Object] Note that this style setting can also be set per direction via `increasing.line.width` and `decreasing.line.width`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 2
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "low": {
          "description": "Sets the low values.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "lowsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `low`.",
          "type": "string"
        },
        "metasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `meta`.",
          "type": "string"
        },
        "name": {
          "description": "Sets the trace name. The trace name appears as the legend item and on hover.",
          "type": "string"
        },
        "opacity": {
          "description": "Sets the opacity of the trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0,
              "maximum": 1,
              "default": 1
            }
          ]
        },
        "open": {
          "description": "Sets the open values.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "opensrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `open`.",
          "type": "string"
        },
        "selectedpoints": {
          "description": "Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect."
        },
        "showlegend": {
          "description": "Determines whether or not an item corresponding to this trace is shown in the legend.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "stream": {
          "type": "object",
          "properties": {
            "maxpoints": {
              "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 10000,
                  "default": 500
                }
              ]
            },
            "token": {
              "pattern": ".*\\S.*$",
              "description": "The stream id number links a data trace on a plot with a stream. See <https://chart-studio.plotly.com/settings> for more details.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "text": {
          "description": "Sets hover text elements associated with each sample point. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to this trace's sample points.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "textsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `text`.",
          "type": "string"
        },
        "tickwidth": {
          "description": "Sets the width of the open/close tick marks relative to the *x* minimal interval.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0,
              "maximum": 0.5,
              "default": 0.3
            }
          ]
        },
        "uid": {
          "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.",
          "type": "string"
        },
        "uirevision": {
          "description": "Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves."
        },
        "visible": {
          "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                true,
                false,
                "legendonly"
              ],
              "default": true
            }
          ]
        },
        "x": {
          "description": "Sets the x coordinates. If absent, linear coordinate will be generated.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "xaxis": {
          "description": "Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "x",
              "pattern": "^x([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "xcalendar": {
          "description": "Sets the calendar system to use with `x` date data.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "chinese",
                "coptic",
                "discworld",
                "ethiopian",
                "gregorian",
                "hebrew",
                "islamic",
                "jalali",
                "julian",
                "mayan",
                "nanakshahi",
                "nepali",
                "persian",
                "taiwan",
                "thai",
                "ummalqura"
              ],
              "default": "gregorian"
            }
          ]
        },
        "xhoverformat": {
          "default": "",
          "description": "Sets the hover text formatting rulefor `x`  using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.",
          "type": "string"
        },
        "xperiod": {
          "default": 0,
          "description": "Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M<n>* on the x axis. Special values in the form of *M<n>* could be used to declare the number of months. In this case `n` must be a positive integer."
        },
        "xperiod0": {
          "description": "Only relevant when the axis `type` is *date*. Sets the base for period positioning in milliseconds or date string on the x0 axis. When `x0period` is round number of weeks, the `x0period0` by default would be on a Sunday i.e. 2000-01-02, otherwise it would be at 2000-01-01."
        },
        "xperiodalignment": {
          "description": "Only relevant when the axis `type` is *date*. Sets the alignment of data points on the x axis.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "start",
                "middle",
                "end"
              ],
              "default": "middle"
            }
          ]
        },
        "xsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `x`.",
          "type": "string"
        },
        "yaxis": {
          "description": "Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "y",
              "pattern": "^y([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "yhoverformat": {
          "default": "",
          "description": "Sets the hover text formatting rulefor `y`  using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.",
          "type": "string"
        },
        "zorder": {
          "description": "Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "integer",
              "default": 0
            }
          ]
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false
    },
    "Parcats": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "$id": "https://visivo.io/trace-properties/schema",
      "description": "A schema to validate plotly trace properties",
      "type": "object",
      "properties": {
        "type": {
          "const": "parcats"
        },
        "arrangement": {
          "description": "Sets the drag interaction mode for categories and dimensions. If `perpendicular`, the categories can only move along a line perpendicular to the paths. If `freeform`, the categories can freely move on the plane. If `fixed`, the categories and dimensions are stationary.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "perpendicular",
                "freeform",
                "fixed"
              ],
              "default": "perpendicular"
            }
          ]
        },
        "bundlecolors": {
          "description": "Sort paths so that like colors are bundled together within each category.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "counts": {
          "description": "The number of observations represented by each state. Defaults to 1 so that each state represents one observation",
          "oneOf": [
            {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 1
                }
              ]
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "number",
                    "minimum": 0,
                    "default": 1
                  }
                ]
              }
            }
          ]
        },
        "countssrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `counts`.",
          "type": "string"
        },
        "dimensions": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "categoryarray": {
                "description": "Sets the order in which categories in this dimension appear. Only has an effect if `categoryorder` is set to *array*. Used with `categoryorder`.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "array",
                    "items": {
                      "oneOf": [
                        {
                          "type": "number"
                        },
                        {
                          "type": "string"
                        }
                      ]
                    }
                  }
                ]
              },
              "categoryarraysrc": {
                "description": "Sets the source reference on Chart Studio Cloud for `categoryarray`.",
                "type": "string"
              },
              "categoryorder": {
                "description": "Specifies the ordering logic for the categories in the dimension. By default, plotly uses *trace*, which specifies the order that is present in the data supplied. Set `categoryorder` to *category ascending* or *category descending* if order should be determined by the alphanumerical order of the category names. Set `categoryorder` to *array* to derive the ordering from the attribute `categoryarray`. If a category is not found in the `categoryarray` array, the sorting behavior for that attribute will be identical to the *trace* mode. The unspecified categories will follow the categories in `categoryarray`.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "enum": [
                      "trace",
                      "category ascending",
                      "category descending",
                      "array"
                    ],
                    "default": "trace"
                  }
                ]
              },
              "displayindex": {
                "description": "The display index of dimension, from left to right, zero indexed, defaults to dimension index.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "integer"
                  }
                ]
              },
              "label": {
                "description": "The shown name of the dimension.",
                "type": "string"
              },
              "ticktext": {
                "description": "Sets alternative tick labels for the categories in this dimension. Only has an effect if `categoryorder` is set to *array*. Should be an array the same length as `categoryarray` Used with `categoryorder`.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "array",
                    "items": {
                      "oneOf": [
                        {
                          "type": "number"
                        },
                        {
                          "type": "string"
                        }
                      ]
                    }
                  }
                ]
              },
              "ticktextsrc": {
                "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.",
                "type": "string"
              },
              "values": {
                "description": "Dimension values. `values[n]` represents the category value of the `n`th point in the dataset, therefore the `values` vector for all dimensions must be the same (longer vectors will be truncated).",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "array",
                    "items": {
                      "oneOf": [
                        {
                          "type": "number"
                        },
                        {
                          "type": "string"
                        }
                      ]
                    },
                    "default": []
                  }
                ]
              },
              "valuessrc": {
                "description": "Sets the source reference on Chart Studio Cloud for `values`.",
                "type": "string"
              },
              "visible": {
                "description": "Shows the dimension when set to `true` (the default). Hides the dimension for `false`.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "boolean",
                    "default": true
                  }
                ]
              }
            },
            "additionalProperties": false
          },
          "minItems": 1
        },
        "domain": {
          "type": "object",
          "properties": {
            "column": {
              "description": "If there is a layout grid, use the domain for this column in the grid for this parcats trace .",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "row": {
              "description": "If there is a layout grid, use the domain for this row in the grid for this parcats trace .",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "x": {
              "description": "Sets the horizontal domain of this parcats trace (in plot fraction).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 1
                      }
                    ]
                  },
                  "minItems": 2,
                  "maxItems": 2,
                  "default": [
                    0,
                    1
                  ]
                }
              ]
            },
            "y": {
              "description": "Sets the vertical domain of this parcats trace (in plot fraction).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 1
                      }
                    ]
                  },
                  "minItems": 2,
                  "maxItems": 2,
                  "default": [
                    0,
                    1
                  ]
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "hoverinfo": {
          "description": "Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "oneOf": [
                {
                  "type": "string",
                  "enum": [
                    "all",
                    "none",
                    "skip"
                  ]
                },
                {
                  "type": "string",
                  "pattern": "^(count|probability)(\\+(count|probability))*$"
                }
              ],
              "default": "all"
            }
          ]
        },
        "hoveron": {
          "description": "Sets the hover interaction mode for the parcats diagram. If `category`, hover interaction take place per category. If `color`, hover interactions take place per color per category. If `dimension`, hover interactions take place across all categories per dimension.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "category",
                "color",
                "dimension"
              ],
              "default": "category"
            }
          ]
        },
        "hovertemplate": {
          "default": "",
          "description": "Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". <https://github.com/d3/d3-format/tree/v1.4.5#d3-format> for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format> for details on the date formatting syntax. The variables available in `hovertemplate` are the ones emitted as event data described at this link <https://plotly.com/javascript/plotlyjs-events/#event-data>. Additionally, every attributes that can be specified per-point (the ones that are `arrayOk: true`) are available.  This value here applies when hovering over dimensions. Note that `*categorycount`, *colorcount* and *bandcolorcount* are only available when `hoveron` contains the *color* flagFinally, the template string has access to variables `count`, `probability`, `category`, `categorycount`, `colorcount` and `bandcolorcount`. Anything contained in tag `<extra>` is displayed in the secondary box, for example \"<extra>{fullData.name}</extra>\". To hide the secondary box completely, use an empty tag `<extra></extra>`.",
          "type": "string"
        },
        "labelfont": {
          "type": "object",
          "properties": {
            "color": {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "family": {
              "pattern": ".*\\S.*$",
              "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
              "type": "string"
            },
            "lineposition": {
              "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "oneOf": [
                    {
                      "type": "string",
                      "enum": [
                        "none"
                      ]
                    },
                    {
                      "type": "string",
                      "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                    }
                  ],
                  "default": "none"
                }
              ]
            },
            "shadow": {
              "default": "none",
              "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
              "type": "string"
            },
            "size": {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 1
                }
              ]
            },
            "style": {
              "description": "Sets whether a font should be styled with a normal or italic face from its family.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "normal",
                    "italic"
                  ],
                  "default": "normal"
                }
              ]
            },
            "textcase": {
              "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "normal",
                    "word caps",
                    "upper",
                    "lower"
                  ],
                  "default": "normal"
                }
              ]
            },
            "variant": {
              "description": "Sets the variant of the font.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "normal",
                    "small-caps",
                    "all-small-caps",
                    "all-petite-caps",
                    "petite-caps",
                    "unicase"
                  ],
                  "default": "normal"
                }
              ]
            },
            "weight": {
              "description": "Sets the weight (or boldness) of the font.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 1,
                  "maximum": 1000,
                  "default": "normal"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "legendgrouptitle": {
          "type": "object",
          "properties": {
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "family": {
                  "pattern": ".*\\S.*$",
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                "shadow": {
                  "default": "none",
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "text": {
              "default": "",
              "description": "Sets the title of the legend group.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "legendwidth": {
          "description": "Sets the width (in px or fraction) of the legend for this trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0
            }
          ]
        },
        "line": {
          "type": "object",
          "properties": {
            "autocolorscale": {
              "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `line.colorscale`. Has an effect only if in `line.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": true
                }
              ]
            },
            "cauto": {
              "description": "Determines whether or not the color domain is computed with respect to the input data (here in `line.color`) or the bounds set in `line.cmin` and `line.cmax` Has an effect only if in `line.color` is set to a numerical array. Defaults to `false` when `line.cmin` and `line.cmax` are set by the user.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": true
                }
              ]
            },
            "cmax": {
              "description": "Sets the upper bound of the color domain. Has an effect only if in `line.color` is set to a numerical array. Value should have the same units as in `line.color` and if set, `line.cmin` must be set as well.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": null
                }
              ]
            },
            "cmid": {
              "description": "Sets the mid-point of the color domain by scaling `line.cmin` and/or `line.cmax` to be equidistant to this point. Has an effect only if in `line.color` is set to a numerical array. Value should have the same units as in `line.color`. Has no effect when `line.cauto` is `false`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": null
                }
              ]
            },
            "cmin": {
              "description": "Sets the lower bound of the color domain. Has an effect only if in `line.color` is set to a numerical array. Value should have the same units as in `line.color` and if set, `line.cmax` must be set as well.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": null
                }
              ]
            },
            "color": {
              "description": "Sets the line color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `line.cmin` and `line.cmax` if set.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "coloraxis": {
              "description": "Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "string",
                  "default": null,
                  "pattern": "/^coloraxis([2-9]|[1-9][0-9]+)?$/"
                }
              ]
            },
            "colorbar": {
              "type": "object",
              "properties": {
                "bgcolor": {
                  "description": "Sets the color of padded area.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "bordercolor": {
                  "description": "Sets the axis line color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "borderwidth": {
                  "description": "Sets the width (in px) or the border enclosing this color bar.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 0
                    }
                  ]
                },
                "dtick": {
                  "description": "Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L<f>*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M<n>* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48*"
                },
                "exponentformat": {
                  "description": "Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "none",
                        "e",
                        "E",
                        "power",
                        "SI",
                        "B"
                      ],
                      "default": "B"
                    }
                  ]
                },
                "labelalias": {
                  "default": false,
                  "description": "Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax."
                },
                "len": {
                  "description": "Sets the length of the color bar This measure excludes the padding of both ends. That is, the color bar length is this length minus the padding on both ends.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "lenmode": {
                  "description": "Determines whether this color bar's length (i.e. the measure in the color variation direction) is set in units of plot *fraction* or in *pixels. Use `len` to set the value.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "fraction",
                        "pixels"
                      ],
                      "default": "fraction"
                    }
                  ]
                },
                "minexponent": {
                  "description": "Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 3
                    }
                  ]
                },
                "nticks": {
                  "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 0,
                      "default": 0
                    }
                  ]
                },
                "orientation": {
                  "description": "Sets the orientation of the colorbar.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "h",
                        "v"
                      ],
                      "default": "v"
                    }
                  ]
                },
                "outlinecolor": {
                  "description": "Sets the axis line color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "outlinewidth": {
                  "description": "Sets the width (in px) of the axis line.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "separatethousands": {
                  "description": "If \"true\", even 4-digit integers are separated",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": false
                    }
                  ]
                },
                "showexponent": {
                  "description": "If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "showticklabels": {
                  "description": "Determines whether or not the tick labels are drawn.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                },
                "showtickprefix": {
                  "description": "If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "showticksuffix": {
                  "description": "Same as `showtickprefix` but for tick suffixes.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "thickness": {
                  "description": "Sets the thickness of the color bar This measure excludes the size of the padding, ticks and labels.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 30
                    }
                  ]
                },
                "thicknessmode": {
                  "description": "Determines whether this color bar's thickness (i.e. the measure in the constant color direction) is set in units of plot *fraction* or in *pixels*. Use `thickness` to set the value.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "fraction",
                        "pixels"
                      ],
                      "default": "pixels"
                    }
                  ]
                },
                "tick0": {
                  "description": "Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L<f>* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears."
                },
                "tickangle": {
                  "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": -180,
                      "maximum": 180,
                      "default": "auto"
                    }
                  ]
                },
                "tickcolor": {
                  "description": "Sets the tick color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "tickfont": {
                  "type": "object",
                  "properties": {
                    "color": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    "family": {
                      "pattern": ".*\\S.*$",
                      "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                      "type": "string"
                    },
                    "lineposition": {
                      "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    "shadow": {
                      "default": "none",
                      "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                      "type": "string"
                    },
                    "size": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    "style": {
                      "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "textcase": {
                      "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "variant": {
                      "description": "Sets the variant of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "weight": {
                      "description": "Sets the weight (or boldness) of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    }
                  },
                  "additionalProperties": false
                },
                "tickformat": {
                  "default": "",
                  "description": "Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*",
                  "type": "string"
                },
                "tickformatstops": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "dtickrange": {
                        "description": "range [*min*, *max*], where *min*, *max* - dtick values which describe some zoom level, it is possible to omit *min* or *max* value by passing *null*",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "array",
                            "items": {},
                            "minItems": 2,
                            "maxItems": 2
                          }
                        ]
                      },
                      "enabled": {
                        "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "boolean",
                            "default": true
                          }
                        ]
                      },
                      "name": {
                        "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.",
                        "type": "string"
                      },
                      "templateitemname": {
                        "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.",
                        "type": "string"
                      },
                      "value": {
                        "default": "",
                        "description": "string - dtickformat for described zoom level, the same as *tickformat*",
                        "type": "string"
                      }
                    },
                    "additionalProperties": false
                  },
                  "minItems": 1
                },
                "ticklabeloverflow": {
                  "description": "Determines how we handle tick labels that would overflow either the graph div or the domain of the axis. The default value for inside tick labels is *hide past domain*. In other cases the default is *hide past div*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "allow",
                        "hide past div",
                        "hide past domain"
                      ]
                    }
                  ]
                },
                "ticklabelposition": {
                  "description": "Determines where tick labels are drawn relative to the ticks. Left and right options are used when `orientation` is *h*, top and bottom when `orientation` is *v*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "outside",
                        "inside",
                        "outside top",
                        "inside top",
                        "outside left",
                        "inside left",
                        "outside right",
                        "inside right",
                        "outside bottom",
                        "inside bottom"
                      ],
                      "default": "outside"
                    }
                  ]
                },
                "ticklabelstep": {
                  "description": "Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "default": 1
                    }
                  ]
                },
                "ticklen": {
                  "description": "Sets the tick length (in px).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 5
                    }
                  ]
                },
                "tickmode": {
                  "description": "Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "auto",
                        "linear",
                        "array"
                      ]
                    }
                  ]
                },
                "tickprefix": {
                  "default": "",
                  "description": "Sets a tick label prefix.",
                  "type": "string"
                },
                "ticks": {
                  "description": "Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "outside",
                        "inside",
                        ""
                      ],
                      "default": ""
                    }
                  ]
                },
                "ticksuffix": {
                  "default": "",
                  "description": "Sets a tick label suffix.",
                  "type": "string"
                },
                "ticktext": {
                  "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "string"
                          }
                        ]
                      }
                    }
                  ]
                },
                "ticktextsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.",
                  "type": "string"
                },
                "tickvals": {
                  "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "string"
                          }
                        ]
                      }
                    }
                  ]
                },
                "tickvalssrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.",
                  "type": "string"
                },
                "tickwidth": {
                  "description": "Sets the tick width (in px).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "title": {
                  "type": "object",
                  "properties": {
                    "font": {
                      "type": "object",
                      "properties": {
                        "color": {
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "$ref": "#/$defs/color"
                            }
                          ]
                        },
                        "family": {
                          "pattern": ".*\\S.*$",
                          "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                          "type": "string"
                        },
                        "lineposition": {
                          "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "oneOf": [
                                {
                                  "type": "string",
                                  "enum": [
                                    "none"
                                  ]
                                },
                                {
                                  "type": "string",
                                  "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                                }
                              ],
                              "default": "none"
                            }
                          ]
                        },
                        "shadow": {
                          "default": "none",
                          "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                          "type": "string"
                        },
                        "size": {
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "type": "number",
                              "minimum": 1
                            }
                          ]
                        },
                        "style": {
                          "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "italic"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "textcase": {
                          "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "word caps",
                                "upper",
                                "lower"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "variant": {
                          "description": "Sets the variant of the font.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "small-caps",
                                "all-small-caps",
                                "all-petite-caps",
                                "petite-caps",
                                "unicase"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "weight": {
                          "description": "Sets the weight (or boldness) of the font.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "type": "integer",
                              "minimum": 1,
                              "maximum": 1000,
                              "default": "normal"
                            }
                          ]
                        }
                      },
                      "additionalProperties": false
                    },
                    "side": {
                      "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and  defaults to *right* when `orientation` if *h*.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "right",
                            "top",
                            "bottom"
                          ]
                        }
                      ]
                    },
                    "text": {
                      "description": "Sets the title of the color bar.",
                      "type": "string"
                    }
                  },
                  "additionalProperties": false
                },
                "x": {
                  "description": "Sets the x position with respect to `xref` of the color bar (in plot fraction). When `xref` is *paper*, defaults to 1.02 when `orientation` is *v* and 0.5 when `orientation` is *h*. When `xref` is *container*, defaults to *1* when `orientation` is *v* and 0.5 when `orientation` is *h*. Must be between *0* and *1* if `xref` is *container* and between *-2* and *3* if `xref` is *paper*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number"
                    }
                  ]
                },
                "xanchor": {
                  "description": "Sets this color bar's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the color bar. Defaults to *left* when `orientation` is *v* and *center* when `orientation` is *h*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "left",
                        "center",
                        "right"
                      ]
                    }
                  ]
                },
                "xpad": {
                  "description": "Sets the amount of padding (in px) along the x direction.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 10
                    }
                  ]
                },
                "xref": {
                  "description": "Sets the container `x` refers to. *container* spans the entire `width` of the plot. *paper* refers to the width of the plotting area only.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "container",
                        "paper"
                      ],
                      "default": "paper"
                    }
                  ]
                },
                "y": {
                  "description": "Sets the y position with respect to `yref` of the color bar (in plot fraction). When `yref` is *paper*, defaults to 0.5 when `orientation` is *v* and 1.02 when `orientation` is *h*. When `yref` is *container*, defaults to 0.5 when `orientation` is *v* and 1 when `orientation` is *h*. Must be between *0* and *1* if `yref` is *container* and between *-2* and *3* if `yref` is *paper*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number"
                    }
                  ]
                },
                "yanchor": {
                  "description": "Sets this color bar's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the color bar. Defaults to *middle* when `orientation` is *v* and *bottom* when `orientation` is *h*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "top",
                        "middle",
                        "bottom"
                      ]
                    }
                  ]
                },
                "ypad": {
                  "description": "Sets the amount of padding (in px) along the y direction.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 10
                    }
                  ]
                },
                "yref": {
                  "description": "Sets the container `y` refers to. *container* spans the entire `height` of the plot. *paper* refers to the height of the plotting area only.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "container",
                        "paper"
                      ],
                      "default": "paper"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "colorscale": {
              "description": "Sets the colorscale. Has an effect only if in `line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `line.cmin` and `line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/colorscale",
                  "default": null
                }
              ]
            },
            "colorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `color`.",
              "type": "string"
            },
            "hovertemplate": {
              "default": "",
              "description": "Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". <https://github.com/d3/d3-format/tree/v1.4.5#d3-format> for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format> for details on the date formatting syntax. The variables available in `hovertemplate` are the ones emitted as event data described at this link <https://plotly.com/javascript/plotlyjs-events/#event-data>. Additionally, every attributes that can be specified per-point (the ones that are `arrayOk: true`) are available.  This value here applies when hovering over lines.Finally, the template string has access to variables `count` and `probability`. Anything contained in tag `<extra>` is displayed in the secondary box, for example \"<extra>{fullData.name}</extra>\". To hide the secondary box completely, use an empty tag `<extra></extra>`.",
              "type": "string"
            },
            "reversescale": {
              "description": "Reverses the color mapping if true. Has an effect only if in `line.color` is set to a numerical array. If true, `line.cmin` will correspond to the last color in the array and `line.cmax` will correspond to the first color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            },
            "shape": {
              "description": "Sets the shape of the paths. If `linear`, paths are composed of straight lines. If `hspline`, paths are composed of horizontal curved splines",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "linear",
                    "hspline"
                  ],
                  "default": "linear"
                }
              ]
            },
            "showscale": {
              "description": "Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `line.color` is set to a numerical array.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "metasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `meta`.",
          "type": "string"
        },
        "name": {
          "description": "Sets the trace name. The trace name appears as the legend item and on hover.",
          "type": "string"
        },
        "sortpaths": {
          "description": "Sets the path sorting algorithm. If `forward`, sort paths based on dimension categories from left to right. If `backward`, sort paths based on dimensions categories from right to left.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "forward",
                "backward"
              ],
              "default": "forward"
            }
          ]
        },
        "stream": {
          "type": "object",
          "properties": {
            "maxpoints": {
              "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 10000,
                  "default": 500
                }
              ]
            },
            "token": {
              "pattern": ".*\\S.*$",
              "description": "The stream id number links a data trace on a plot with a stream. See <https://chart-studio.plotly.com/settings> for more details.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "tickfont": {
          "type": "object",
          "properties": {
            "color": {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "family": {
              "pattern": ".*\\S.*$",
              "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
              "type": "string"
            },
            "lineposition": {
              "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "oneOf": [
                    {
                      "type": "string",
                      "enum": [
                        "none"
                      ]
                    },
                    {
                      "type": "string",
                      "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                    }
                  ],
                  "default": "none"
                }
              ]
            },
            "shadow": {
              "default": "auto",
              "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
              "type": "string"
            },
            "size": {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 1
                }
              ]
            },
            "style": {
              "description": "Sets whether a font should be styled with a normal or italic face from its family.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "normal",
                    "italic"
                  ],
                  "default": "normal"
                }
              ]
            },
            "textcase": {
              "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "normal",
                    "word caps",
                    "upper",
                    "lower"
                  ],
                  "default": "normal"
                }
              ]
            },
            "variant": {
              "description": "Sets the variant of the font.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "normal",
                    "small-caps",
                    "all-small-caps",
                    "all-petite-caps",
                    "petite-caps",
                    "unicase"
                  ],
                  "default": "normal"
                }
              ]
            },
            "weight": {
              "description": "Sets the weight (or boldness) of the font.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 1,
                  "maximum": 1000,
                  "default": "normal"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "uid": {
          "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.",
          "type": "string"
        },
        "uirevision": {
          "description": "Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves."
        },
        "visible": {
          "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                true,
                false,
                "legendonly"
              ],
              "default": true
            }
          ]
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false
    },
    "Parcoords": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "$id": "https://visivo.io/trace-properties/schema",
      "description": "A schema to validate plotly trace properties",
      "type": "object",
      "properties": {
        "type": {
          "const": "parcoords"
        },
        "customdata": {
          "description": "Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "customdatasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `customdata`.",
          "type": "string"
        },
        "dimensions": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "constraintrange": {
                "description": "The domain range to which the filter on the dimension is constrained. Must be an array of `[fromValue, toValue]` with `fromValue <= toValue`, or if `multiselect` is not disabled, you may give an array of arrays, where each inner array is `[fromValue, toValue]`.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "array",
                    "items": {},
                    "minItems": 1
                  }
                ]
              },
              "label": {
                "description": "The shown name of the dimension.",
                "type": "string"
              },
              "multiselect": {
                "description": "Do we allow multiple selection ranges or just a single range?",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "boolean",
                    "default": true
                  }
                ]
              },
              "name": {
                "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.",
                "type": "string"
              },
              "range": {
                "description": "The domain range that represents the full, shown axis extent. Defaults to the `values` extent. Must be an array of `[fromValue, toValue]` with finite numbers as elements.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "array",
                    "items": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number"
                        }
                      ]
                    },
                    "minItems": 2,
                    "maxItems": 2
                  }
                ]
              },
              "templateitemname": {
                "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.",
                "type": "string"
              },
              "tickformat": {
                "default": "",
                "description": "Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*",
                "type": "string"
              },
              "ticktext": {
                "description": "Sets the text displayed at the ticks position via `tickvals`.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "array",
                    "items": {
                      "oneOf": [
                        {
                          "type": "number"
                        },
                        {
                          "type": "string"
                        }
                      ]
                    }
                  }
                ]
              },
              "ticktextsrc": {
                "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.",
                "type": "string"
              },
              "tickvals": {
                "description": "Sets the values at which ticks on this axis appear.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "array",
                    "items": {
                      "oneOf": [
                        {
                          "type": "number"
                        },
                        {
                          "type": "string"
                        }
                      ]
                    }
                  }
                ]
              },
              "tickvalssrc": {
                "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.",
                "type": "string"
              },
              "values": {
                "description": "Dimension values. `values[n]` represents the value of the `n`th point in the dataset, therefore the `values` vector for all dimensions must be the same (longer vectors will be truncated). Each value must be a finite number.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "array",
                    "items": {
                      "oneOf": [
                        {
                          "type": "number"
                        },
                        {
                          "type": "string"
                        }
                      ]
                    }
                  }
                ]
              },
              "valuessrc": {
                "description": "Sets the source reference on Chart Studio Cloud for `values`.",
                "type": "string"
              },
              "visible": {
                "description": "Shows the dimension when set to `true` (the default). Hides the dimension for `false`.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "boolean",
                    "default": true
                  }
                ]
              }
            },
            "additionalProperties": false
          },
          "minItems": 1
        },
        "domain": {
          "type": "object",
          "properties": {
            "column": {
              "description": "If there is a layout grid, use the domain for this column in the grid for this parcoords trace .",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "row": {
              "description": "If there is a layout grid, use the domain for this row in the grid for this parcoords trace .",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "x": {
              "description": "Sets the horizontal domain of this parcoords trace (in plot fraction).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 1
                      }
                    ]
                  },
                  "minItems": 2,
                  "maxItems": 2,
                  "default": [
                    0,
                    1
                  ]
                }
              ]
            },
            "y": {
              "description": "Sets the vertical domain of this parcoords trace (in plot fraction).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 1
                      }
                    ]
                  },
                  "minItems": 2,
                  "maxItems": 2,
                  "default": [
                    0,
                    1
                  ]
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "ids": {
          "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "idssrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `ids`.",
          "type": "string"
        },
        "labelangle": {
          "description": "Sets the angle of the labels with respect to the horizontal. For example, a `tickangle` of -90 draws the labels vertically. Tilted labels with *labelangle* may be positioned better inside margins when `labelposition` is set to *bottom*.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": -180,
              "maximum": 180,
              "default": 0
            }
          ]
        },
        "labelfont": {
          "type": "object",
          "properties": {
            "color": {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "family": {
              "pattern": ".*\\S.*$",
              "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
              "type": "string"
            },
            "lineposition": {
              "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "oneOf": [
                    {
                      "type": "string",
                      "enum": [
                        "none"
                      ]
                    },
                    {
                      "type": "string",
                      "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                    }
                  ],
                  "default": "none"
                }
              ]
            },
            "shadow": {
              "default": "none",
              "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
              "type": "string"
            },
            "size": {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 1
                }
              ]
            },
            "style": {
              "description": "Sets whether a font should be styled with a normal or italic face from its family.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "normal",
                    "italic"
                  ],
                  "default": "normal"
                }
              ]
            },
            "textcase": {
              "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "normal",
                    "word caps",
                    "upper",
                    "lower"
                  ],
                  "default": "normal"
                }
              ]
            },
            "variant": {
              "description": "Sets the variant of the font.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "normal",
                    "small-caps",
                    "all-small-caps",
                    "all-petite-caps",
                    "petite-caps",
                    "unicase"
                  ],
                  "default": "normal"
                }
              ]
            },
            "weight": {
              "description": "Sets the weight (or boldness) of the font.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 1,
                  "maximum": 1000,
                  "default": "normal"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "labelside": {
          "description": "Specifies the location of the `label`. *top* positions labels above, next to the title *bottom* positions labels below the graph Tilted labels with *labelangle* may be positioned better inside margins when `labelposition` is set to *bottom*.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "top",
                "bottom"
              ],
              "default": "top"
            }
          ]
        },
        "legend": {
          "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "legend",
              "pattern": "^legend([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "legendgrouptitle": {
          "type": "object",
          "properties": {
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "family": {
                  "pattern": ".*\\S.*$",
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                "shadow": {
                  "default": "none",
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "text": {
              "default": "",
              "description": "Sets the title of the legend group.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "legendrank": {
          "description": "Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": 1000
            }
          ]
        },
        "legendwidth": {
          "description": "Sets the width (in px or fraction) of the legend for this trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0
            }
          ]
        },
        "line": {
          "type": "object",
          "properties": {
            "autocolorscale": {
              "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `line.colorscale`. Has an effect only if in `line.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            },
            "cauto": {
              "description": "Determines whether or not the color domain is computed with respect to the input data (here in `line.color`) or the bounds set in `line.cmin` and `line.cmax` Has an effect only if in `line.color` is set to a numerical array. Defaults to `false` when `line.cmin` and `line.cmax` are set by the user.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": true
                }
              ]
            },
            "cmax": {
              "description": "Sets the upper bound of the color domain. Has an effect only if in `line.color` is set to a numerical array. Value should have the same units as in `line.color` and if set, `line.cmin` must be set as well.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": null
                }
              ]
            },
            "cmid": {
              "description": "Sets the mid-point of the color domain by scaling `line.cmin` and/or `line.cmax` to be equidistant to this point. Has an effect only if in `line.color` is set to a numerical array. Value should have the same units as in `line.color`. Has no effect when `line.cauto` is `false`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": null
                }
              ]
            },
            "cmin": {
              "description": "Sets the lower bound of the color domain. Has an effect only if in `line.color` is set to a numerical array. Value should have the same units as in `line.color` and if set, `line.cmax` must be set as well.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": null
                }
              ]
            },
            "color": {
              "description": "Sets the line color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `line.cmin` and `line.cmax` if set.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "coloraxis": {
              "description": "Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "string",
                  "default": null,
                  "pattern": "/^coloraxis([2-9]|[1-9][0-9]+)?$/"
                }
              ]
            },
            "colorbar": {
              "type": "object",
              "properties": {
                "bgcolor": {
                  "description": "Sets the color of padded area.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "bordercolor": {
                  "description": "Sets the axis line color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "borderwidth": {
                  "description": "Sets the width (in px) or the border enclosing this color bar.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 0
                    }
                  ]
                },
                "dtick": {
                  "description": "Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L<f>*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M<n>* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48*"
                },
                "exponentformat": {
                  "description": "Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "none",
                        "e",
                        "E",
                        "power",
                        "SI",
                        "B"
                      ],
                      "default": "B"
                    }
                  ]
                },
                "labelalias": {
                  "default": false,
                  "description": "Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax."
                },
                "len": {
                  "description": "Sets the length of the color bar This measure excludes the padding of both ends. That is, the color bar length is this length minus the padding on both ends.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "lenmode": {
                  "description": "Determines whether this color bar's length (i.e. the measure in the color variation direction) is set in units of plot *fraction* or in *pixels. Use `len` to set the value.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "fraction",
                        "pixels"
                      ],
                      "default": "fraction"
                    }
                  ]
                },
                "minexponent": {
                  "description": "Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 3
                    }
                  ]
                },
                "nticks": {
                  "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 0,
                      "default": 0
                    }
                  ]
                },
                "orientation": {
                  "description": "Sets the orientation of the colorbar.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "h",
                        "v"
                      ],
                      "default": "v"
                    }
                  ]
                },
                "outlinecolor": {
                  "description": "Sets the axis line color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "outlinewidth": {
                  "description": "Sets the width (in px) of the axis line.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "separatethousands": {
                  "description": "If \"true\", even 4-digit integers are separated",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": false
                    }
                  ]
                },
                "showexponent": {
                  "description": "If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "showticklabels": {
                  "description": "Determines whether or not the tick labels are drawn.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                },
                "showtickprefix": {
                  "description": "If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "showticksuffix": {
                  "description": "Same as `showtickprefix` but for tick suffixes.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "thickness": {
                  "description": "Sets the thickness of the color bar This measure excludes the size of the padding, ticks and labels.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 30
                    }
                  ]
                },
                "thicknessmode": {
                  "description": "Determines whether this color bar's thickness (i.e. the measure in the constant color direction) is set in units of plot *fraction* or in *pixels*. Use `thickness` to set the value.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "fraction",
                        "pixels"
                      ],
                      "default": "pixels"
                    }
                  ]
                },
                "tick0": {
                  "description": "Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L<f>* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears."
                },
                "tickangle": {
                  "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": -180,
                      "maximum": 180,
                      "default": "auto"
                    }
                  ]
                },
                "tickcolor": {
                  "description": "Sets the tick color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "tickfont": {
                  "type": "object",
                  "properties": {
                    "color": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    "family": {
                      "pattern": ".*\\S.*$",
                      "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                      "type": "string"
                    },
                    "lineposition": {
                      "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    "shadow": {
                      "default": "none",
                      "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                      "type": "string"
                    },
                    "size": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    "style": {
                      "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "textcase": {
                      "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "variant": {
                      "description": "Sets the variant of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "weight": {
                      "description": "Sets the weight (or boldness) of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    }
                  },
                  "additionalProperties": false
                },
                "tickformat": {
                  "default": "",
                  "description": "Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*",
                  "type": "string"
                },
                "tickformatstops": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "dtickrange": {
                        "description": "range [*min*, *max*], where *min*, *max* - dtick values which describe some zoom level, it is possible to omit *min* or *max* value by passing *null*",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "array",
                            "items": {},
                            "minItems": 2,
                            "maxItems": 2
                          }
                        ]
                      },
                      "enabled": {
                        "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "boolean",
                            "default": true
                          }
                        ]
                      },
                      "name": {
                        "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.",
                        "type": "string"
                      },
                      "templateitemname": {
                        "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.",
                        "type": "string"
                      },
                      "value": {
                        "default": "",
                        "description": "string - dtickformat for described zoom level, the same as *tickformat*",
                        "type": "string"
                      }
                    },
                    "additionalProperties": false
                  },
                  "minItems": 1
                },
                "ticklabeloverflow": {
                  "description": "Determines how we handle tick labels that would overflow either the graph div or the domain of the axis. The default value for inside tick labels is *hide past domain*. In other cases the default is *hide past div*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "allow",
                        "hide past div",
                        "hide past domain"
                      ]
                    }
                  ]
                },
                "ticklabelposition": {
                  "description": "Determines where tick labels are drawn relative to the ticks. Left and right options are used when `orientation` is *h*, top and bottom when `orientation` is *v*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "outside",
                        "inside",
                        "outside top",
                        "inside top",
                        "outside left",
                        "inside left",
                        "outside right",
                        "inside right",
                        "outside bottom",
                        "inside bottom"
                      ],
                      "default": "outside"
                    }
                  ]
                },
                "ticklabelstep": {
                  "description": "Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "default": 1
                    }
                  ]
                },
                "ticklen": {
                  "description": "Sets the tick length (in px).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 5
                    }
                  ]
                },
                "tickmode": {
                  "description": "Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "auto",
                        "linear",
                        "array"
                      ]
                    }
                  ]
                },
                "tickprefix": {
                  "default": "",
                  "description": "Sets a tick label prefix.",
                  "type": "string"
                },
                "ticks": {
                  "description": "Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "outside",
                        "inside",
                        ""
                      ],
                      "default": ""
                    }
                  ]
                },
                "ticksuffix": {
                  "default": "",
                  "description": "Sets a tick label suffix.",
                  "type": "string"
                },
                "ticktext": {
                  "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "string"
                          }
                        ]
                      }
                    }
                  ]
                },
                "ticktextsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.",
                  "type": "string"
                },
                "tickvals": {
                  "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "string"
                          }
                        ]
                      }
                    }
                  ]
                },
                "tickvalssrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.",
                  "type": "string"
                },
                "tickwidth": {
                  "description": "Sets the tick width (in px).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "title": {
                  "type": "object",
                  "properties": {
                    "font": {
                      "type": "object",
                      "properties": {
                        "color": {
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "$ref": "#/$defs/color"
                            }
                          ]
                        },
                        "family": {
                          "pattern": ".*\\S.*$",
                          "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                          "type": "string"
                        },
                        "lineposition": {
                          "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "oneOf": [
                                {
                                  "type": "string",
                                  "enum": [
                                    "none"
                                  ]
                                },
                                {
                                  "type": "string",
                                  "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                                }
                              ],
                              "default": "none"
                            }
                          ]
                        },
                        "shadow": {
                          "default": "none",
                          "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                          "type": "string"
                        },
                        "size": {
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "type": "number",
                              "minimum": 1
                            }
                          ]
                        },
                        "style": {
                          "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "italic"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "textcase": {
                          "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "word caps",
                                "upper",
                                "lower"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "variant": {
                          "description": "Sets the variant of the font.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "small-caps",
                                "all-small-caps",
                                "all-petite-caps",
                                "petite-caps",
                                "unicase"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "weight": {
                          "description": "Sets the weight (or boldness) of the font.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "type": "integer",
                              "minimum": 1,
                              "maximum": 1000,
                              "default": "normal"
                            }
                          ]
                        }
                      },
                      "additionalProperties": false
                    },
                    "side": {
                      "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and  defaults to *right* when `orientation` if *h*.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "right",
                            "top",
                            "bottom"
                          ]
                        }
                      ]
                    },
                    "text": {
                      "description": "Sets the title of the color bar.",
                      "type": "string"
                    }
                  },
                  "additionalProperties": false
                },
                "x": {
                  "description": "Sets the x position with respect to `xref` of the color bar (in plot fraction). When `xref` is *paper*, defaults to 1.02 when `orientation` is *v* and 0.5 when `orientation` is *h*. When `xref` is *container*, defaults to *1* when `orientation` is *v* and 0.5 when `orientation` is *h*. Must be between *0* and *1* if `xref` is *container* and between *-2* and *3* if `xref` is *paper*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number"
                    }
                  ]
                },
                "xanchor": {
                  "description": "Sets this color bar's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the color bar. Defaults to *left* when `orientation` is *v* and *center* when `orientation` is *h*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "left",
                        "center",
                        "right"
                      ]
                    }
                  ]
                },
                "xpad": {
                  "description": "Sets the amount of padding (in px) along the x direction.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 10
                    }
                  ]
                },
                "xref": {
                  "description": "Sets the container `x` refers to. *container* spans the entire `width` of the plot. *paper* refers to the width of the plotting area only.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "container",
                        "paper"
                      ],
                      "default": "paper"
                    }
                  ]
                },
                "y": {
                  "description": "Sets the y position with respect to `yref` of the color bar (in plot fraction). When `yref` is *paper*, defaults to 0.5 when `orientation` is *v* and 1.02 when `orientation` is *h*. When `yref` is *container*, defaults to 0.5 when `orientation` is *v* and 1 when `orientation` is *h*. Must be between *0* and *1* if `yref` is *container* and between *-2* and *3* if `yref` is *paper*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number"
                    }
                  ]
                },
                "yanchor": {
                  "description": "Sets this color bar's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the color bar. Defaults to *middle* when `orientation` is *v* and *bottom* when `orientation` is *h*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "top",
                        "middle",
                        "bottom"
                      ]
                    }
                  ]
                },
                "ypad": {
                  "description": "Sets the amount of padding (in px) along the y direction.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 10
                    }
                  ]
                },
                "yref": {
                  "description": "Sets the container `y` refers to. *container* spans the entire `height` of the plot. *paper* refers to the height of the plotting area only.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "container",
                        "paper"
                      ],
                      "default": "paper"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "colorscale": {
              "description": "Sets the colorscale. Has an effect only if in `line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `line.cmin` and `line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/colorscale",
                  "default": [
                    [
                      0,
                      "#440154"
                    ],
                    [
                      0.06274509803921569,
                      "#48186a"
                    ],
                    [
                      0.12549019607843137,
                      "#472d7b"
                    ],
                    [
                      0.18823529411764703,
                      "#424086"
                    ],
                    [
                      0.25098039215686274,
                      "#3b528b"
                    ],
                    [
                      0.3137254901960784,
                      "#33638d"
                    ],
                    [
                      0.3764705882352941,
                      "#2c728e"
                    ],
                    [
                      0.4392156862745098,
                      "#26828e"
                    ],
                    [
                      0.5019607843137255,
                      "#21918c"
                    ],
                    [
                      0.5647058823529412,
                      "#1fa088"
                    ],
                    [
                      0.6274509803921569,
                      "#28ae80"
                    ],
                    [
                      0.6901960784313725,
                      "#3fbc73"
                    ],
                    [
                      0.7529411764705882,
                      "#5ec962"
                    ],
                    [
                      0.8156862745098039,
                      "#84d44b"
                    ],
                    [
                      0.8784313725490196,
                      "#addc30"
                    ],
                    [
                      0.9411764705882352,
                      "#d8e219"
                    ],
                    [
                      1,
                      "#fde725"
                    ]
                  ]
                }
              ]
            },
            "colorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `color`.",
              "type": "string"
            },
            "reversescale": {
              "description": "Reverses the color mapping if true. Has an effect only if in `line.color` is set to a numerical array. If true, `line.cmin` will correspond to the last color in the array and `line.cmax` will correspond to the first color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            },
            "showscale": {
              "description": "Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `line.color` is set to a numerical array.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "metasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `meta`.",
          "type": "string"
        },
        "name": {
          "description": "Sets the trace name. The trace name appears as the legend item and on hover.",
          "type": "string"
        },
        "rangefont": {
          "type": "object",
          "properties": {
            "color": {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "family": {
              "pattern": ".*\\S.*$",
              "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
              "type": "string"
            },
            "lineposition": {
              "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "oneOf": [
                    {
                      "type": "string",
                      "enum": [
                        "none"
                      ]
                    },
                    {
                      "type": "string",
                      "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                    }
                  ],
                  "default": "none"
                }
              ]
            },
            "shadow": {
              "default": "none",
              "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
              "type": "string"
            },
            "size": {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 1
                }
              ]
            },
            "style": {
              "description": "Sets whether a font should be styled with a normal or italic face from its family.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "normal",
                    "italic"
                  ],
                  "default": "normal"
                }
              ]
            },
            "textcase": {
              "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "normal",
                    "word caps",
                    "upper",
                    "lower"
                  ],
                  "default": "normal"
                }
              ]
            },
            "variant": {
              "description": "Sets the variant of the font.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "normal",
                    "small-caps",
                    "all-small-caps",
                    "all-petite-caps",
                    "petite-caps",
                    "unicase"
                  ],
                  "default": "normal"
                }
              ]
            },
            "weight": {
              "description": "Sets the weight (or boldness) of the font.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 1,
                  "maximum": 1000,
                  "default": "normal"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "stream": {
          "type": "object",
          "properties": {
            "maxpoints": {
              "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 10000,
                  "default": 500
                }
              ]
            },
            "token": {
              "pattern": ".*\\S.*$",
              "description": "The stream id number links a data trace on a plot with a stream. See <https://chart-studio.plotly.com/settings> for more details.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "tickfont": {
          "type": "object",
          "properties": {
            "color": {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "family": {
              "pattern": ".*\\S.*$",
              "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
              "type": "string"
            },
            "lineposition": {
              "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "oneOf": [
                    {
                      "type": "string",
                      "enum": [
                        "none"
                      ]
                    },
                    {
                      "type": "string",
                      "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                    }
                  ],
                  "default": "none"
                }
              ]
            },
            "shadow": {
              "default": "auto",
              "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
              "type": "string"
            },
            "size": {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 1
                }
              ]
            },
            "style": {
              "description": "Sets whether a font should be styled with a normal or italic face from its family.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "normal",
                    "italic"
                  ],
                  "default": "normal"
                }
              ]
            },
            "textcase": {
              "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "normal",
                    "word caps",
                    "upper",
                    "lower"
                  ],
                  "default": "normal"
                }
              ]
            },
            "variant": {
              "description": "Sets the variant of the font.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "normal",
                    "small-caps",
                    "all-small-caps",
                    "all-petite-caps",
                    "petite-caps",
                    "unicase"
                  ],
                  "default": "normal"
                }
              ]
            },
            "weight": {
              "description": "Sets the weight (or boldness) of the font.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 1,
                  "maximum": 1000,
                  "default": "normal"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "uid": {
          "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.",
          "type": "string"
        },
        "uirevision": {
          "description": "Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves."
        },
        "unselected": {
          "type": "object",
          "properties": {
            "line": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the base color of unselected lines. in connection with `unselected.line.opacity`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "opacity": {
                  "description": "Sets the opacity of unselected lines. The default *auto* decreases the opacity smoothly as the number of lines increases. Use *1* to achieve exact `unselected.line.color`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1,
                      "default": "auto"
                    }
                  ]
                }
              },
              "additionalProperties": false
            }
          },
          "additionalProperties": false
        },
        "visible": {
          "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                true,
                false,
                "legendonly"
              ],
              "default": true
            }
          ]
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false
    },
    "Pie": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "$id": "https://visivo.io/trace-properties/schema",
      "description": "A schema to validate plotly trace properties",
      "type": "object",
      "properties": {
        "type": {
          "const": "pie"
        },
        "automargin": {
          "description": "Determines whether outside text labels can push the margins.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": false
            }
          ]
        },
        "customdata": {
          "description": "Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "customdatasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `customdata`.",
          "type": "string"
        },
        "direction": {
          "description": "Specifies the direction at which succeeding sectors follow one another.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "clockwise",
                "counterclockwise"
              ],
              "default": "counterclockwise"
            }
          ]
        },
        "dlabel": {
          "description": "Sets the label step. See `label0` for more info.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": 1
            }
          ]
        },
        "domain": {
          "type": "object",
          "properties": {
            "column": {
              "description": "If there is a layout grid, use the domain for this column in the grid for this pie trace .",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "row": {
              "description": "If there is a layout grid, use the domain for this row in the grid for this pie trace .",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "x": {
              "description": "Sets the horizontal domain of this pie trace (in plot fraction).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 1
                      }
                    ]
                  },
                  "minItems": 2,
                  "maxItems": 2,
                  "default": [
                    0,
                    1
                  ]
                }
              ]
            },
            "y": {
              "description": "Sets the vertical domain of this pie trace (in plot fraction).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 1
                      }
                    ]
                  },
                  "minItems": 2,
                  "maxItems": 2,
                  "default": [
                    0,
                    1
                  ]
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "hole": {
          "description": "Sets the fraction of the radius to cut out of the pie. Use this to make a donut chart.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0,
              "maximum": 1,
              "default": 0
            }
          ]
        },
        "hoverinfo": {
          "description": "Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired.",
          "oneOf": [
            {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "oneOf": [
                    {
                      "type": "string",
                      "enum": [
                        "all",
                        "none",
                        "skip"
                      ]
                    },
                    {
                      "type": "string",
                      "pattern": "^(label|text|value|percent|name)(\\+(label|text|value|percent|name))*$"
                    }
                  ],
                  "default": "all"
                }
              ]
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "oneOf": [
                      {
                        "type": "string",
                        "enum": [
                          "all",
                          "none",
                          "skip"
                        ]
                      },
                      {
                        "type": "string",
                        "pattern": "^(label|text|value|percent|name)(\\+(label|text|value|percent|name))*$"
                      }
                    ],
                    "default": "all"
                  }
                ]
              }
            }
          ]
        },
        "hoverinfosrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.",
          "type": "string"
        },
        "hoverlabel": {
          "type": "object",
          "properties": {
            "align": {
              "description": "Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "left",
                        "right",
                        "auto"
                      ],
                      "default": "auto"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "left",
                          "right",
                          "auto"
                        ],
                        "default": "auto"
                      }
                    ]
                  }
                }
              ]
            },
            "alignsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `align`.",
              "type": "string"
            },
            "bgcolor": {
              "description": "Sets the background color of the hover labels for this trace",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "bgcolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.",
              "type": "string"
            },
            "bordercolor": {
              "description": "Sets the border color of the hover labels for this trace.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "bordercolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.",
              "type": "string"
            },
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "colorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `color`.",
                  "type": "string"
                },
                "family": {
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "oneOf": [
                    {
                      "pattern": ".*\\S.*$",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "pattern": ".*\\S.*$",
                        "type": "string"
                      }
                    },
                    {
                      "$ref": "#/$defs/query-string"
                    }
                  ]
                },
                "familysrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `family`.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "oneOf": [
                              {
                                "type": "string",
                                "enum": [
                                  "none"
                                ]
                              },
                              {
                                "type": "string",
                                "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                              }
                            ],
                            "default": "none"
                          }
                        ]
                      }
                    }
                  ]
                },
                "linepositionsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.",
                  "type": "string"
                },
                "shadow": {
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "oneOf": [
                    {
                      "default": "none",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "default": "none",
                        "type": "string"
                      }
                    }
                  ]
                },
                "shadowsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `shadow`.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 1
                          }
                        ]
                      }
                    }
                  ]
                },
                "sizesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `size`.",
                  "type": "string"
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "italic"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "stylesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `style`.",
                  "type": "string"
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "word caps",
                              "upper",
                              "lower"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "textcasesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `textcase`.",
                  "type": "string"
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "small-caps",
                              "all-small-caps",
                              "all-petite-caps",
                              "petite-caps",
                              "unicase"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "variantsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `variant`.",
                  "type": "string"
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 1000,
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "weightsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `weight`.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "namelength": {
              "description": "Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": -1,
                      "default": 15
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "integer",
                        "minimum": -1,
                        "default": 15
                      }
                    ]
                  }
                }
              ]
            },
            "namelengthsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `namelength`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "hovertemplate": {
          "description": "Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". <https://github.com/d3/d3-format/tree/v1.4.5#d3-format> for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format> for details on the date formatting syntax. The variables available in `hovertemplate` are the ones emitted as event data described at this link <https://plotly.com/javascript/plotlyjs-events/#event-data>. Additionally, every attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `label`, `color`, `value`, `percent` and `text`. Anything contained in tag `<extra>` is displayed in the secondary box, for example \"<extra>{fullData.name}</extra>\". To hide the secondary box completely, use an empty tag `<extra></extra>`.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "hovertemplatesrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.",
          "type": "string"
        },
        "hovertext": {
          "description": "Sets hover text elements associated with each sector. If a single string, the same string appears for all data points. If an array of string, the items are mapped in order of this trace's sectors. To be seen, trace `hoverinfo` must contain a *text* flag.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "hovertextsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.",
          "type": "string"
        },
        "ids": {
          "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "idssrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `ids`.",
          "type": "string"
        },
        "insidetextfont": {
          "type": "object",
          "properties": {
            "color": {
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "colorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `color`.",
              "type": "string"
            },
            "family": {
              "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
              "oneOf": [
                {
                  "pattern": ".*\\S.*$",
                  "type": "string"
                },
                {
                  "type": "array",
                  "items": {
                    "pattern": ".*\\S.*$",
                    "type": "string"
                  }
                },
                {
                  "$ref": "#/$defs/query-string"
                }
              ]
            },
            "familysrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `family`.",
              "type": "string"
            },
            "lineposition": {
              "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "oneOf": [
                          {
                            "type": "string",
                            "enum": [
                              "none"
                            ]
                          },
                          {
                            "type": "string",
                            "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                          }
                        ],
                        "default": "none"
                      }
                    ]
                  }
                }
              ]
            },
            "linepositionsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.",
              "type": "string"
            },
            "shadow": {
              "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
              "oneOf": [
                {
                  "default": "none",
                  "type": "string"
                },
                {
                  "type": "array",
                  "items": {
                    "default": "none",
                    "type": "string"
                  }
                }
              ]
            },
            "shadowsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `shadow`.",
              "type": "string"
            },
            "size": {
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 1
                      }
                    ]
                  }
                }
              ]
            },
            "sizesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `size`.",
              "type": "string"
            },
            "style": {
              "description": "Sets whether a font should be styled with a normal or italic face from its family.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "italic"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "stylesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `style`.",
              "type": "string"
            },
            "textcase": {
              "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "word caps",
                          "upper",
                          "lower"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "textcasesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `textcase`.",
              "type": "string"
            },
            "variant": {
              "description": "Sets the variant of the font.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "small-caps",
                          "all-small-caps",
                          "all-petite-caps",
                          "petite-caps",
                          "unicase"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "variantsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `variant`.",
              "type": "string"
            },
            "weight": {
              "description": "Sets the weight (or boldness) of the font.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 1000,
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "weightsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `weight`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "insidetextorientation": {
          "description": "Controls the orientation of the text inside chart sectors. When set to *auto*, text may be oriented in any direction in order to be as big as possible in the middle of a sector. The *horizontal* option orients text to be parallel with the bottom of the chart, and may make text smaller in order to achieve that goal. The *radial* option orients text along the radius of the sector. The *tangential* option orients text perpendicular to the radius of the sector.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "horizontal",
                "radial",
                "tangential",
                "auto"
              ],
              "default": "auto"
            }
          ]
        },
        "label0": {
          "description": "Alternate to `labels`. Builds a numeric set of labels. Use with `dlabel` where `label0` is the starting label and `dlabel` the step.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": 0
            }
          ]
        },
        "labels": {
          "description": "Sets the sector labels. If `labels` entries are duplicated, we sum associated `values` or simply count occurrences if `values` is not provided. For other array attributes (including color) we use the first non-empty entry among all occurrences of the label.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "labelssrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `labels`.",
          "type": "string"
        },
        "legend": {
          "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "legend",
              "pattern": "^legend([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "legendgroup": {
          "default": "",
          "description": "Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items.",
          "type": "string"
        },
        "legendgrouptitle": {
          "type": "object",
          "properties": {
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "family": {
                  "pattern": ".*\\S.*$",
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                "shadow": {
                  "default": "none",
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "text": {
              "default": "",
              "description": "Sets the title of the legend group.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "legendrank": {
          "description": "Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": 1000
            }
          ]
        },
        "legendwidth": {
          "description": "Sets the width (in px or fraction) of the legend for this trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0
            }
          ]
        },
        "marker": {
          "type": "object",
          "properties": {
            "colors": {
              "description": "Sets the color of each sector. If not specified, the default trace color set is used to pick the sector colors.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  }
                }
              ]
            },
            "colorssrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `colors`.",
              "type": "string"
            },
            "line": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the color of the line enclosing each sector.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "colorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `color`.",
                  "type": "string"
                },
                "width": {
                  "description": "Sets the width (in px) of the line enclosing each sector.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 0,
                          "default": 0
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 0,
                            "default": 0
                          }
                        ]
                      }
                    }
                  ]
                },
                "widthsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `width`.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "pattern": {
              "type": "object",
              "properties": {
                "bgcolor": {
                  "description": "When there is no colorscale sets the color of background pattern fill. Defaults to a `marker.color` background when `fillmode` is *overlay*. Otherwise, defaults to a transparent background.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "bgcolorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.",
                  "type": "string"
                },
                "fgcolor": {
                  "description": "When there is no colorscale sets the color of foreground pattern fill. Defaults to a `marker.color` background when `fillmode` is *replace*. Otherwise, defaults to dark grey or white to increase contrast with the `bgcolor`.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "fgcolorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `fgcolor`.",
                  "type": "string"
                },
                "fgopacity": {
                  "description": "Sets the opacity of the foreground pattern fill. Defaults to a 0.5 when `fillmode` is *overlay*. Otherwise, defaults to 1.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1
                    }
                  ]
                },
                "fillmode": {
                  "description": "Determines whether `marker.color` should be used as a default to `bgcolor` or a `fgcolor`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "replace",
                        "overlay"
                      ],
                      "default": "replace"
                    }
                  ]
                },
                "shape": {
                  "description": "Sets the shape of the pattern fill. By default, no pattern is used for filling the area.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "",
                            "/",
                            "\\",
                            "x",
                            "-",
                            "|",
                            "+",
                            "."
                          ],
                          "default": ""
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "",
                              "/",
                              "\\",
                              "x",
                              "-",
                              "|",
                              "+",
                              "."
                            ],
                            "default": ""
                          }
                        ]
                      }
                    }
                  ]
                },
                "shapesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `shape`.",
                  "type": "string"
                },
                "size": {
                  "description": "Sets the size of unit squares of the pattern fill in pixels, which corresponds to the interval of repetition of the pattern.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 0,
                          "default": 8
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 0,
                            "default": 8
                          }
                        ]
                      }
                    }
                  ]
                },
                "sizesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `size`.",
                  "type": "string"
                },
                "solidity": {
                  "description": "Sets the solidity of the pattern fill. Solidity is roughly the fraction of the area filled by the pattern. Solidity of 0 shows only the background color without pattern and solidty of 1 shows only the foreground color without pattern.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 0,
                          "maximum": 1,
                          "default": 0.3
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 0,
                            "maximum": 1,
                            "default": 0.3
                          }
                        ]
                      }
                    }
                  ]
                },
                "soliditysrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `solidity`.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            }
          },
          "additionalProperties": false
        },
        "metasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `meta`.",
          "type": "string"
        },
        "name": {
          "description": "Sets the trace name. The trace name appears as the legend item and on hover.",
          "type": "string"
        },
        "opacity": {
          "description": "Sets the opacity of the trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0,
              "maximum": 1,
              "default": 1
            }
          ]
        },
        "outsidetextfont": {
          "type": "object",
          "properties": {
            "color": {
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "colorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `color`.",
              "type": "string"
            },
            "family": {
              "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
              "oneOf": [
                {
                  "pattern": ".*\\S.*$",
                  "type": "string"
                },
                {
                  "type": "array",
                  "items": {
                    "pattern": ".*\\S.*$",
                    "type": "string"
                  }
                },
                {
                  "$ref": "#/$defs/query-string"
                }
              ]
            },
            "familysrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `family`.",
              "type": "string"
            },
            "lineposition": {
              "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "oneOf": [
                          {
                            "type": "string",
                            "enum": [
                              "none"
                            ]
                          },
                          {
                            "type": "string",
                            "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                          }
                        ],
                        "default": "none"
                      }
                    ]
                  }
                }
              ]
            },
            "linepositionsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.",
              "type": "string"
            },
            "shadow": {
              "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
              "oneOf": [
                {
                  "default": "none",
                  "type": "string"
                },
                {
                  "type": "array",
                  "items": {
                    "default": "none",
                    "type": "string"
                  }
                }
              ]
            },
            "shadowsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `shadow`.",
              "type": "string"
            },
            "size": {
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 1
                      }
                    ]
                  }
                }
              ]
            },
            "sizesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `size`.",
              "type": "string"
            },
            "style": {
              "description": "Sets whether a font should be styled with a normal or italic face from its family.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "italic"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "stylesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `style`.",
              "type": "string"
            },
            "textcase": {
              "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "word caps",
                          "upper",
                          "lower"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "textcasesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `textcase`.",
              "type": "string"
            },
            "variant": {
              "description": "Sets the variant of the font.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "small-caps",
                          "all-small-caps",
                          "all-petite-caps",
                          "petite-caps",
                          "unicase"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "variantsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `variant`.",
              "type": "string"
            },
            "weight": {
              "description": "Sets the weight (or boldness) of the font.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 1000,
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "weightsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `weight`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "pull": {
          "description": "Sets the fraction of larger radius to pull the sectors out from the center. This can be a constant to pull all slices apart from each other equally or an array to highlight one or more slices.",
          "oneOf": [
            {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 1,
                  "default": 0
                }
              ]
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 1,
                    "default": 0
                  }
                ]
              }
            }
          ]
        },
        "pullsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `pull`.",
          "type": "string"
        },
        "rotation": {
          "description": "Instead of the first slice starting at 12 o'clock, rotate to some other angle.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": -180,
              "maximum": 180,
              "default": 0
            }
          ]
        },
        "scalegroup": {
          "default": "",
          "description": "If there are multiple pie charts that should be sized according to their totals, link them by providing a non-empty group id here shared by every trace in the same group.",
          "type": "string"
        },
        "showlegend": {
          "description": "Determines whether or not an item corresponding to this trace is shown in the legend.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "sort": {
          "description": "Determines whether or not the sectors are reordered from largest to smallest.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "stream": {
          "type": "object",
          "properties": {
            "maxpoints": {
              "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 10000,
                  "default": 500
                }
              ]
            },
            "token": {
              "pattern": ".*\\S.*$",
              "description": "The stream id number links a data trace on a plot with a stream. See <https://chart-studio.plotly.com/settings> for more details.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "text": {
          "description": "Sets text elements associated with each sector. If trace `textinfo` contains a *text* flag, these elements will be seen on the chart. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "textfont": {
          "type": "object",
          "properties": {
            "color": {
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "colorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `color`.",
              "type": "string"
            },
            "family": {
              "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
              "oneOf": [
                {
                  "pattern": ".*\\S.*$",
                  "type": "string"
                },
                {
                  "type": "array",
                  "items": {
                    "pattern": ".*\\S.*$",
                    "type": "string"
                  }
                },
                {
                  "$ref": "#/$defs/query-string"
                }
              ]
            },
            "familysrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `family`.",
              "type": "string"
            },
            "lineposition": {
              "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "oneOf": [
                          {
                            "type": "string",
                            "enum": [
                              "none"
                            ]
                          },
                          {
                            "type": "string",
                            "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                          }
                        ],
                        "default": "none"
                      }
                    ]
                  }
                }
              ]
            },
            "linepositionsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.",
              "type": "string"
            },
            "shadow": {
              "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
              "oneOf": [
                {
                  "default": "none",
                  "type": "string"
                },
                {
                  "type": "array",
                  "items": {
                    "default": "none",
                    "type": "string"
                  }
                }
              ]
            },
            "shadowsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `shadow`.",
              "type": "string"
            },
            "size": {
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 1
                      }
                    ]
                  }
                }
              ]
            },
            "sizesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `size`.",
              "type": "string"
            },
            "style": {
              "description": "Sets whether a font should be styled with a normal or italic face from its family.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "italic"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "stylesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `style`.",
              "type": "string"
            },
            "textcase": {
              "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "word caps",
                          "upper",
                          "lower"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "textcasesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `textcase`.",
              "type": "string"
            },
            "variant": {
              "description": "Sets the variant of the font.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "small-caps",
                          "all-small-caps",
                          "all-petite-caps",
                          "petite-caps",
                          "unicase"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "variantsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `variant`.",
              "type": "string"
            },
            "weight": {
              "description": "Sets the weight (or boldness) of the font.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 1000,
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "weightsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `weight`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "textinfo": {
          "description": "Determines which trace information appear on the graph.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "oneOf": [
                {
                  "type": "string",
                  "enum": [
                    "none"
                  ]
                },
                {
                  "type": "string",
                  "pattern": "^(label|text|value|percent)(\\+(label|text|value|percent))*$"
                }
              ]
            }
          ]
        },
        "textposition": {
          "description": "Specifies the location of the `textinfo`.",
          "oneOf": [
            {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "inside",
                    "outside",
                    "auto",
                    "none"
                  ],
                  "default": "auto"
                }
              ]
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "enum": [
                      "inside",
                      "outside",
                      "auto",
                      "none"
                    ],
                    "default": "auto"
                  }
                ]
              }
            }
          ]
        },
        "textpositionsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `textposition`.",
          "type": "string"
        },
        "textsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `text`.",
          "type": "string"
        },
        "texttemplate": {
          "description": "Template string used for rendering the information text that appear on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". <https://github.com/d3/d3-format/tree/v1.4.5#d3-format> for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format> for details on the date formatting syntax. Every attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `label`, `color`, `value`, `percent` and `text`.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "texttemplatesrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.",
          "type": "string"
        },
        "title": {
          "type": "object",
          "properties": {
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "colorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `color`.",
                  "type": "string"
                },
                "family": {
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "oneOf": [
                    {
                      "pattern": ".*\\S.*$",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "pattern": ".*\\S.*$",
                        "type": "string"
                      }
                    },
                    {
                      "$ref": "#/$defs/query-string"
                    }
                  ]
                },
                "familysrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `family`.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "oneOf": [
                              {
                                "type": "string",
                                "enum": [
                                  "none"
                                ]
                              },
                              {
                                "type": "string",
                                "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                              }
                            ],
                            "default": "none"
                          }
                        ]
                      }
                    }
                  ]
                },
                "linepositionsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.",
                  "type": "string"
                },
                "shadow": {
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "oneOf": [
                    {
                      "default": "none",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "default": "none",
                        "type": "string"
                      }
                    }
                  ]
                },
                "shadowsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `shadow`.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 1
                          }
                        ]
                      }
                    }
                  ]
                },
                "sizesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `size`.",
                  "type": "string"
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "italic"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "stylesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `style`.",
                  "type": "string"
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "word caps",
                              "upper",
                              "lower"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "textcasesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `textcase`.",
                  "type": "string"
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "small-caps",
                              "all-small-caps",
                              "all-petite-caps",
                              "petite-caps",
                              "unicase"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "variantsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `variant`.",
                  "type": "string"
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 1000,
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "weightsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `weight`.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "position": {
              "description": "Specifies the location of the `title`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "top left",
                    "top center",
                    "top right",
                    "middle center",
                    "bottom left",
                    "bottom center",
                    "bottom right"
                  ]
                }
              ]
            },
            "text": {
              "default": "",
              "description": "Sets the title of the chart. If it is empty, no title is displayed.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "uid": {
          "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.",
          "type": "string"
        },
        "uirevision": {
          "description": "Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves."
        },
        "values": {
          "description": "Sets the values of the sectors. If omitted, we count occurrences of each label.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "valuessrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `values`.",
          "type": "string"
        },
        "visible": {
          "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                true,
                false,
                "legendonly"
              ],
              "default": true
            }
          ]
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false
    },
    "Sankey": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "$id": "https://visivo.io/trace-properties/schema",
      "description": "A schema to validate plotly trace properties",
      "type": "object",
      "properties": {
        "type": {
          "const": "sankey"
        },
        "arrangement": {
          "description": "If value is `snap` (the default), the node arrangement is assisted by automatic snapping of elements to preserve space between nodes specified via `nodepad`. If value is `perpendicular`, the nodes can only move along a line perpendicular to the flow. If value is `freeform`, the nodes can freely move on the plane. If value is `fixed`, the nodes are stationary.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "snap",
                "perpendicular",
                "freeform",
                "fixed"
              ],
              "default": "snap"
            }
          ]
        },
        "customdata": {
          "description": "Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "customdatasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `customdata`.",
          "type": "string"
        },
        "domain": {
          "type": "object",
          "properties": {
            "column": {
              "description": "If there is a layout grid, use the domain for this column in the grid for this sankey trace .",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "row": {
              "description": "If there is a layout grid, use the domain for this row in the grid for this sankey trace .",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "x": {
              "description": "Sets the horizontal domain of this sankey trace (in plot fraction).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 1
                      }
                    ]
                  },
                  "minItems": 2,
                  "maxItems": 2,
                  "default": [
                    0,
                    1
                  ]
                }
              ]
            },
            "y": {
              "description": "Sets the vertical domain of this sankey trace (in plot fraction).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 1
                      }
                    ]
                  },
                  "minItems": 2,
                  "maxItems": 2,
                  "default": [
                    0,
                    1
                  ]
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "hoverinfo": {
          "description": "Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired. Note that this attribute is superseded by `node.hoverinfo` and `node.hoverinfo` for nodes and links respectively.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "oneOf": [
                {
                  "type": "string",
                  "enum": [
                    "all",
                    "none",
                    "skip"
                  ]
                },
                {
                  "type": "string",
                  "pattern": "^()(\\+())*$"
                }
              ],
              "default": "all"
            }
          ]
        },
        "hoverlabel": {
          "type": "object",
          "properties": {
            "align": {
              "description": "Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "left",
                        "right",
                        "auto"
                      ],
                      "default": "auto"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "left",
                          "right",
                          "auto"
                        ],
                        "default": "auto"
                      }
                    ]
                  }
                }
              ]
            },
            "alignsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `align`.",
              "type": "string"
            },
            "bgcolor": {
              "description": "Sets the background color of the hover labels for this trace",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "bgcolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.",
              "type": "string"
            },
            "bordercolor": {
              "description": "Sets the border color of the hover labels for this trace.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "bordercolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.",
              "type": "string"
            },
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "colorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `color`.",
                  "type": "string"
                },
                "family": {
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "oneOf": [
                    {
                      "pattern": ".*\\S.*$",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "pattern": ".*\\S.*$",
                        "type": "string"
                      }
                    },
                    {
                      "$ref": "#/$defs/query-string"
                    }
                  ]
                },
                "familysrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `family`.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "oneOf": [
                              {
                                "type": "string",
                                "enum": [
                                  "none"
                                ]
                              },
                              {
                                "type": "string",
                                "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                              }
                            ],
                            "default": "none"
                          }
                        ]
                      }
                    }
                  ]
                },
                "linepositionsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.",
                  "type": "string"
                },
                "shadow": {
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "oneOf": [
                    {
                      "default": "none",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "default": "none",
                        "type": "string"
                      }
                    }
                  ]
                },
                "shadowsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `shadow`.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 1
                          }
                        ]
                      }
                    }
                  ]
                },
                "sizesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `size`.",
                  "type": "string"
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "italic"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "stylesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `style`.",
                  "type": "string"
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "word caps",
                              "upper",
                              "lower"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "textcasesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `textcase`.",
                  "type": "string"
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "small-caps",
                              "all-small-caps",
                              "all-petite-caps",
                              "petite-caps",
                              "unicase"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "variantsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `variant`.",
                  "type": "string"
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 1000,
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "weightsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `weight`.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "namelength": {
              "description": "Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": -1,
                      "default": 15
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "integer",
                        "minimum": -1,
                        "default": 15
                      }
                    ]
                  }
                }
              ]
            },
            "namelengthsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `namelength`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "ids": {
          "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "idssrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `ids`.",
          "type": "string"
        },
        "legend": {
          "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "legend",
              "pattern": "^legend([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "legendgrouptitle": {
          "type": "object",
          "properties": {
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "family": {
                  "pattern": ".*\\S.*$",
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                "shadow": {
                  "default": "none",
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "text": {
              "default": "",
              "description": "Sets the title of the legend group.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "legendrank": {
          "description": "Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": 1000
            }
          ]
        },
        "legendwidth": {
          "description": "Sets the width (in px or fraction) of the legend for this trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0
            }
          ]
        },
        "link": {
          "type": "object",
          "properties": {
            "arrowlen": {
              "description": "Sets the length (in px) of the links arrow, if 0 no arrow will be drawn.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "color": {
              "description": "Sets the `link` color. It can be a single value, or an array for specifying color for each `link`. If `link.color` is omitted, then by default, a translucent grey link will be used.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "colorscales": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "cmax": {
                    "description": "Sets the upper bound of the color domain.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "default": 1
                      }
                    ]
                  },
                  "cmin": {
                    "description": "Sets the lower bound of the color domain.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "default": 0
                      }
                    ]
                  },
                  "colorscale": {
                    "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/colorscale",
                        "default": [
                          [
                            0,
                            "white"
                          ],
                          [
                            1,
                            "black"
                          ]
                        ]
                      }
                    ]
                  },
                  "label": {
                    "default": "",
                    "description": "The label of the links to color based on their concentration within a flow.",
                    "type": "string"
                  },
                  "name": {
                    "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.",
                    "type": "string"
                  },
                  "templateitemname": {
                    "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.",
                    "type": "string"
                  }
                },
                "additionalProperties": false
              },
              "minItems": 1
            },
            "colorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `color`.",
              "type": "string"
            },
            "customdata": {
              "description": "Assigns extra data to each link.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  }
                }
              ]
            },
            "customdatasrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `customdata`.",
              "type": "string"
            },
            "hovercolor": {
              "description": "Sets the `link` hover color. It can be a single value, or an array for specifying hover colors for each `link`. If `link.hovercolor` is omitted, then by default, links will become slightly more opaque when hovered over.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "hovercolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `hovercolor`.",
              "type": "string"
            },
            "hoverinfo": {
              "description": "Determines which trace information appear when hovering links. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "all",
                    "none",
                    "skip"
                  ],
                  "default": "all"
                }
              ]
            },
            "hoverlabel": {
              "type": "object",
              "properties": {
                "align": {
                  "description": "Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "left",
                            "right",
                            "auto"
                          ],
                          "default": "auto"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "left",
                              "right",
                              "auto"
                            ],
                            "default": "auto"
                          }
                        ]
                      }
                    }
                  ]
                },
                "alignsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `align`.",
                  "type": "string"
                },
                "bgcolor": {
                  "description": "Sets the background color of the hover labels for this trace",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "bgcolorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.",
                  "type": "string"
                },
                "bordercolor": {
                  "description": "Sets the border color of the hover labels for this trace.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "bordercolorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.",
                  "type": "string"
                },
                "font": {
                  "type": "object",
                  "properties": {
                    "color": {
                      "oneOf": [
                        {
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "$ref": "#/$defs/color"
                            }
                          ]
                        },
                        {
                          "type": "array",
                          "items": {
                            "oneOf": [
                              {
                                "$ref": "#/$defs/query-string"
                              },
                              {
                                "$ref": "#/$defs/color"
                              }
                            ]
                          }
                        }
                      ]
                    },
                    "colorsrc": {
                      "description": "Sets the source reference on Chart Studio Cloud for `color`.",
                      "type": "string"
                    },
                    "family": {
                      "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                      "oneOf": [
                        {
                          "pattern": ".*\\S.*$",
                          "type": "string"
                        },
                        {
                          "type": "array",
                          "items": {
                            "pattern": ".*\\S.*$",
                            "type": "string"
                          }
                        },
                        {
                          "$ref": "#/$defs/query-string"
                        }
                      ]
                    },
                    "familysrc": {
                      "description": "Sets the source reference on Chart Studio Cloud for `family`.",
                      "type": "string"
                    },
                    "lineposition": {
                      "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                      "oneOf": [
                        {
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "oneOf": [
                                {
                                  "type": "string",
                                  "enum": [
                                    "none"
                                  ]
                                },
                                {
                                  "type": "string",
                                  "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                                }
                              ],
                              "default": "none"
                            }
                          ]
                        },
                        {
                          "type": "array",
                          "items": {
                            "oneOf": [
                              {
                                "$ref": "#/$defs/query-string"
                              },
                              {
                                "oneOf": [
                                  {
                                    "type": "string",
                                    "enum": [
                                      "none"
                                    ]
                                  },
                                  {
                                    "type": "string",
                                    "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                                  }
                                ],
                                "default": "none"
                              }
                            ]
                          }
                        }
                      ]
                    },
                    "linepositionsrc": {
                      "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.",
                      "type": "string"
                    },
                    "shadow": {
                      "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                      "oneOf": [
                        {
                          "default": "none",
                          "type": "string"
                        },
                        {
                          "type": "array",
                          "items": {
                            "default": "none",
                            "type": "string"
                          }
                        }
                      ]
                    },
                    "shadowsrc": {
                      "description": "Sets the source reference on Chart Studio Cloud for `shadow`.",
                      "type": "string"
                    },
                    "size": {
                      "oneOf": [
                        {
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "type": "number",
                              "minimum": 1
                            }
                          ]
                        },
                        {
                          "type": "array",
                          "items": {
                            "oneOf": [
                              {
                                "$ref": "#/$defs/query-string"
                              },
                              {
                                "type": "number",
                                "minimum": 1
                              }
                            ]
                          }
                        }
                      ]
                    },
                    "sizesrc": {
                      "description": "Sets the source reference on Chart Studio Cloud for `size`.",
                      "type": "string"
                    },
                    "style": {
                      "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                      "oneOf": [
                        {
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "italic"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        {
                          "type": "array",
                          "items": {
                            "oneOf": [
                              {
                                "$ref": "#/$defs/query-string"
                              },
                              {
                                "enum": [
                                  "normal",
                                  "italic"
                                ],
                                "default": "normal"
                              }
                            ]
                          }
                        }
                      ]
                    },
                    "stylesrc": {
                      "description": "Sets the source reference on Chart Studio Cloud for `style`.",
                      "type": "string"
                    },
                    "textcase": {
                      "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                      "oneOf": [
                        {
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "word caps",
                                "upper",
                                "lower"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        {
                          "type": "array",
                          "items": {
                            "oneOf": [
                              {
                                "$ref": "#/$defs/query-string"
                              },
                              {
                                "enum": [
                                  "normal",
                                  "word caps",
                                  "upper",
                                  "lower"
                                ],
                                "default": "normal"
                              }
                            ]
                          }
                        }
                      ]
                    },
                    "textcasesrc": {
                      "description": "Sets the source reference on Chart Studio Cloud for `textcase`.",
                      "type": "string"
                    },
                    "variant": {
                      "description": "Sets the variant of the font.",
                      "oneOf": [
                        {
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "small-caps",
                                "all-small-caps",
                                "all-petite-caps",
                                "petite-caps",
                                "unicase"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        {
                          "type": "array",
                          "items": {
                            "oneOf": [
                              {
                                "$ref": "#/$defs/query-string"
                              },
                              {
                                "enum": [
                                  "normal",
                                  "small-caps",
                                  "all-small-caps",
                                  "all-petite-caps",
                                  "petite-caps",
                                  "unicase"
                                ],
                                "default": "normal"
                              }
                            ]
                          }
                        }
                      ]
                    },
                    "variantsrc": {
                      "description": "Sets the source reference on Chart Studio Cloud for `variant`.",
                      "type": "string"
                    },
                    "weight": {
                      "description": "Sets the weight (or boldness) of the font.",
                      "oneOf": [
                        {
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "type": "integer",
                              "minimum": 1,
                              "maximum": 1000,
                              "default": "normal"
                            }
                          ]
                        },
                        {
                          "type": "array",
                          "items": {
                            "oneOf": [
                              {
                                "$ref": "#/$defs/query-string"
                              },
                              {
                                "type": "integer",
                                "minimum": 1,
                                "maximum": 1000,
                                "default": "normal"
                              }
                            ]
                          }
                        }
                      ]
                    },
                    "weightsrc": {
                      "description": "Sets the source reference on Chart Studio Cloud for `weight`.",
                      "type": "string"
                    }
                  },
                  "additionalProperties": false
                },
                "namelength": {
                  "description": "Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": -1,
                          "default": 15
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "integer",
                            "minimum": -1,
                            "default": 15
                          }
                        ]
                      }
                    }
                  ]
                },
                "namelengthsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `namelength`.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "hovertemplate": {
              "description": "Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". <https://github.com/d3/d3-format/tree/v1.4.5#d3-format> for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format> for details on the date formatting syntax. The variables available in `hovertemplate` are the ones emitted as event data described at this link <https://plotly.com/javascript/plotlyjs-events/#event-data>. Additionally, every attributes that can be specified per-point (the ones that are `arrayOk: true`) are available.  Variables `source` and `target` are node objects.Finally, the template string has access to variables `value` and `label`. Anything contained in tag `<extra>` is displayed in the secondary box, for example \"<extra>{fullData.name}</extra>\". To hide the secondary box completely, use an empty tag `<extra></extra>`.",
              "oneOf": [
                {
                  "default": "",
                  "type": "string"
                },
                {
                  "type": "array",
                  "items": {
                    "default": "",
                    "type": "string"
                  }
                }
              ]
            },
            "hovertemplatesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.",
              "type": "string"
            },
            "label": {
              "description": "The shown name of the link.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  },
                  "default": []
                }
              ]
            },
            "labelsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `label`.",
              "type": "string"
            },
            "line": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the color of the `line` around each `link`.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "colorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `color`.",
                  "type": "string"
                },
                "width": {
                  "description": "Sets the width (in px) of the `line` around each `link`.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 0,
                          "default": 0
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 0,
                            "default": 0
                          }
                        ]
                      }
                    }
                  ]
                },
                "widthsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `width`.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "source": {
              "description": "An integer number `[0..nodes.length - 1]` that represents the source node.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  },
                  "default": []
                }
              ]
            },
            "sourcesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `source`.",
              "type": "string"
            },
            "target": {
              "description": "An integer number `[0..nodes.length - 1]` that represents the target node.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  },
                  "default": []
                }
              ]
            },
            "targetsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `target`.",
              "type": "string"
            },
            "value": {
              "description": "A numeric value representing the flow volume value.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  },
                  "default": []
                }
              ]
            },
            "valuesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `value`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "metasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `meta`.",
          "type": "string"
        },
        "name": {
          "description": "Sets the trace name. The trace name appears as the legend item and on hover.",
          "type": "string"
        },
        "node": {
          "type": "object",
          "properties": {
            "align": {
              "description": "Sets the alignment method used to position the nodes along the horizontal axis.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "justify",
                    "left",
                    "right",
                    "center"
                  ],
                  "default": "justify"
                }
              ]
            },
            "color": {
              "description": "Sets the `node` color. It can be a single value, or an array for specifying color for each `node`. If `node.color` is omitted, then the default `Plotly` color palette will be cycled through to have a variety of colors. These defaults are not fully opaque, to allow some visibility of what is beneath the node.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "colorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `color`.",
              "type": "string"
            },
            "customdata": {
              "description": "Assigns extra data to each node.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  }
                }
              ]
            },
            "customdatasrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `customdata`.",
              "type": "string"
            },
            "groups": {
              "description": "Groups of nodes. Each group is defined by an array with the indices of the nodes it contains. Multiple groups can be specified.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number"
                      }
                    ]
                  },
                  "minItems": 1,
                  "default": []
                }
              ]
            },
            "hoverinfo": {
              "description": "Determines which trace information appear when hovering nodes. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "all",
                    "none",
                    "skip"
                  ],
                  "default": "all"
                }
              ]
            },
            "hoverlabel": {
              "type": "object",
              "properties": {
                "align": {
                  "description": "Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "left",
                            "right",
                            "auto"
                          ],
                          "default": "auto"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "left",
                              "right",
                              "auto"
                            ],
                            "default": "auto"
                          }
                        ]
                      }
                    }
                  ]
                },
                "alignsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `align`.",
                  "type": "string"
                },
                "bgcolor": {
                  "description": "Sets the background color of the hover labels for this trace",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "bgcolorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.",
                  "type": "string"
                },
                "bordercolor": {
                  "description": "Sets the border color of the hover labels for this trace.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "bordercolorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.",
                  "type": "string"
                },
                "font": {
                  "type": "object",
                  "properties": {
                    "color": {
                      "oneOf": [
                        {
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "$ref": "#/$defs/color"
                            }
                          ]
                        },
                        {
                          "type": "array",
                          "items": {
                            "oneOf": [
                              {
                                "$ref": "#/$defs/query-string"
                              },
                              {
                                "$ref": "#/$defs/color"
                              }
                            ]
                          }
                        }
                      ]
                    },
                    "colorsrc": {
                      "description": "Sets the source reference on Chart Studio Cloud for `color`.",
                      "type": "string"
                    },
                    "family": {
                      "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                      "oneOf": [
                        {
                          "pattern": ".*\\S.*$",
                          "type": "string"
                        },
                        {
                          "type": "array",
                          "items": {
                            "pattern": ".*\\S.*$",
                            "type": "string"
                          }
                        },
                        {
                          "$ref": "#/$defs/query-string"
                        }
                      ]
                    },
                    "familysrc": {
                      "description": "Sets the source reference on Chart Studio Cloud for `family`.",
                      "type": "string"
                    },
                    "lineposition": {
                      "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                      "oneOf": [
                        {
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "oneOf": [
                                {
                                  "type": "string",
                                  "enum": [
                                    "none"
                                  ]
                                },
                                {
                                  "type": "string",
                                  "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                                }
                              ],
                              "default": "none"
                            }
                          ]
                        },
                        {
                          "type": "array",
                          "items": {
                            "oneOf": [
                              {
                                "$ref": "#/$defs/query-string"
                              },
                              {
                                "oneOf": [
                                  {
                                    "type": "string",
                                    "enum": [
                                      "none"
                                    ]
                                  },
                                  {
                                    "type": "string",
                                    "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                                  }
                                ],
                                "default": "none"
                              }
                            ]
                          }
                        }
                      ]
                    },
                    "linepositionsrc": {
                      "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.",
                      "type": "string"
                    },
                    "shadow": {
                      "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                      "oneOf": [
                        {
                          "default": "none",
                          "type": "string"
                        },
                        {
                          "type": "array",
                          "items": {
                            "default": "none",
                            "type": "string"
                          }
                        }
                      ]
                    },
                    "shadowsrc": {
                      "description": "Sets the source reference on Chart Studio Cloud for `shadow`.",
                      "type": "string"
                    },
                    "size": {
                      "oneOf": [
                        {
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "type": "number",
                              "minimum": 1
                            }
                          ]
                        },
                        {
                          "type": "array",
                          "items": {
                            "oneOf": [
                              {
                                "$ref": "#/$defs/query-string"
                              },
                              {
                                "type": "number",
                                "minimum": 1
                              }
                            ]
                          }
                        }
                      ]
                    },
                    "sizesrc": {
                      "description": "Sets the source reference on Chart Studio Cloud for `size`.",
                      "type": "string"
                    },
                    "style": {
                      "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                      "oneOf": [
                        {
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "italic"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        {
                          "type": "array",
                          "items": {
                            "oneOf": [
                              {
                                "$ref": "#/$defs/query-string"
                              },
                              {
                                "enum": [
                                  "normal",
                                  "italic"
                                ],
                                "default": "normal"
                              }
                            ]
                          }
                        }
                      ]
                    },
                    "stylesrc": {
                      "description": "Sets the source reference on Chart Studio Cloud for `style`.",
                      "type": "string"
                    },
                    "textcase": {
                      "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                      "oneOf": [
                        {
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "word caps",
                                "upper",
                                "lower"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        {
                          "type": "array",
                          "items": {
                            "oneOf": [
                              {
                                "$ref": "#/$defs/query-string"
                              },
                              {
                                "enum": [
                                  "normal",
                                  "word caps",
                                  "upper",
                                  "lower"
                                ],
                                "default": "normal"
                              }
                            ]
                          }
                        }
                      ]
                    },
                    "textcasesrc": {
                      "description": "Sets the source reference on Chart Studio Cloud for `textcase`.",
                      "type": "string"
                    },
                    "variant": {
                      "description": "Sets the variant of the font.",
                      "oneOf": [
                        {
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "small-caps",
                                "all-small-caps",
                                "all-petite-caps",
                                "petite-caps",
                                "unicase"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        {
                          "type": "array",
                          "items": {
                            "oneOf": [
                              {
                                "$ref": "#/$defs/query-string"
                              },
                              {
                                "enum": [
                                  "normal",
                                  "small-caps",
                                  "all-small-caps",
                                  "all-petite-caps",
                                  "petite-caps",
                                  "unicase"
                                ],
                                "default": "normal"
                              }
                            ]
                          }
                        }
                      ]
                    },
                    "variantsrc": {
                      "description": "Sets the source reference on Chart Studio Cloud for `variant`.",
                      "type": "string"
                    },
                    "weight": {
                      "description": "Sets the weight (or boldness) of the font.",
                      "oneOf": [
                        {
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "type": "integer",
                              "minimum": 1,
                              "maximum": 1000,
                              "default": "normal"
                            }
                          ]
                        },
                        {
                          "type": "array",
                          "items": {
                            "oneOf": [
                              {
                                "$ref": "#/$defs/query-string"
                              },
                              {
                                "type": "integer",
                                "minimum": 1,
                                "maximum": 1000,
                                "default": "normal"
                              }
                            ]
                          }
                        }
                      ]
                    },
                    "weightsrc": {
                      "description": "Sets the source reference on Chart Studio Cloud for `weight`.",
                      "type": "string"
                    }
                  },
                  "additionalProperties": false
                },
                "namelength": {
                  "description": "Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": -1,
                          "default": 15
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "integer",
                            "minimum": -1,
                            "default": 15
                          }
                        ]
                      }
                    }
                  ]
                },
                "namelengthsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `namelength`.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "hovertemplate": {
              "description": "Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". <https://github.com/d3/d3-format/tree/v1.4.5#d3-format> for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format> for details on the date formatting syntax. The variables available in `hovertemplate` are the ones emitted as event data described at this link <https://plotly.com/javascript/plotlyjs-events/#event-data>. Additionally, every attributes that can be specified per-point (the ones that are `arrayOk: true`) are available.  Variables `sourceLinks` and `targetLinks` are arrays of link objects.Finally, the template string has access to variables `value` and `label`. Anything contained in tag `<extra>` is displayed in the secondary box, for example \"<extra>{fullData.name}</extra>\". To hide the secondary box completely, use an empty tag `<extra></extra>`.",
              "oneOf": [
                {
                  "default": "",
                  "type": "string"
                },
                {
                  "type": "array",
                  "items": {
                    "default": "",
                    "type": "string"
                  }
                }
              ]
            },
            "hovertemplatesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.",
              "type": "string"
            },
            "label": {
              "description": "The shown name of the node.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  },
                  "default": []
                }
              ]
            },
            "labelsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `label`.",
              "type": "string"
            },
            "line": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the color of the `line` around each `node`.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "colorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `color`.",
                  "type": "string"
                },
                "width": {
                  "description": "Sets the width (in px) of the `line` around each `node`.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 0,
                          "default": 0.5
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 0,
                            "default": 0.5
                          }
                        ]
                      }
                    }
                  ]
                },
                "widthsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `width`.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "pad": {
              "description": "Sets the padding (in px) between the `nodes`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 20
                }
              ]
            },
            "thickness": {
              "description": "Sets the thickness (in px) of the `nodes`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 1,
                  "default": 20
                }
              ]
            },
            "x": {
              "description": "The normalized horizontal position of the node.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  },
                  "default": []
                }
              ]
            },
            "xsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `x`.",
              "type": "string"
            },
            "y": {
              "description": "The normalized vertical position of the node.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  },
                  "default": []
                }
              ]
            },
            "ysrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `y`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "orientation": {
          "description": "Sets the orientation of the Sankey diagram.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "v",
                "h"
              ],
              "default": "h"
            }
          ]
        },
        "selectedpoints": {
          "description": "Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect."
        },
        "stream": {
          "type": "object",
          "properties": {
            "maxpoints": {
              "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 10000,
                  "default": 500
                }
              ]
            },
            "token": {
              "pattern": ".*\\S.*$",
              "description": "The stream id number links a data trace on a plot with a stream. See <https://chart-studio.plotly.com/settings> for more details.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "textfont": {
          "type": "object",
          "properties": {
            "color": {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "family": {
              "pattern": ".*\\S.*$",
              "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
              "type": "string"
            },
            "lineposition": {
              "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "oneOf": [
                    {
                      "type": "string",
                      "enum": [
                        "none"
                      ]
                    },
                    {
                      "type": "string",
                      "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                    }
                  ],
                  "default": "none"
                }
              ]
            },
            "shadow": {
              "default": "auto",
              "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
              "type": "string"
            },
            "size": {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 1
                }
              ]
            },
            "style": {
              "description": "Sets whether a font should be styled with a normal or italic face from its family.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "normal",
                    "italic"
                  ],
                  "default": "normal"
                }
              ]
            },
            "textcase": {
              "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "normal",
                    "word caps",
                    "upper",
                    "lower"
                  ],
                  "default": "normal"
                }
              ]
            },
            "variant": {
              "description": "Sets the variant of the font.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "normal",
                    "small-caps",
                    "all-small-caps",
                    "all-petite-caps",
                    "petite-caps",
                    "unicase"
                  ],
                  "default": "normal"
                }
              ]
            },
            "weight": {
              "description": "Sets the weight (or boldness) of the font.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 1,
                  "maximum": 1000,
                  "default": "normal"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "uid": {
          "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.",
          "type": "string"
        },
        "uirevision": {
          "description": "Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves."
        },
        "valueformat": {
          "default": ".3s",
          "description": "Sets the value formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>.",
          "type": "string"
        },
        "valuesuffix": {
          "default": "",
          "description": "Adds a unit to follow the value in the hover tooltip. Add a space if a separation is necessary from the value.",
          "type": "string"
        },
        "visible": {
          "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                true,
                false,
                "legendonly"
              ],
              "default": true
            }
          ]
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false
    },
    "Scatter": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "$id": "https://visivo.io/trace-properties/schema",
      "description": "A schema to validate plotly trace properties",
      "type": "object",
      "properties": {
        "type": {
          "const": "scatter"
        },
        "alignmentgroup": {
          "default": "",
          "description": "Set several traces linked to the same position axis or matching axes to the same alignmentgroup. This controls whether bars compute their positional range dependently or independently.",
          "type": "string"
        },
        "cliponaxis": {
          "description": "Determines whether or not markers and text nodes are clipped about the subplot axes. To show markers and text nodes above axis lines and tick labels, make sure to set `xaxis.layer` and `yaxis.layer` to *below traces*.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "connectgaps": {
          "description": "Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": false
            }
          ]
        },
        "customdata": {
          "description": "Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "customdatasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `customdata`.",
          "type": "string"
        },
        "dx": {
          "description": "Sets the x coordinate step. See `x0` for more info.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": 1
            }
          ]
        },
        "dy": {
          "description": "Sets the y coordinate step. See `y0` for more info.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": 1
            }
          ]
        },
        "error_x": {
          "type": "object",
          "properties": {
            "array": {
              "description": "Sets the data corresponding the length of each error bar. Values are plotted relative to the underlying data.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  }
                }
              ]
            },
            "arrayminus": {
              "description": "Sets the data corresponding the length of each error bar in the bottom (left) direction for vertical (horizontal) bars Values are plotted relative to the underlying data.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  }
                }
              ]
            },
            "arrayminussrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `arrayminus`.",
              "type": "string"
            },
            "arraysrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `array`.",
              "type": "string"
            },
            "color": {
              "description": "Sets the stroke color of the error bars.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "copy_ystyle": {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean"
                }
              ]
            },
            "symmetric": {
              "description": "Determines whether or not the error bars have the same length in both direction (top/bottom for vertical bars, left/right for horizontal bars.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean"
                }
              ]
            },
            "thickness": {
              "description": "Sets the thickness (in px) of the error bars.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 2
                }
              ]
            },
            "traceref": {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "tracerefminus": {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "type": {
              "description": "Determines the rule used to generate the error bars. If *constant`, the bar lengths are of a constant value. Set this constant in `value`. If *percent*, the bar lengths correspond to a percentage of underlying data. Set this percentage in `value`. If *sqrt*, the bar lengths correspond to the square of the underlying data. If *data*, the bar lengths are set with data set `array`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "percent",
                    "constant",
                    "sqrt",
                    "data"
                  ]
                }
              ]
            },
            "value": {
              "description": "Sets the value of either the percentage (if `type` is set to *percent*) or the constant (if `type` is set to *constant*) corresponding to the lengths of the error bars.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 10
                }
              ]
            },
            "valueminus": {
              "description": "Sets the value of either the percentage (if `type` is set to *percent*) or the constant (if `type` is set to *constant*) corresponding to the lengths of the error bars in the bottom (left) direction for vertical (horizontal) bars",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 10
                }
              ]
            },
            "visible": {
              "description": "Determines whether or not this set of error bars is visible.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean"
                }
              ]
            },
            "width": {
              "description": "Sets the width (in px) of the cross-bar at both ends of the error bars.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "error_y": {
          "type": "object",
          "properties": {
            "array": {
              "description": "Sets the data corresponding the length of each error bar. Values are plotted relative to the underlying data.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  }
                }
              ]
            },
            "arrayminus": {
              "description": "Sets the data corresponding the length of each error bar in the bottom (left) direction for vertical (horizontal) bars Values are plotted relative to the underlying data.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  }
                }
              ]
            },
            "arrayminussrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `arrayminus`.",
              "type": "string"
            },
            "arraysrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `array`.",
              "type": "string"
            },
            "color": {
              "description": "Sets the stroke color of the error bars.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "symmetric": {
              "description": "Determines whether or not the error bars have the same length in both direction (top/bottom for vertical bars, left/right for horizontal bars.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean"
                }
              ]
            },
            "thickness": {
              "description": "Sets the thickness (in px) of the error bars.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 2
                }
              ]
            },
            "traceref": {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "tracerefminus": {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "type": {
              "description": "Determines the rule used to generate the error bars. If *constant`, the bar lengths are of a constant value. Set this constant in `value`. If *percent*, the bar lengths correspond to a percentage of underlying data. Set this percentage in `value`. If *sqrt*, the bar lengths correspond to the square of the underlying data. If *data*, the bar lengths are set with data set `array`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "percent",
                    "constant",
                    "sqrt",
                    "data"
                  ]
                }
              ]
            },
            "value": {
              "description": "Sets the value of either the percentage (if `type` is set to *percent*) or the constant (if `type` is set to *constant*) corresponding to the lengths of the error bars.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 10
                }
              ]
            },
            "valueminus": {
              "description": "Sets the value of either the percentage (if `type` is set to *percent*) or the constant (if `type` is set to *constant*) corresponding to the lengths of the error bars in the bottom (left) direction for vertical (horizontal) bars",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 10
                }
              ]
            },
            "visible": {
              "description": "Determines whether or not this set of error bars is visible.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean"
                }
              ]
            },
            "width": {
              "description": "Sets the width (in px) of the cross-bar at both ends of the error bars.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "fill": {
          "description": "Sets the area to fill with a solid color. Defaults to *none* unless this trace is stacked, then it gets *tonexty* (*tonextx*) if `orientation` is *v* (*h*) Use with `fillcolor` if not *none*. *tozerox* and *tozeroy* fill to x=0 and y=0 respectively. *tonextx* and *tonexty* fill between the endpoints of this trace and the endpoints of the trace before it, connecting those endpoints with straight lines (to make a stacked area graph); if there is no trace before it, they behave like *tozerox* and *tozeroy*. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape. *tonext* fills the space between two traces if one completely encloses the other (eg consecutive contour lines), and behaves like *toself* if there is no trace before it. *tonext* should not be used if one trace does not enclose the other. Traces in a `stackgroup` will only fill to (or be filled to) other traces in the same group. With multiple `stackgroup`s or some traces stacked and some not, if fill-linked traces are not already consecutive, the later ones will be pushed down in the drawing order.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "none",
                "tozeroy",
                "tozerox",
                "tonexty",
                "tonextx",
                "toself",
                "tonext"
              ]
            }
          ]
        },
        "fillcolor": {
          "description": "Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available. If fillgradient is specified, fillcolor is ignored except for setting the background color of the hover label, if any.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "$ref": "#/$defs/color"
            }
          ]
        },
        "fillgradient": {
          "type": "object",
          "properties": {
            "colorscale": {
              "description": "Sets the fill gradient colors as a color scale. The color scale is interpreted as a gradient applied in the direction specified by *orientation*, from the lowest to the highest value of the scatter plot along that axis, or from the center to the most distant point from it, if orientation is *radial*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/colorscale"
                }
              ]
            },
            "start": {
              "description": "Sets the gradient start value. It is given as the absolute position on the axis determined by the orientation. E.g., if orientation is *horizontal*, the gradient will be horizontal and start from the x-position given by start. If omitted, the gradient starts at the lowest value of the trace along the respective axis. Ignored if orientation is *radial*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number"
                }
              ]
            },
            "stop": {
              "description": "Sets the gradient end value. It is given as the absolute position on the axis determined by the orientation. E.g., if orientation is *horizontal*, the gradient will be horizontal and end at the x-position given by end. If omitted, the gradient ends at the highest value of the trace along the respective axis. Ignored if orientation is *radial*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number"
                }
              ]
            },
            "type": {
              "description": "Sets the type/orientation of the color gradient for the fill. Defaults to *none*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "radial",
                    "horizontal",
                    "vertical",
                    "none"
                  ],
                  "default": "none"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "fillpattern": {
          "type": "object",
          "properties": {
            "bgcolor": {
              "description": "When there is no colorscale sets the color of background pattern fill. Defaults to a `marker.color` background when `fillmode` is *overlay*. Otherwise, defaults to a transparent background.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "bgcolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.",
              "type": "string"
            },
            "fgcolor": {
              "description": "When there is no colorscale sets the color of foreground pattern fill. Defaults to a `marker.color` background when `fillmode` is *replace*. Otherwise, defaults to dark grey or white to increase contrast with the `bgcolor`.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "fgcolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `fgcolor`.",
              "type": "string"
            },
            "fgopacity": {
              "description": "Sets the opacity of the foreground pattern fill. Defaults to a 0.5 when `fillmode` is *overlay*. Otherwise, defaults to 1.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 1
                }
              ]
            },
            "fillmode": {
              "description": "Determines whether `marker.color` should be used as a default to `bgcolor` or a `fgcolor`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "replace",
                    "overlay"
                  ],
                  "default": "replace"
                }
              ]
            },
            "shape": {
              "description": "Sets the shape of the pattern fill. By default, no pattern is used for filling the area.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "",
                        "/",
                        "\\",
                        "x",
                        "-",
                        "|",
                        "+",
                        "."
                      ],
                      "default": ""
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "",
                          "/",
                          "\\",
                          "x",
                          "-",
                          "|",
                          "+",
                          "."
                        ],
                        "default": ""
                      }
                    ]
                  }
                }
              ]
            },
            "shapesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `shape`.",
              "type": "string"
            },
            "size": {
              "description": "Sets the size of unit squares of the pattern fill in pixels, which corresponds to the interval of repetition of the pattern.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 8
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 0,
                        "default": 8
                      }
                    ]
                  }
                }
              ]
            },
            "sizesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `size`.",
              "type": "string"
            },
            "solidity": {
              "description": "Sets the solidity of the pattern fill. Solidity is roughly the fraction of the area filled by the pattern. Solidity of 0 shows only the background color without pattern and solidty of 1 shows only the foreground color without pattern.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1,
                      "default": 0.3
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 1,
                        "default": 0.3
                      }
                    ]
                  }
                }
              ]
            },
            "soliditysrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `solidity`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "groupnorm": {
          "description": "Only relevant when `stackgroup` is used, and only the first `groupnorm` found in the `stackgroup` will be used - including if `visible` is *legendonly* but not if it is `false`. Sets the normalization for the sum of this `stackgroup`. With *fraction*, the value of each trace at each location is divided by the sum of all trace values at that location. *percent* is the same but multiplied by 100 to show percentages. If there are multiple subplots, or multiple `stackgroup`s on one subplot, each will be normalized within its own set.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "",
                "fraction",
                "percent"
              ],
              "default": ""
            }
          ]
        },
        "hoverinfo": {
          "description": "Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired.",
          "oneOf": [
            {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "oneOf": [
                    {
                      "type": "string",
                      "enum": [
                        "all",
                        "none",
                        "skip"
                      ]
                    },
                    {
                      "type": "string",
                      "pattern": "^(x|y|z|text|name)(\\+(x|y|z|text|name))*$"
                    }
                  ],
                  "default": "all"
                }
              ]
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "oneOf": [
                      {
                        "type": "string",
                        "enum": [
                          "all",
                          "none",
                          "skip"
                        ]
                      },
                      {
                        "type": "string",
                        "pattern": "^(x|y|z|text|name)(\\+(x|y|z|text|name))*$"
                      }
                    ],
                    "default": "all"
                  }
                ]
              }
            }
          ]
        },
        "hoverinfosrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.",
          "type": "string"
        },
        "hoverlabel": {
          "type": "object",
          "properties": {
            "align": {
              "description": "Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "left",
                        "right",
                        "auto"
                      ],
                      "default": "auto"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "left",
                          "right",
                          "auto"
                        ],
                        "default": "auto"
                      }
                    ]
                  }
                }
              ]
            },
            "alignsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `align`.",
              "type": "string"
            },
            "bgcolor": {
              "description": "Sets the background color of the hover labels for this trace",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "bgcolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.",
              "type": "string"
            },
            "bordercolor": {
              "description": "Sets the border color of the hover labels for this trace.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "bordercolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.",
              "type": "string"
            },
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "colorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `color`.",
                  "type": "string"
                },
                "family": {
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "oneOf": [
                    {
                      "pattern": ".*\\S.*$",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "pattern": ".*\\S.*$",
                        "type": "string"
                      }
                    },
                    {
                      "$ref": "#/$defs/query-string"
                    }
                  ]
                },
                "familysrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `family`.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "oneOf": [
                              {
                                "type": "string",
                                "enum": [
                                  "none"
                                ]
                              },
                              {
                                "type": "string",
                                "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                              }
                            ],
                            "default": "none"
                          }
                        ]
                      }
                    }
                  ]
                },
                "linepositionsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.",
                  "type": "string"
                },
                "shadow": {
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "oneOf": [
                    {
                      "default": "none",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "default": "none",
                        "type": "string"
                      }
                    }
                  ]
                },
                "shadowsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `shadow`.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 1
                          }
                        ]
                      }
                    }
                  ]
                },
                "sizesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `size`.",
                  "type": "string"
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "italic"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "stylesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `style`.",
                  "type": "string"
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "word caps",
                              "upper",
                              "lower"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "textcasesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `textcase`.",
                  "type": "string"
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "small-caps",
                              "all-small-caps",
                              "all-petite-caps",
                              "petite-caps",
                              "unicase"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "variantsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `variant`.",
                  "type": "string"
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 1000,
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "weightsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `weight`.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "namelength": {
              "description": "Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": -1,
                      "default": 15
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "integer",
                        "minimum": -1,
                        "default": 15
                      }
                    ]
                  }
                }
              ]
            },
            "namelengthsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `namelength`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "hoveron": {
          "description": "Do the hover effects highlight individual points (markers or line points) or do they highlight filled regions? If the fill is *toself* or *tonext* and there are no markers or text, then the default is *fills*, otherwise it is *points*.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "pattern": "^(points|fills)(\\+(points|fills))*$"
            }
          ]
        },
        "hovertemplate": {
          "description": "Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". <https://github.com/d3/d3-format/tree/v1.4.5#d3-format> for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format> for details on the date formatting syntax. The variables available in `hovertemplate` are the ones emitted as event data described at this link <https://plotly.com/javascript/plotlyjs-events/#event-data>. Additionally, every attributes that can be specified per-point (the ones that are `arrayOk: true`) are available.  Anything contained in tag `<extra>` is displayed in the secondary box, for example \"<extra>{fullData.name}</extra>\". To hide the secondary box completely, use an empty tag `<extra></extra>`.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "hovertemplatesrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.",
          "type": "string"
        },
        "hovertext": {
          "description": "Sets hover text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "hovertextsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.",
          "type": "string"
        },
        "ids": {
          "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "idssrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `ids`.",
          "type": "string"
        },
        "legend": {
          "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "legend",
              "pattern": "^legend([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "legendgroup": {
          "default": "",
          "description": "Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items.",
          "type": "string"
        },
        "legendgrouptitle": {
          "type": "object",
          "properties": {
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "family": {
                  "pattern": ".*\\S.*$",
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                "shadow": {
                  "default": "none",
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "text": {
              "default": "",
              "description": "Sets the title of the legend group.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "legendrank": {
          "description": "Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": 1000
            }
          ]
        },
        "legendwidth": {
          "description": "Sets the width (in px or fraction) of the legend for this trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0
            }
          ]
        },
        "line": {
          "type": "object",
          "properties": {
            "backoff": {
              "description": "Sets the line back off from the end point of the nth line segment (in px). This option is useful e.g. to avoid overlap with arrowhead markers. With *auto* the lines would trim before markers if `marker.angleref` is set to *previous*.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": "auto"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 0,
                        "default": "auto"
                      }
                    ]
                  }
                }
              ]
            },
            "backoffsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `backoff`.",
              "type": "string"
            },
            "color": {
              "description": "Sets the line color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "dash": {
              "default": "solid",
              "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).",
              "type": "string"
            },
            "shape": {
              "description": "Determines the line shape. With *spline* the lines are drawn using spline interpolation. The other available values correspond to step-wise line shapes.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "linear",
                    "spline",
                    "hv",
                    "vh",
                    "hvh",
                    "vhv"
                  ],
                  "default": "linear"
                }
              ]
            },
            "simplify": {
              "description": "Simplifies lines by removing nearly-collinear points. When transitioning lines, it may be desirable to disable this so that the number of points along the resulting SVG path is unaffected.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": true
                }
              ]
            },
            "smoothing": {
              "description": "Has an effect only if `shape` is set to *spline* Sets the amount of smoothing. *0* corresponds to no smoothing (equivalent to a *linear* shape).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 1.3,
                  "default": 1
                }
              ]
            },
            "width": {
              "description": "Sets the line width (in px).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 2
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "marker": {
          "type": "object",
          "properties": {
            "angle": {
              "description": "Sets the marker angle in respect to `angleref`.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": -180,
                      "maximum": 180,
                      "default": 0
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": -180,
                        "maximum": 180,
                        "default": 0
                      }
                    ]
                  }
                }
              ]
            },
            "angleref": {
              "description": "Sets the reference for marker angle. With *previous*, angle 0 points along the line from the previous point to this one. With *up*, angle 0 points toward the top of the screen.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "previous",
                    "up"
                  ],
                  "default": "up"
                }
              ]
            },
            "anglesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `angle`.",
              "type": "string"
            },
            "autocolorscale": {
              "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": true
                }
              ]
            },
            "cauto": {
              "description": "Determines whether or not the color domain is computed with respect to the input data (here in `marker.color`) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if in `marker.color` is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": true
                }
              ]
            },
            "cmax": {
              "description": "Sets the upper bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmin` must be set as well.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": null
                }
              ]
            },
            "cmid": {
              "description": "Sets the mid-point of the color domain by scaling `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color`. Has no effect when `marker.cauto` is `false`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": null
                }
              ]
            },
            "cmin": {
              "description": "Sets the lower bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmax` must be set as well.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": null
                }
              ]
            },
            "color": {
              "description": "Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.cmin` and `marker.cmax` if set.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "coloraxis": {
              "description": "Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "string",
                  "default": null,
                  "pattern": "/^coloraxis([2-9]|[1-9][0-9]+)?$/"
                }
              ]
            },
            "colorbar": {
              "type": "object",
              "properties": {
                "bgcolor": {
                  "description": "Sets the color of padded area.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "bordercolor": {
                  "description": "Sets the axis line color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "borderwidth": {
                  "description": "Sets the width (in px) or the border enclosing this color bar.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 0
                    }
                  ]
                },
                "dtick": {
                  "description": "Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L<f>*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M<n>* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48*"
                },
                "exponentformat": {
                  "description": "Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "none",
                        "e",
                        "E",
                        "power",
                        "SI",
                        "B"
                      ],
                      "default": "B"
                    }
                  ]
                },
                "labelalias": {
                  "default": false,
                  "description": "Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax."
                },
                "len": {
                  "description": "Sets the length of the color bar This measure excludes the padding of both ends. That is, the color bar length is this length minus the padding on both ends.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "lenmode": {
                  "description": "Determines whether this color bar's length (i.e. the measure in the color variation direction) is set in units of plot *fraction* or in *pixels. Use `len` to set the value.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "fraction",
                        "pixels"
                      ],
                      "default": "fraction"
                    }
                  ]
                },
                "minexponent": {
                  "description": "Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 3
                    }
                  ]
                },
                "nticks": {
                  "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 0,
                      "default": 0
                    }
                  ]
                },
                "orientation": {
                  "description": "Sets the orientation of the colorbar.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "h",
                        "v"
                      ],
                      "default": "v"
                    }
                  ]
                },
                "outlinecolor": {
                  "description": "Sets the axis line color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "outlinewidth": {
                  "description": "Sets the width (in px) of the axis line.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "separatethousands": {
                  "description": "If \"true\", even 4-digit integers are separated",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": false
                    }
                  ]
                },
                "showexponent": {
                  "description": "If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "showticklabels": {
                  "description": "Determines whether or not the tick labels are drawn.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                },
                "showtickprefix": {
                  "description": "If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "showticksuffix": {
                  "description": "Same as `showtickprefix` but for tick suffixes.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "thickness": {
                  "description": "Sets the thickness of the color bar This measure excludes the size of the padding, ticks and labels.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 30
                    }
                  ]
                },
                "thicknessmode": {
                  "description": "Determines whether this color bar's thickness (i.e. the measure in the constant color direction) is set in units of plot *fraction* or in *pixels*. Use `thickness` to set the value.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "fraction",
                        "pixels"
                      ],
                      "default": "pixels"
                    }
                  ]
                },
                "tick0": {
                  "description": "Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L<f>* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears."
                },
                "tickangle": {
                  "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": -180,
                      "maximum": 180,
                      "default": "auto"
                    }
                  ]
                },
                "tickcolor": {
                  "description": "Sets the tick color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "tickfont": {
                  "type": "object",
                  "properties": {
                    "color": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    "family": {
                      "pattern": ".*\\S.*$",
                      "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                      "type": "string"
                    },
                    "lineposition": {
                      "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    "shadow": {
                      "default": "none",
                      "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                      "type": "string"
                    },
                    "size": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    "style": {
                      "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "textcase": {
                      "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "variant": {
                      "description": "Sets the variant of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "weight": {
                      "description": "Sets the weight (or boldness) of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    }
                  },
                  "additionalProperties": false
                },
                "tickformat": {
                  "default": "",
                  "description": "Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*",
                  "type": "string"
                },
                "tickformatstops": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "dtickrange": {
                        "description": "range [*min*, *max*], where *min*, *max* - dtick values which describe some zoom level, it is possible to omit *min* or *max* value by passing *null*",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "array",
                            "items": {},
                            "minItems": 2,
                            "maxItems": 2
                          }
                        ]
                      },
                      "enabled": {
                        "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "boolean",
                            "default": true
                          }
                        ]
                      },
                      "name": {
                        "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.",
                        "type": "string"
                      },
                      "templateitemname": {
                        "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.",
                        "type": "string"
                      },
                      "value": {
                        "default": "",
                        "description": "string - dtickformat for described zoom level, the same as *tickformat*",
                        "type": "string"
                      }
                    },
                    "additionalProperties": false
                  },
                  "minItems": 1
                },
                "ticklabeloverflow": {
                  "description": "Determines how we handle tick labels that would overflow either the graph div or the domain of the axis. The default value for inside tick labels is *hide past domain*. In other cases the default is *hide past div*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "allow",
                        "hide past div",
                        "hide past domain"
                      ]
                    }
                  ]
                },
                "ticklabelposition": {
                  "description": "Determines where tick labels are drawn relative to the ticks. Left and right options are used when `orientation` is *h*, top and bottom when `orientation` is *v*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "outside",
                        "inside",
                        "outside top",
                        "inside top",
                        "outside left",
                        "inside left",
                        "outside right",
                        "inside right",
                        "outside bottom",
                        "inside bottom"
                      ],
                      "default": "outside"
                    }
                  ]
                },
                "ticklabelstep": {
                  "description": "Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "default": 1
                    }
                  ]
                },
                "ticklen": {
                  "description": "Sets the tick length (in px).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 5
                    }
                  ]
                },
                "tickmode": {
                  "description": "Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "auto",
                        "linear",
                        "array"
                      ]
                    }
                  ]
                },
                "tickprefix": {
                  "default": "",
                  "description": "Sets a tick label prefix.",
                  "type": "string"
                },
                "ticks": {
                  "description": "Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "outside",
                        "inside",
                        ""
                      ],
                      "default": ""
                    }
                  ]
                },
                "ticksuffix": {
                  "default": "",
                  "description": "Sets a tick label suffix.",
                  "type": "string"
                },
                "ticktext": {
                  "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "string"
                          }
                        ]
                      }
                    }
                  ]
                },
                "ticktextsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.",
                  "type": "string"
                },
                "tickvals": {
                  "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "string"
                          }
                        ]
                      }
                    }
                  ]
                },
                "tickvalssrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.",
                  "type": "string"
                },
                "tickwidth": {
                  "description": "Sets the tick width (in px).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "title": {
                  "type": "object",
                  "properties": {
                    "font": {
                      "type": "object",
                      "properties": {
                        "color": {
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "$ref": "#/$defs/color"
                            }
                          ]
                        },
                        "family": {
                          "pattern": ".*\\S.*$",
                          "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                          "type": "string"
                        },
                        "lineposition": {
                          "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "oneOf": [
                                {
                                  "type": "string",
                                  "enum": [
                                    "none"
                                  ]
                                },
                                {
                                  "type": "string",
                                  "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                                }
                              ],
                              "default": "none"
                            }
                          ]
                        },
                        "shadow": {
                          "default": "none",
                          "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                          "type": "string"
                        },
                        "size": {
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "type": "number",
                              "minimum": 1
                            }
                          ]
                        },
                        "style": {
                          "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "italic"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "textcase": {
                          "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "word caps",
                                "upper",
                                "lower"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "variant": {
                          "description": "Sets the variant of the font.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "small-caps",
                                "all-small-caps",
                                "all-petite-caps",
                                "petite-caps",
                                "unicase"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "weight": {
                          "description": "Sets the weight (or boldness) of the font.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "type": "integer",
                              "minimum": 1,
                              "maximum": 1000,
                              "default": "normal"
                            }
                          ]
                        }
                      },
                      "additionalProperties": false
                    },
                    "side": {
                      "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and  defaults to *right* when `orientation` if *h*.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "right",
                            "top",
                            "bottom"
                          ]
                        }
                      ]
                    },
                    "text": {
                      "description": "Sets the title of the color bar.",
                      "type": "string"
                    }
                  },
                  "additionalProperties": false
                },
                "x": {
                  "description": "Sets the x position with respect to `xref` of the color bar (in plot fraction). When `xref` is *paper*, defaults to 1.02 when `orientation` is *v* and 0.5 when `orientation` is *h*. When `xref` is *container*, defaults to *1* when `orientation` is *v* and 0.5 when `orientation` is *h*. Must be between *0* and *1* if `xref` is *container* and between *-2* and *3* if `xref` is *paper*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number"
                    }
                  ]
                },
                "xanchor": {
                  "description": "Sets this color bar's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the color bar. Defaults to *left* when `orientation` is *v* and *center* when `orientation` is *h*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "left",
                        "center",
                        "right"
                      ]
                    }
                  ]
                },
                "xpad": {
                  "description": "Sets the amount of padding (in px) along the x direction.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 10
                    }
                  ]
                },
                "xref": {
                  "description": "Sets the container `x` refers to. *container* spans the entire `width` of the plot. *paper* refers to the width of the plotting area only.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "container",
                        "paper"
                      ],
                      "default": "paper"
                    }
                  ]
                },
                "y": {
                  "description": "Sets the y position with respect to `yref` of the color bar (in plot fraction). When `yref` is *paper*, defaults to 0.5 when `orientation` is *v* and 1.02 when `orientation` is *h*. When `yref` is *container*, defaults to 0.5 when `orientation` is *v* and 1 when `orientation` is *h*. Must be between *0* and *1* if `yref` is *container* and between *-2* and *3* if `yref` is *paper*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number"
                    }
                  ]
                },
                "yanchor": {
                  "description": "Sets this color bar's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the color bar. Defaults to *middle* when `orientation` is *v* and *bottom* when `orientation` is *h*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "top",
                        "middle",
                        "bottom"
                      ]
                    }
                  ]
                },
                "ypad": {
                  "description": "Sets the amount of padding (in px) along the y direction.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 10
                    }
                  ]
                },
                "yref": {
                  "description": "Sets the container `y` refers to. *container* spans the entire `height` of the plot. *paper* refers to the height of the plotting area only.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "container",
                        "paper"
                      ],
                      "default": "paper"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "colorscale": {
              "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/colorscale",
                  "default": null
                }
              ]
            },
            "colorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `color`.",
              "type": "string"
            },
            "gradient": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the final color of the gradient fill: the center color for radial, the right for horizontal, or the bottom for vertical.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "colorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `color`.",
                  "type": "string"
                },
                "type": {
                  "description": "Sets the type of gradient used to fill the markers",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "radial",
                            "horizontal",
                            "vertical",
                            "none"
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "radial",
                              "horizontal",
                              "vertical",
                              "none"
                            ],
                            "default": "none"
                          }
                        ]
                      }
                    }
                  ]
                },
                "typesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `type`.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "line": {
              "type": "object",
              "properties": {
                "autocolorscale": {
                  "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.line.colorscale`. Has an effect only if in `marker.line.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                },
                "cauto": {
                  "description": "Determines whether or not the color domain is computed with respect to the input data (here in `marker.line.color`) or the bounds set in `marker.line.cmin` and `marker.line.cmax` Has an effect only if in `marker.line.color` is set to a numerical array. Defaults to `false` when `marker.line.cmin` and `marker.line.cmax` are set by the user.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                },
                "cmax": {
                  "description": "Sets the upper bound of the color domain. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color` and if set, `marker.line.cmin` must be set as well.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "default": null
                    }
                  ]
                },
                "cmid": {
                  "description": "Sets the mid-point of the color domain by scaling `marker.line.cmin` and/or `marker.line.cmax` to be equidistant to this point. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color`. Has no effect when `marker.line.cauto` is `false`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "default": null
                    }
                  ]
                },
                "cmin": {
                  "description": "Sets the lower bound of the color domain. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color` and if set, `marker.line.cmax` must be set as well.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "default": null
                    }
                  ]
                },
                "color": {
                  "description": "Sets the marker.line color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.line.cmin` and `marker.line.cmax` if set.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "coloraxis": {
                  "description": "Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "string",
                      "default": null,
                      "pattern": "/^coloraxis([2-9]|[1-9][0-9]+)?$/"
                    }
                  ]
                },
                "colorscale": {
                  "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/colorscale",
                      "default": null
                    }
                  ]
                },
                "colorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `color`.",
                  "type": "string"
                },
                "reversescale": {
                  "description": "Reverses the color mapping if true. Has an effect only if in `marker.line.color` is set to a numerical array. If true, `marker.line.cmin` will correspond to the last color in the array and `marker.line.cmax` will correspond to the first color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": false
                    }
                  ]
                },
                "width": {
                  "description": "Sets the width (in px) of the lines bounding the marker points.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 0
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 0
                          }
                        ]
                      }
                    }
                  ]
                },
                "widthsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `width`.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "maxdisplayed": {
              "description": "Sets a maximum number of points to be drawn on the graph. *0* corresponds to no limit.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "opacity": {
              "description": "Sets the marker opacity.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 1
                      }
                    ]
                  }
                }
              ]
            },
            "opacitysrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `opacity`.",
              "type": "string"
            },
            "reversescale": {
              "description": "Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            },
            "showscale": {
              "description": "Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            },
            "size": {
              "description": "Sets the marker size (in px).",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 6
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 0,
                        "default": 6
                      }
                    ]
                  }
                }
              ]
            },
            "sizemin": {
              "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the minimum size (in px) of the rendered marker points.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "sizemode": {
              "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the rule for which the data in `size` is converted to pixels.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "diameter",
                    "area"
                  ],
                  "default": "diameter"
                }
              ]
            },
            "sizeref": {
              "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the scale factor used to determine the rendered size of marker points. Use with `sizemin` and `sizemode`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": 1
                }
              ]
            },
            "sizesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `size`.",
              "type": "string"
            },
            "standoff": {
              "description": "Moves the marker away from the data point in the direction of `angle` (in px). This can be useful for example if you have another marker at this location and you want to point an arrowhead marker at it.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 0
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 0,
                        "default": 0
                      }
                    ]
                  }
                }
              ]
            },
            "standoffsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `standoff`.",
              "type": "string"
            },
            "symbol": {
              "description": "Sets the marker symbol type. Adding 100 is equivalent to appending *-open* to a symbol name. Adding 200 is equivalent to appending *-dot* to a symbol name. Adding 300 is equivalent to appending *-open-dot* or *dot-open* to a symbol name.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        0,
                        "0",
                        "circle",
                        100,
                        "100",
                        "circle-open",
                        200,
                        "200",
                        "circle-dot",
                        300,
                        "300",
                        "circle-open-dot",
                        1,
                        "1",
                        "square",
                        101,
                        "101",
                        "square-open",
                        201,
                        "201",
                        "square-dot",
                        301,
                        "301",
                        "square-open-dot",
                        2,
                        "2",
                        "diamond",
                        102,
                        "102",
                        "diamond-open",
                        202,
                        "202",
                        "diamond-dot",
                        302,
                        "302",
                        "diamond-open-dot",
                        3,
                        "3",
                        "cross",
                        103,
                        "103",
                        "cross-open",
                        203,
                        "203",
                        "cross-dot",
                        303,
                        "303",
                        "cross-open-dot",
                        4,
                        "4",
                        "x",
                        104,
                        "104",
                        "x-open",
                        204,
                        "204",
                        "x-dot",
                        304,
                        "304",
                        "x-open-dot",
                        5,
                        "5",
                        "triangle-up",
                        105,
                        "105",
                        "triangle-up-open",
                        205,
                        "205",
                        "triangle-up-dot",
                        305,
                        "305",
                        "triangle-up-open-dot",
                        6,
                        "6",
                        "triangle-down",
                        106,
                        "106",
                        "triangle-down-open",
                        206,
                        "206",
                        "triangle-down-dot",
                        306,
                        "306",
                        "triangle-down-open-dot",
                        7,
                        "7",
                        "triangle-left",
                        107,
                        "107",
                        "triangle-left-open",
                        207,
                        "207",
                        "triangle-left-dot",
                        307,
                        "307",
                        "triangle-left-open-dot",
                        8,
                        "8",
                        "triangle-right",
                        108,
                        "108",
                        "triangle-right-open",
                        208,
                        "208",
                        "triangle-right-dot",
                        308,
                        "308",
                        "triangle-right-open-dot",
                        9,
                        "9",
                        "triangle-ne",
                        109,
                        "109",
                        "triangle-ne-open",
                        209,
                        "209",
                        "triangle-ne-dot",
                        309,
                        "309",
                        "triangle-ne-open-dot",
                        10,
                        "10",
                        "triangle-se",
                        110,
                        "110",
                        "triangle-se-open",
                        210,
                        "210",
                        "triangle-se-dot",
                        310,
                        "310",
                        "triangle-se-open-dot",
                        11,
                        "11",
                        "triangle-sw",
                        111,
                        "111",
                        "triangle-sw-open",
                        211,
                        "211",
                        "triangle-sw-dot",
                        311,
                        "311",
                        "triangle-sw-open-dot",
                        12,
                        "12",
                        "triangle-nw",
                        112,
                        "112",
                        "triangle-nw-open",
                        212,
                        "212",
                        "triangle-nw-dot",
                        312,
                        "312",
                        "triangle-nw-open-dot",
                        13,
                        "13",
                        "pentagon",
                        113,
                        "113",
                        "pentagon-open",
                        213,
                        "213",
                        "pentagon-dot",
                        313,
                        "313",
                        "pentagon-open-dot",
                        14,
                        "14",
                        "hexagon",
                        114,
                        "114",
                        "hexagon-open",
                        214,
                        "214",
                        "hexagon-dot",
                        314,
                        "314",
                        "hexagon-open-dot",
                        15,
                        "15",
                        "hexagon2",
                        115,
                        "115",
                        "hexagon2-open",
                        215,
                        "215",
                        "hexagon2-dot",
                        315,
                        "315",
                        "hexagon2-open-dot",
                        16,
                        "16",
                        "octagon",
                        116,
                        "116",
                        "octagon-open",
                        216,
                        "216",
                        "octagon-dot",
                        316,
                        "316",
                        "octagon-open-dot",
                        17,
                        "17",
                        "star",
                        117,
                        "117",
                        "star-open",
                        217,
                        "217",
                        "star-dot",
                        317,
                        "317",
                        "star-open-dot",
                        18,
                        "18",
                        "hexagram",
                        118,
                        "118",
                        "hexagram-open",
                        218,
                        "218",
                        "hexagram-dot",
                        318,
                        "318",
                        "hexagram-open-dot",
                        19,
                        "19",
                        "star-triangle-up",
                        119,
                        "119",
                        "star-triangle-up-open",
                        219,
                        "219",
                        "star-triangle-up-dot",
                        319,
                        "319",
                        "star-triangle-up-open-dot",
                        20,
                        "20",
                        "star-triangle-down",
                        120,
                        "120",
                        "star-triangle-down-open",
                        220,
                        "220",
                        "star-triangle-down-dot",
                        320,
                        "320",
                        "star-triangle-down-open-dot",
                        21,
                        "21",
                        "star-square",
                        121,
                        "121",
                        "star-square-open",
                        221,
                        "221",
                        "star-square-dot",
                        321,
                        "321",
                        "star-square-open-dot",
                        22,
                        "22",
                        "star-diamond",
                        122,
                        "122",
                        "star-diamond-open",
                        222,
                        "222",
                        "star-diamond-dot",
                        322,
                        "322",
                        "star-diamond-open-dot",
                        23,
                        "23",
                        "diamond-tall",
                        123,
                        "123",
                        "diamond-tall-open",
                        223,
                        "223",
                        "diamond-tall-dot",
                        323,
                        "323",
                        "diamond-tall-open-dot",
                        24,
                        "24",
                        "diamond-wide",
                        124,
                        "124",
                        "diamond-wide-open",
                        224,
                        "224",
                        "diamond-wide-dot",
                        324,
                        "324",
                        "diamond-wide-open-dot",
                        25,
                        "25",
                        "hourglass",
                        125,
                        "125",
                        "hourglass-open",
                        26,
                        "26",
                        "bowtie",
                        126,
                        "126",
                        "bowtie-open",
                        27,
                        "27",
                        "circle-cross",
                        127,
                        "127",
                        "circle-cross-open",
                        28,
                        "28",
                        "circle-x",
                        128,
                        "128",
                        "circle-x-open",
                        29,
                        "29",
                        "square-cross",
                        129,
                        "129",
                        "square-cross-open",
                        30,
                        "30",
                        "square-x",
                        130,
                        "130",
                        "square-x-open",
                        31,
                        "31",
                        "diamond-cross",
                        131,
                        "131",
                        "diamond-cross-open",
                        32,
                        "32",
                        "diamond-x",
                        132,
                        "132",
                        "diamond-x-open",
                        33,
                        "33",
                        "cross-thin",
                        133,
                        "133",
                        "cross-thin-open",
                        34,
                        "34",
                        "x-thin",
                        134,
                        "134",
                        "x-thin-open",
                        35,
                        "35",
                        "asterisk",
                        135,
                        "135",
                        "asterisk-open",
                        36,
                        "36",
                        "hash",
                        136,
                        "136",
                        "hash-open",
                        236,
                        "236",
                        "hash-dot",
                        336,
                        "336",
                        "hash-open-dot",
                        37,
                        "37",
                        "y-up",
                        137,
                        "137",
                        "y-up-open",
                        38,
                        "38",
                        "y-down",
                        138,
                        "138",
                        "y-down-open",
                        39,
                        "39",
                        "y-left",
                        139,
                        "139",
                        "y-left-open",
                        40,
                        "40",
                        "y-right",
                        140,
                        "140",
                        "y-right-open",
                        41,
                        "41",
                        "line-ew",
                        141,
                        "141",
                        "line-ew-open",
                        42,
                        "42",
                        "line-ns",
                        142,
                        "142",
                        "line-ns-open",
                        43,
                        "43",
                        "line-ne",
                        143,
                        "143",
                        "line-ne-open",
                        44,
                        "44",
                        "line-nw",
                        144,
                        "144",
                        "line-nw-open",
                        45,
                        "45",
                        "arrow-up",
                        145,
                        "145",
                        "arrow-up-open",
                        46,
                        "46",
                        "arrow-down",
                        146,
                        "146",
                        "arrow-down-open",
                        47,
                        "47",
                        "arrow-left",
                        147,
                        "147",
                        "arrow-left-open",
                        48,
                        "48",
                        "arrow-right",
                        148,
                        "148",
                        "arrow-right-open",
                        49,
                        "49",
                        "arrow-bar-up",
                        149,
                        "149",
                        "arrow-bar-up-open",
                        50,
                        "50",
                        "arrow-bar-down",
                        150,
                        "150",
                        "arrow-bar-down-open",
                        51,
                        "51",
                        "arrow-bar-left",
                        151,
                        "151",
                        "arrow-bar-left-open",
                        52,
                        "52",
                        "arrow-bar-right",
                        152,
                        "152",
                        "arrow-bar-right-open",
                        53,
                        "53",
                        "arrow",
                        153,
                        "153",
                        "arrow-open",
                        54,
                        "54",
                        "arrow-wide",
                        154,
                        "154",
                        "arrow-wide-open"
                      ],
                      "default": "circle"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          0,
                          "0",
                          "circle",
                          100,
                          "100",
                          "circle-open",
                          200,
                          "200",
                          "circle-dot",
                          300,
                          "300",
                          "circle-open-dot",
                          1,
                          "1",
                          "square",
                          101,
                          "101",
                          "square-open",
                          201,
                          "201",
                          "square-dot",
                          301,
                          "301",
                          "square-open-dot",
                          2,
                          "2",
                          "diamond",
                          102,
                          "102",
                          "diamond-open",
                          202,
                          "202",
                          "diamond-dot",
                          302,
                          "302",
                          "diamond-open-dot",
                          3,
                          "3",
                          "cross",
                          103,
                          "103",
                          "cross-open",
                          203,
                          "203",
                          "cross-dot",
                          303,
                          "303",
                          "cross-open-dot",
                          4,
                          "4",
                          "x",
                          104,
                          "104",
                          "x-open",
                          204,
                          "204",
                          "x-dot",
                          304,
                          "304",
                          "x-open-dot",
                          5,
                          "5",
                          "triangle-up",
                          105,
                          "105",
                          "triangle-up-open",
                          205,
                          "205",
                          "triangle-up-dot",
                          305,
                          "305",
                          "triangle-up-open-dot",
                          6,
                          "6",
                          "triangle-down",
                          106,
                          "106",
                          "triangle-down-open",
                          206,
                          "206",
                          "triangle-down-dot",
                          306,
                          "306",
                          "triangle-down-open-dot",
                          7,
                          "7",
                          "triangle-left",
                          107,
                          "107",
                          "triangle-left-open",
                          207,
                          "207",
                          "triangle-left-dot",
                          307,
                          "307",
                          "triangle-left-open-dot",
                          8,
                          "8",
                          "triangle-right",
                          108,
                          "108",
                          "triangle-right-open",
                          208,
                          "208",
                          "triangle-right-dot",
                          308,
                          "308",
                          "triangle-right-open-dot",
                          9,
                          "9",
                          "triangle-ne",
                          109,
                          "109",
                          "triangle-ne-open",
                          209,
                          "209",
                          "triangle-ne-dot",
                          309,
                          "309",
                          "triangle-ne-open-dot",
                          10,
                          "10",
                          "triangle-se",
                          110,
                          "110",
                          "triangle-se-open",
                          210,
                          "210",
                          "triangle-se-dot",
                          310,
                          "310",
                          "triangle-se-open-dot",
                          11,
                          "11",
                          "triangle-sw",
                          111,
                          "111",
                          "triangle-sw-open",
                          211,
                          "211",
                          "triangle-sw-dot",
                          311,
                          "311",
                          "triangle-sw-open-dot",
                          12,
                          "12",
                          "triangle-nw",
                          112,
                          "112",
                          "triangle-nw-open",
                          212,
                          "212",
                          "triangle-nw-dot",
                          312,
                          "312",
                          "triangle-nw-open-dot",
                          13,
                          "13",
                          "pentagon",
                          113,
                          "113",
                          "pentagon-open",
                          213,
                          "213",
                          "pentagon-dot",
                          313,
                          "313",
                          "pentagon-open-dot",
                          14,
                          "14",
                          "hexagon",
                          114,
                          "114",
                          "hexagon-open",
                          214,
                          "214",
                          "hexagon-dot",
                          314,
                          "314",
                          "hexagon-open-dot",
                          15,
                          "15",
                          "hexagon2",
                          115,
                          "115",
                          "hexagon2-open",
                          215,
                          "215",
                          "hexagon2-dot",
                          315,
                          "315",
                          "hexagon2-open-dot",
                          16,
                          "16",
                          "octagon",
                          116,
                          "116",
                          "octagon-open",
                          216,
                          "216",
                          "octagon-dot",
                          316,
                          "316",
                          "octagon-open-dot",
                          17,
                          "17",
                          "star",
                          117,
                          "117",
                          "star-open",
                          217,
                          "217",
                          "star-dot",
                          317,
                          "317",
                          "star-open-dot",
                          18,
                          "18",
                          "hexagram",
                          118,
                          "118",
                          "hexagram-open",
                          218,
                          "218",
                          "hexagram-dot",
                          318,
                          "318",
                          "hexagram-open-dot",
                          19,
                          "19",
                          "star-triangle-up",
                          119,
                          "119",
                          "star-triangle-up-open",
                          219,
                          "219",
                          "star-triangle-up-dot",
                          319,
                          "319",
                          "star-triangle-up-open-dot",
                          20,
                          "20",
                          "star-triangle-down",
                          120,
                          "120",
                          "star-triangle-down-open",
                          220,
                          "220",
                          "star-triangle-down-dot",
                          320,
                          "320",
                          "star-triangle-down-open-dot",
                          21,
                          "21",
                          "star-square",
                          121,
                          "121",
                          "star-square-open",
                          221,
                          "221",
                          "star-square-dot",
                          321,
                          "321",
                          "star-square-open-dot",
                          22,
                          "22",
                          "star-diamond",
                          122,
                          "122",
                          "star-diamond-open",
                          222,
                          "222",
                          "star-diamond-dot",
                          322,
                          "322",
                          "star-diamond-open-dot",
                          23,
                          "23",
                          "diamond-tall",
                          123,
                          "123",
                          "diamond-tall-open",
                          223,
                          "223",
                          "diamond-tall-dot",
                          323,
                          "323",
                          "diamond-tall-open-dot",
                          24,
                          "24",
                          "diamond-wide",
                          124,
                          "124",
                          "diamond-wide-open",
                          224,
                          "224",
                          "diamond-wide-dot",
                          324,
                          "324",
                          "diamond-wide-open-dot",
                          25,
                          "25",
                          "hourglass",
                          125,
                          "125",
                          "hourglass-open",
                          26,
                          "26",
                          "bowtie",
                          126,
                          "126",
                          "bowtie-open",
                          27,
                          "27",
                          "circle-cross",
                          127,
                          "127",
                          "circle-cross-open",
                          28,
                          "28",
                          "circle-x",
                          128,
                          "128",
                          "circle-x-open",
                          29,
                          "29",
                          "square-cross",
                          129,
                          "129",
                          "square-cross-open",
                          30,
                          "30",
                          "square-x",
                          130,
                          "130",
                          "square-x-open",
                          31,
                          "31",
                          "diamond-cross",
                          131,
                          "131",
                          "diamond-cross-open",
                          32,
                          "32",
                          "diamond-x",
                          132,
                          "132",
                          "diamond-x-open",
                          33,
                          "33",
                          "cross-thin",
                          133,
                          "133",
                          "cross-thin-open",
                          34,
                          "34",
                          "x-thin",
                          134,
                          "134",
                          "x-thin-open",
                          35,
                          "35",
                          "asterisk",
                          135,
                          "135",
                          "asterisk-open",
                          36,
                          "36",
                          "hash",
                          136,
                          "136",
                          "hash-open",
                          236,
                          "236",
                          "hash-dot",
                          336,
                          "336",
                          "hash-open-dot",
                          37,
                          "37",
                          "y-up",
                          137,
                          "137",
                          "y-up-open",
                          38,
                          "38",
                          "y-down",
                          138,
                          "138",
                          "y-down-open",
                          39,
                          "39",
                          "y-left",
                          139,
                          "139",
                          "y-left-open",
                          40,
                          "40",
                          "y-right",
                          140,
                          "140",
                          "y-right-open",
                          41,
                          "41",
                          "line-ew",
                          141,
                          "141",
                          "line-ew-open",
                          42,
                          "42",
                          "line-ns",
                          142,
                          "142",
                          "line-ns-open",
                          43,
                          "43",
                          "line-ne",
                          143,
                          "143",
                          "line-ne-open",
                          44,
                          "44",
                          "line-nw",
                          144,
                          "144",
                          "line-nw-open",
                          45,
                          "45",
                          "arrow-up",
                          145,
                          "145",
                          "arrow-up-open",
                          46,
                          "46",
                          "arrow-down",
                          146,
                          "146",
                          "arrow-down-open",
                          47,
                          "47",
                          "arrow-left",
                          147,
                          "147",
                          "arrow-left-open",
                          48,
                          "48",
                          "arrow-right",
                          148,
                          "148",
                          "arrow-right-open",
                          49,
                          "49",
                          "arrow-bar-up",
                          149,
                          "149",
                          "arrow-bar-up-open",
                          50,
                          "50",
                          "arrow-bar-down",
                          150,
                          "150",
                          "arrow-bar-down-open",
                          51,
                          "51",
                          "arrow-bar-left",
                          151,
                          "151",
                          "arrow-bar-left-open",
                          52,
                          "52",
                          "arrow-bar-right",
                          152,
                          "152",
                          "arrow-bar-right-open",
                          53,
                          "53",
                          "arrow",
                          153,
                          "153",
                          "arrow-open",
                          54,
                          "54",
                          "arrow-wide",
                          154,
                          "154",
                          "arrow-wide-open"
                        ],
                        "default": "circle"
                      }
                    ]
                  }
                }
              ]
            },
            "symbolsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `symbol`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "metasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `meta`.",
          "type": "string"
        },
        "mode": {
          "description": "Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover. If there are less than 20 points and the trace is not stacked then the default is *lines+markers*. Otherwise, *lines*.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "oneOf": [
                {
                  "type": "string",
                  "enum": [
                    "none"
                  ]
                },
                {
                  "type": "string",
                  "pattern": "^(lines|markers|text)(\\+(lines|markers|text))*$"
                }
              ]
            }
          ]
        },
        "name": {
          "description": "Sets the trace name. The trace name appears as the legend item and on hover.",
          "type": "string"
        },
        "offsetgroup": {
          "default": "",
          "description": "Set several traces linked to the same position axis or matching axes to the same offsetgroup where bars of the same position coordinate will line up.",
          "type": "string"
        },
        "opacity": {
          "description": "Sets the opacity of the trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0,
              "maximum": 1,
              "default": 1
            }
          ]
        },
        "orientation": {
          "description": "Only relevant in the following cases: 1. when `scattermode` is set to *group*. 2. when `stackgroup` is used, and only the first `orientation` found in the `stackgroup` will be used - including if `visible` is *legendonly* but not if it is `false`. Sets the stacking direction. With *v* (*h*), the y (x) values of subsequent traces are added. Also affects the default value of `fill`.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "v",
                "h"
              ]
            }
          ]
        },
        "selected": {
          "type": "object",
          "properties": {
            "marker": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the marker color of selected points.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "opacity": {
                  "description": "Sets the marker opacity of selected points.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1
                    }
                  ]
                },
                "size": {
                  "description": "Sets the marker size of selected points.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "textfont": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the text font color of selected points.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                }
              },
              "additionalProperties": false
            }
          },
          "additionalProperties": false
        },
        "selectedpoints": {
          "description": "Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect."
        },
        "showlegend": {
          "description": "Determines whether or not an item corresponding to this trace is shown in the legend.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "stackgaps": {
          "description": "Only relevant when `stackgroup` is used, and only the first `stackgaps` found in the `stackgroup` will be used - including if `visible` is *legendonly* but not if it is `false`. Determines how we handle locations at which other traces in this group have data but this one does not. With *infer zero* we insert a zero at these locations. With *interpolate* we linearly interpolate between existing values, and extrapolate a constant beyond the existing values.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "infer zero",
                "interpolate"
              ],
              "default": "infer zero"
            }
          ]
        },
        "stackgroup": {
          "default": "",
          "description": "Set several scatter traces (on the same subplot) to the same stackgroup in order to add their y values (or their x values if `orientation` is *h*). If blank or omitted this trace will not be stacked. Stacking also turns `fill` on by default, using *tonexty* (*tonextx*) if `orientation` is *h* (*v*) and sets the default `mode` to *lines* irrespective of point count. You can only stack on a numeric (linear or log) axis. Traces in a `stackgroup` will only fill to (or be filled to) other traces in the same group. With multiple `stackgroup`s or some traces stacked and some not, if fill-linked traces are not already consecutive, the later ones will be pushed down in the drawing order.",
          "type": "string"
        },
        "stream": {
          "type": "object",
          "properties": {
            "maxpoints": {
              "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 10000,
                  "default": 500
                }
              ]
            },
            "token": {
              "pattern": ".*\\S.*$",
              "description": "The stream id number links a data trace on a plot with a stream. See <https://chart-studio.plotly.com/settings> for more details.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "text": {
          "description": "Sets text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "textfont": {
          "type": "object",
          "properties": {
            "color": {
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "colorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `color`.",
              "type": "string"
            },
            "family": {
              "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
              "oneOf": [
                {
                  "pattern": ".*\\S.*$",
                  "type": "string"
                },
                {
                  "type": "array",
                  "items": {
                    "pattern": ".*\\S.*$",
                    "type": "string"
                  }
                },
                {
                  "$ref": "#/$defs/query-string"
                }
              ]
            },
            "familysrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `family`.",
              "type": "string"
            },
            "lineposition": {
              "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "oneOf": [
                          {
                            "type": "string",
                            "enum": [
                              "none"
                            ]
                          },
                          {
                            "type": "string",
                            "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                          }
                        ],
                        "default": "none"
                      }
                    ]
                  }
                }
              ]
            },
            "linepositionsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.",
              "type": "string"
            },
            "shadow": {
              "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
              "oneOf": [
                {
                  "default": "none",
                  "type": "string"
                },
                {
                  "type": "array",
                  "items": {
                    "default": "none",
                    "type": "string"
                  }
                }
              ]
            },
            "shadowsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `shadow`.",
              "type": "string"
            },
            "size": {
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 1
                      }
                    ]
                  }
                }
              ]
            },
            "sizesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `size`.",
              "type": "string"
            },
            "style": {
              "description": "Sets whether a font should be styled with a normal or italic face from its family.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "italic"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "stylesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `style`.",
              "type": "string"
            },
            "textcase": {
              "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "word caps",
                          "upper",
                          "lower"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "textcasesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `textcase`.",
              "type": "string"
            },
            "variant": {
              "description": "Sets the variant of the font.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "small-caps",
                          "all-small-caps",
                          "all-petite-caps",
                          "petite-caps",
                          "unicase"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "variantsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `variant`.",
              "type": "string"
            },
            "weight": {
              "description": "Sets the weight (or boldness) of the font.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 1000,
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "weightsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `weight`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "textposition": {
          "description": "Sets the positions of the `text` elements with respects to the (x,y) coordinates.",
          "oneOf": [
            {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "top left",
                    "top center",
                    "top right",
                    "middle left",
                    "middle center",
                    "middle right",
                    "bottom left",
                    "bottom center",
                    "bottom right"
                  ],
                  "default": "middle center"
                }
              ]
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "enum": [
                      "top left",
                      "top center",
                      "top right",
                      "middle left",
                      "middle center",
                      "middle right",
                      "bottom left",
                      "bottom center",
                      "bottom right"
                    ],
                    "default": "middle center"
                  }
                ]
              }
            }
          ]
        },
        "textpositionsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `textposition`.",
          "type": "string"
        },
        "textsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `text`.",
          "type": "string"
        },
        "texttemplate": {
          "description": "Template string used for rendering the information text that appear on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". <https://github.com/d3/d3-format/tree/v1.4.5#d3-format> for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format> for details on the date formatting syntax. Every attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. ",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "texttemplatesrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.",
          "type": "string"
        },
        "uid": {
          "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.",
          "type": "string"
        },
        "uirevision": {
          "description": "Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves."
        },
        "unselected": {
          "type": "object",
          "properties": {
            "marker": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the marker color of unselected points, applied only when a selection exists.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "opacity": {
                  "description": "Sets the marker opacity of unselected points, applied only when a selection exists.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1
                    }
                  ]
                },
                "size": {
                  "description": "Sets the marker size of unselected points, applied only when a selection exists.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "textfont": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the text font color of unselected points, applied only when a selection exists.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                }
              },
              "additionalProperties": false
            }
          },
          "additionalProperties": false
        },
        "visible": {
          "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                true,
                false,
                "legendonly"
              ],
              "default": true
            }
          ]
        },
        "x": {
          "description": "Sets the x coordinates.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "x0": {
          "default": 0,
          "description": "Alternate to `x`. Builds a linear space of x coordinates. Use with `dx` where `x0` is the starting coordinate and `dx` the step."
        },
        "xaxis": {
          "description": "Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "x",
              "pattern": "^x([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "xcalendar": {
          "description": "Sets the calendar system to use with `x` date data.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "chinese",
                "coptic",
                "discworld",
                "ethiopian",
                "gregorian",
                "hebrew",
                "islamic",
                "jalali",
                "julian",
                "mayan",
                "nanakshahi",
                "nepali",
                "persian",
                "taiwan",
                "thai",
                "ummalqura"
              ],
              "default": "gregorian"
            }
          ]
        },
        "xhoverformat": {
          "default": "",
          "description": "Sets the hover text formatting rulefor `x`  using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.",
          "type": "string"
        },
        "xperiod": {
          "default": 0,
          "description": "Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M<n>* on the x axis. Special values in the form of *M<n>* could be used to declare the number of months. In this case `n` must be a positive integer."
        },
        "xperiod0": {
          "description": "Only relevant when the axis `type` is *date*. Sets the base for period positioning in milliseconds or date string on the x0 axis. When `x0period` is round number of weeks, the `x0period0` by default would be on a Sunday i.e. 2000-01-02, otherwise it would be at 2000-01-01."
        },
        "xperiodalignment": {
          "description": "Only relevant when the axis `type` is *date*. Sets the alignment of data points on the x axis.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "start",
                "middle",
                "end"
              ],
              "default": "middle"
            }
          ]
        },
        "xsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `x`.",
          "type": "string"
        },
        "y": {
          "description": "Sets the y coordinates.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "y0": {
          "default": 0,
          "description": "Alternate to `y`. Builds a linear space of y coordinates. Use with `dy` where `y0` is the starting coordinate and `dy` the step."
        },
        "yaxis": {
          "description": "Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "y",
              "pattern": "^y([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "ycalendar": {
          "description": "Sets the calendar system to use with `y` date data.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "chinese",
                "coptic",
                "discworld",
                "ethiopian",
                "gregorian",
                "hebrew",
                "islamic",
                "jalali",
                "julian",
                "mayan",
                "nanakshahi",
                "nepali",
                "persian",
                "taiwan",
                "thai",
                "ummalqura"
              ],
              "default": "gregorian"
            }
          ]
        },
        "yhoverformat": {
          "default": "",
          "description": "Sets the hover text formatting rulefor `y`  using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.",
          "type": "string"
        },
        "yperiod": {
          "default": 0,
          "description": "Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M<n>* on the y axis. Special values in the form of *M<n>* could be used to declare the number of months. In this case `n` must be a positive integer."
        },
        "yperiod0": {
          "description": "Only relevant when the axis `type` is *date*. Sets the base for period positioning in milliseconds or date string on the y0 axis. When `y0period` is round number of weeks, the `y0period0` by default would be on a Sunday i.e. 2000-01-02, otherwise it would be at 2000-01-01."
        },
        "yperiodalignment": {
          "description": "Only relevant when the axis `type` is *date*. Sets the alignment of data points on the y axis.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "start",
                "middle",
                "end"
              ],
              "default": "middle"
            }
          ]
        },
        "ysrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `y`.",
          "type": "string"
        },
        "zorder": {
          "description": "Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "integer",
              "default": 0
            }
          ]
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false
    },
    "Scatter3d": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "$id": "https://visivo.io/trace-properties/schema",
      "description": "A schema to validate plotly trace properties",
      "type": "object",
      "properties": {
        "type": {
          "const": "scatter3d"
        },
        "connectgaps": {
          "description": "Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": false
            }
          ]
        },
        "customdata": {
          "description": "Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "customdatasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `customdata`.",
          "type": "string"
        },
        "error_x": {
          "type": "object",
          "properties": {
            "array": {
              "description": "Sets the data corresponding the length of each error bar. Values are plotted relative to the underlying data.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  }
                }
              ]
            },
            "arrayminus": {
              "description": "Sets the data corresponding the length of each error bar in the bottom (left) direction for vertical (horizontal) bars Values are plotted relative to the underlying data.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  }
                }
              ]
            },
            "arrayminussrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `arrayminus`.",
              "type": "string"
            },
            "arraysrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `array`.",
              "type": "string"
            },
            "color": {
              "description": "Sets the stroke color of the error bars.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "copy_zstyle": {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean"
                }
              ]
            },
            "symmetric": {
              "description": "Determines whether or not the error bars have the same length in both direction (top/bottom for vertical bars, left/right for horizontal bars.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean"
                }
              ]
            },
            "thickness": {
              "description": "Sets the thickness (in px) of the error bars.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 2
                }
              ]
            },
            "traceref": {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "tracerefminus": {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "type": {
              "description": "Determines the rule used to generate the error bars. If *constant`, the bar lengths are of a constant value. Set this constant in `value`. If *percent*, the bar lengths correspond to a percentage of underlying data. Set this percentage in `value`. If *sqrt*, the bar lengths correspond to the square of the underlying data. If *data*, the bar lengths are set with data set `array`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "percent",
                    "constant",
                    "sqrt",
                    "data"
                  ]
                }
              ]
            },
            "value": {
              "description": "Sets the value of either the percentage (if `type` is set to *percent*) or the constant (if `type` is set to *constant*) corresponding to the lengths of the error bars.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 10
                }
              ]
            },
            "valueminus": {
              "description": "Sets the value of either the percentage (if `type` is set to *percent*) or the constant (if `type` is set to *constant*) corresponding to the lengths of the error bars in the bottom (left) direction for vertical (horizontal) bars",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 10
                }
              ]
            },
            "visible": {
              "description": "Determines whether or not this set of error bars is visible.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean"
                }
              ]
            },
            "width": {
              "description": "Sets the width (in px) of the cross-bar at both ends of the error bars.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "error_y": {
          "type": "object",
          "properties": {
            "array": {
              "description": "Sets the data corresponding the length of each error bar. Values are plotted relative to the underlying data.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  }
                }
              ]
            },
            "arrayminus": {
              "description": "Sets the data corresponding the length of each error bar in the bottom (left) direction for vertical (horizontal) bars Values are plotted relative to the underlying data.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  }
                }
              ]
            },
            "arrayminussrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `arrayminus`.",
              "type": "string"
            },
            "arraysrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `array`.",
              "type": "string"
            },
            "color": {
              "description": "Sets the stroke color of the error bars.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "copy_zstyle": {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean"
                }
              ]
            },
            "symmetric": {
              "description": "Determines whether or not the error bars have the same length in both direction (top/bottom for vertical bars, left/right for horizontal bars.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean"
                }
              ]
            },
            "thickness": {
              "description": "Sets the thickness (in px) of the error bars.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 2
                }
              ]
            },
            "traceref": {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "tracerefminus": {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "type": {
              "description": "Determines the rule used to generate the error bars. If *constant`, the bar lengths are of a constant value. Set this constant in `value`. If *percent*, the bar lengths correspond to a percentage of underlying data. Set this percentage in `value`. If *sqrt*, the bar lengths correspond to the square of the underlying data. If *data*, the bar lengths are set with data set `array`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "percent",
                    "constant",
                    "sqrt",
                    "data"
                  ]
                }
              ]
            },
            "value": {
              "description": "Sets the value of either the percentage (if `type` is set to *percent*) or the constant (if `type` is set to *constant*) corresponding to the lengths of the error bars.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 10
                }
              ]
            },
            "valueminus": {
              "description": "Sets the value of either the percentage (if `type` is set to *percent*) or the constant (if `type` is set to *constant*) corresponding to the lengths of the error bars in the bottom (left) direction for vertical (horizontal) bars",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 10
                }
              ]
            },
            "visible": {
              "description": "Determines whether or not this set of error bars is visible.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean"
                }
              ]
            },
            "width": {
              "description": "Sets the width (in px) of the cross-bar at both ends of the error bars.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "error_z": {
          "type": "object",
          "properties": {
            "array": {
              "description": "Sets the data corresponding the length of each error bar. Values are plotted relative to the underlying data.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  }
                }
              ]
            },
            "arrayminus": {
              "description": "Sets the data corresponding the length of each error bar in the bottom (left) direction for vertical (horizontal) bars Values are plotted relative to the underlying data.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  }
                }
              ]
            },
            "arrayminussrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `arrayminus`.",
              "type": "string"
            },
            "arraysrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `array`.",
              "type": "string"
            },
            "color": {
              "description": "Sets the stroke color of the error bars.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "symmetric": {
              "description": "Determines whether or not the error bars have the same length in both direction (top/bottom for vertical bars, left/right for horizontal bars.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean"
                }
              ]
            },
            "thickness": {
              "description": "Sets the thickness (in px) of the error bars.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 2
                }
              ]
            },
            "traceref": {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "tracerefminus": {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "type": {
              "description": "Determines the rule used to generate the error bars. If *constant`, the bar lengths are of a constant value. Set this constant in `value`. If *percent*, the bar lengths correspond to a percentage of underlying data. Set this percentage in `value`. If *sqrt*, the bar lengths correspond to the square of the underlying data. If *data*, the bar lengths are set with data set `array`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "percent",
                    "constant",
                    "sqrt",
                    "data"
                  ]
                }
              ]
            },
            "value": {
              "description": "Sets the value of either the percentage (if `type` is set to *percent*) or the constant (if `type` is set to *constant*) corresponding to the lengths of the error bars.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 10
                }
              ]
            },
            "valueminus": {
              "description": "Sets the value of either the percentage (if `type` is set to *percent*) or the constant (if `type` is set to *constant*) corresponding to the lengths of the error bars in the bottom (left) direction for vertical (horizontal) bars",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 10
                }
              ]
            },
            "visible": {
              "description": "Determines whether or not this set of error bars is visible.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean"
                }
              ]
            },
            "width": {
              "description": "Sets the width (in px) of the cross-bar at both ends of the error bars.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "hoverinfo": {
          "description": "Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired.",
          "oneOf": [
            {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "oneOf": [
                    {
                      "type": "string",
                      "enum": [
                        "all",
                        "none",
                        "skip"
                      ]
                    },
                    {
                      "type": "string",
                      "pattern": "^(x|y|z|text|name)(\\+(x|y|z|text|name))*$"
                    }
                  ],
                  "default": "all"
                }
              ]
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "oneOf": [
                      {
                        "type": "string",
                        "enum": [
                          "all",
                          "none",
                          "skip"
                        ]
                      },
                      {
                        "type": "string",
                        "pattern": "^(x|y|z|text|name)(\\+(x|y|z|text|name))*$"
                      }
                    ],
                    "default": "all"
                  }
                ]
              }
            }
          ]
        },
        "hoverinfosrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.",
          "type": "string"
        },
        "hoverlabel": {
          "type": "object",
          "properties": {
            "align": {
              "description": "Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "left",
                        "right",
                        "auto"
                      ],
                      "default": "auto"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "left",
                          "right",
                          "auto"
                        ],
                        "default": "auto"
                      }
                    ]
                  }
                }
              ]
            },
            "alignsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `align`.",
              "type": "string"
            },
            "bgcolor": {
              "description": "Sets the background color of the hover labels for this trace",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "bgcolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.",
              "type": "string"
            },
            "bordercolor": {
              "description": "Sets the border color of the hover labels for this trace.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "bordercolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.",
              "type": "string"
            },
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "colorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `color`.",
                  "type": "string"
                },
                "family": {
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "oneOf": [
                    {
                      "pattern": ".*\\S.*$",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "pattern": ".*\\S.*$",
                        "type": "string"
                      }
                    },
                    {
                      "$ref": "#/$defs/query-string"
                    }
                  ]
                },
                "familysrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `family`.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "oneOf": [
                              {
                                "type": "string",
                                "enum": [
                                  "none"
                                ]
                              },
                              {
                                "type": "string",
                                "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                              }
                            ],
                            "default": "none"
                          }
                        ]
                      }
                    }
                  ]
                },
                "linepositionsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.",
                  "type": "string"
                },
                "shadow": {
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "oneOf": [
                    {
                      "default": "none",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "default": "none",
                        "type": "string"
                      }
                    }
                  ]
                },
                "shadowsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `shadow`.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 1
                          }
                        ]
                      }
                    }
                  ]
                },
                "sizesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `size`.",
                  "type": "string"
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "italic"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "stylesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `style`.",
                  "type": "string"
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "word caps",
                              "upper",
                              "lower"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "textcasesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `textcase`.",
                  "type": "string"
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "small-caps",
                              "all-small-caps",
                              "all-petite-caps",
                              "petite-caps",
                              "unicase"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "variantsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `variant`.",
                  "type": "string"
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 1000,
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "weightsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `weight`.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "namelength": {
              "description": "Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": -1,
                      "default": 15
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "integer",
                        "minimum": -1,
                        "default": 15
                      }
                    ]
                  }
                }
              ]
            },
            "namelengthsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `namelength`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "hovertemplate": {
          "description": "Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". <https://github.com/d3/d3-format/tree/v1.4.5#d3-format> for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format> for details on the date formatting syntax. The variables available in `hovertemplate` are the ones emitted as event data described at this link <https://plotly.com/javascript/plotlyjs-events/#event-data>. Additionally, every attributes that can be specified per-point (the ones that are `arrayOk: true`) are available.  Anything contained in tag `<extra>` is displayed in the secondary box, for example \"<extra>{fullData.name}</extra>\". To hide the secondary box completely, use an empty tag `<extra></extra>`.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "hovertemplatesrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.",
          "type": "string"
        },
        "hovertext": {
          "description": "Sets text elements associated with each (x,y,z) triplet. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y,z) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "hovertextsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.",
          "type": "string"
        },
        "ids": {
          "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "idssrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `ids`.",
          "type": "string"
        },
        "legend": {
          "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "legend",
              "pattern": "^legend([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "legendgroup": {
          "default": "",
          "description": "Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items.",
          "type": "string"
        },
        "legendgrouptitle": {
          "type": "object",
          "properties": {
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "family": {
                  "pattern": ".*\\S.*$",
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                "shadow": {
                  "default": "none",
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "text": {
              "default": "",
              "description": "Sets the title of the legend group.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "legendrank": {
          "description": "Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": 1000
            }
          ]
        },
        "legendwidth": {
          "description": "Sets the width (in px or fraction) of the legend for this trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0
            }
          ]
        },
        "line": {
          "type": "object",
          "properties": {
            "autocolorscale": {
              "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `line.colorscale`. Has an effect only if in `line.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": true
                }
              ]
            },
            "cauto": {
              "description": "Determines whether or not the color domain is computed with respect to the input data (here in `line.color`) or the bounds set in `line.cmin` and `line.cmax` Has an effect only if in `line.color` is set to a numerical array. Defaults to `false` when `line.cmin` and `line.cmax` are set by the user.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": true
                }
              ]
            },
            "cmax": {
              "description": "Sets the upper bound of the color domain. Has an effect only if in `line.color` is set to a numerical array. Value should have the same units as in `line.color` and if set, `line.cmin` must be set as well.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": null
                }
              ]
            },
            "cmid": {
              "description": "Sets the mid-point of the color domain by scaling `line.cmin` and/or `line.cmax` to be equidistant to this point. Has an effect only if in `line.color` is set to a numerical array. Value should have the same units as in `line.color`. Has no effect when `line.cauto` is `false`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": null
                }
              ]
            },
            "cmin": {
              "description": "Sets the lower bound of the color domain. Has an effect only if in `line.color` is set to a numerical array. Value should have the same units as in `line.color` and if set, `line.cmax` must be set as well.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": null
                }
              ]
            },
            "color": {
              "description": "Sets the line color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `line.cmin` and `line.cmax` if set.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "coloraxis": {
              "description": "Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "string",
                  "default": null,
                  "pattern": "/^coloraxis([2-9]|[1-9][0-9]+)?$/"
                }
              ]
            },
            "colorbar": {
              "type": "object",
              "properties": {
                "bgcolor": {
                  "description": "Sets the color of padded area.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "bordercolor": {
                  "description": "Sets the axis line color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "borderwidth": {
                  "description": "Sets the width (in px) or the border enclosing this color bar.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 0
                    }
                  ]
                },
                "dtick": {
                  "description": "Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L<f>*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M<n>* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48*"
                },
                "exponentformat": {
                  "description": "Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "none",
                        "e",
                        "E",
                        "power",
                        "SI",
                        "B"
                      ],
                      "default": "B"
                    }
                  ]
                },
                "labelalias": {
                  "default": false,
                  "description": "Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax."
                },
                "len": {
                  "description": "Sets the length of the color bar This measure excludes the padding of both ends. That is, the color bar length is this length minus the padding on both ends.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "lenmode": {
                  "description": "Determines whether this color bar's length (i.e. the measure in the color variation direction) is set in units of plot *fraction* or in *pixels. Use `len` to set the value.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "fraction",
                        "pixels"
                      ],
                      "default": "fraction"
                    }
                  ]
                },
                "minexponent": {
                  "description": "Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 3
                    }
                  ]
                },
                "nticks": {
                  "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 0,
                      "default": 0
                    }
                  ]
                },
                "orientation": {
                  "description": "Sets the orientation of the colorbar.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "h",
                        "v"
                      ],
                      "default": "v"
                    }
                  ]
                },
                "outlinecolor": {
                  "description": "Sets the axis line color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "outlinewidth": {
                  "description": "Sets the width (in px) of the axis line.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "separatethousands": {
                  "description": "If \"true\", even 4-digit integers are separated",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": false
                    }
                  ]
                },
                "showexponent": {
                  "description": "If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "showticklabels": {
                  "description": "Determines whether or not the tick labels are drawn.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                },
                "showtickprefix": {
                  "description": "If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "showticksuffix": {
                  "description": "Same as `showtickprefix` but for tick suffixes.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "thickness": {
                  "description": "Sets the thickness of the color bar This measure excludes the size of the padding, ticks and labels.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 30
                    }
                  ]
                },
                "thicknessmode": {
                  "description": "Determines whether this color bar's thickness (i.e. the measure in the constant color direction) is set in units of plot *fraction* or in *pixels*. Use `thickness` to set the value.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "fraction",
                        "pixels"
                      ],
                      "default": "pixels"
                    }
                  ]
                },
                "tick0": {
                  "description": "Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L<f>* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears."
                },
                "tickangle": {
                  "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": -180,
                      "maximum": 180,
                      "default": "auto"
                    }
                  ]
                },
                "tickcolor": {
                  "description": "Sets the tick color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "tickfont": {
                  "type": "object",
                  "properties": {
                    "color": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    "family": {
                      "pattern": ".*\\S.*$",
                      "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                      "type": "string"
                    },
                    "lineposition": {
                      "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    "shadow": {
                      "default": "none",
                      "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                      "type": "string"
                    },
                    "size": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    "style": {
                      "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "textcase": {
                      "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "variant": {
                      "description": "Sets the variant of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "weight": {
                      "description": "Sets the weight (or boldness) of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    }
                  },
                  "additionalProperties": false
                },
                "tickformat": {
                  "default": "",
                  "description": "Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*",
                  "type": "string"
                },
                "tickformatstops": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "dtickrange": {
                        "description": "range [*min*, *max*], where *min*, *max* - dtick values which describe some zoom level, it is possible to omit *min* or *max* value by passing *null*",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "array",
                            "items": {},
                            "minItems": 2,
                            "maxItems": 2
                          }
                        ]
                      },
                      "enabled": {
                        "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "boolean",
                            "default": true
                          }
                        ]
                      },
                      "name": {
                        "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.",
                        "type": "string"
                      },
                      "templateitemname": {
                        "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.",
                        "type": "string"
                      },
                      "value": {
                        "default": "",
                        "description": "string - dtickformat for described zoom level, the same as *tickformat*",
                        "type": "string"
                      }
                    },
                    "additionalProperties": false
                  },
                  "minItems": 1
                },
                "ticklabeloverflow": {
                  "description": "Determines how we handle tick labels that would overflow either the graph div or the domain of the axis. The default value for inside tick labels is *hide past domain*. In other cases the default is *hide past div*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "allow",
                        "hide past div",
                        "hide past domain"
                      ]
                    }
                  ]
                },
                "ticklabelposition": {
                  "description": "Determines where tick labels are drawn relative to the ticks. Left and right options are used when `orientation` is *h*, top and bottom when `orientation` is *v*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "outside",
                        "inside",
                        "outside top",
                        "inside top",
                        "outside left",
                        "inside left",
                        "outside right",
                        "inside right",
                        "outside bottom",
                        "inside bottom"
                      ],
                      "default": "outside"
                    }
                  ]
                },
                "ticklabelstep": {
                  "description": "Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "default": 1
                    }
                  ]
                },
                "ticklen": {
                  "description": "Sets the tick length (in px).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 5
                    }
                  ]
                },
                "tickmode": {
                  "description": "Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "auto",
                        "linear",
                        "array"
                      ]
                    }
                  ]
                },
                "tickprefix": {
                  "default": "",
                  "description": "Sets a tick label prefix.",
                  "type": "string"
                },
                "ticks": {
                  "description": "Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "outside",
                        "inside",
                        ""
                      ],
                      "default": ""
                    }
                  ]
                },
                "ticksuffix": {
                  "default": "",
                  "description": "Sets a tick label suffix.",
                  "type": "string"
                },
                "ticktext": {
                  "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "string"
                          }
                        ]
                      }
                    }
                  ]
                },
                "ticktextsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.",
                  "type": "string"
                },
                "tickvals": {
                  "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "string"
                          }
                        ]
                      }
                    }
                  ]
                },
                "tickvalssrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.",
                  "type": "string"
                },
                "tickwidth": {
                  "description": "Sets the tick width (in px).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "title": {
                  "type": "object",
                  "properties": {
                    "font": {
                      "type": "object",
                      "properties": {
                        "color": {
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "$ref": "#/$defs/color"
                            }
                          ]
                        },
                        "family": {
                          "pattern": ".*\\S.*$",
                          "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                          "type": "string"
                        },
                        "lineposition": {
                          "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "oneOf": [
                                {
                                  "type": "string",
                                  "enum": [
                                    "none"
                                  ]
                                },
                                {
                                  "type": "string",
                                  "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                                }
                              ],
                              "default": "none"
                            }
                          ]
                        },
                        "shadow": {
                          "default": "none",
                          "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                          "type": "string"
                        },
                        "size": {
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "type": "number",
                              "minimum": 1
                            }
                          ]
                        },
                        "style": {
                          "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "italic"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "textcase": {
                          "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "word caps",
                                "upper",
                                "lower"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "variant": {
                          "description": "Sets the variant of the font.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "small-caps",
                                "all-small-caps",
                                "all-petite-caps",
                                "petite-caps",
                                "unicase"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "weight": {
                          "description": "Sets the weight (or boldness) of the font.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "type": "integer",
                              "minimum": 1,
                              "maximum": 1000,
                              "default": "normal"
                            }
                          ]
                        }
                      },
                      "additionalProperties": false
                    },
                    "side": {
                      "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and  defaults to *right* when `orientation` if *h*.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "right",
                            "top",
                            "bottom"
                          ]
                        }
                      ]
                    },
                    "text": {
                      "description": "Sets the title of the color bar.",
                      "type": "string"
                    }
                  },
                  "additionalProperties": false
                },
                "x": {
                  "description": "Sets the x position with respect to `xref` of the color bar (in plot fraction). When `xref` is *paper*, defaults to 1.02 when `orientation` is *v* and 0.5 when `orientation` is *h*. When `xref` is *container*, defaults to *1* when `orientation` is *v* and 0.5 when `orientation` is *h*. Must be between *0* and *1* if `xref` is *container* and between *-2* and *3* if `xref` is *paper*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number"
                    }
                  ]
                },
                "xanchor": {
                  "description": "Sets this color bar's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the color bar. Defaults to *left* when `orientation` is *v* and *center* when `orientation` is *h*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "left",
                        "center",
                        "right"
                      ]
                    }
                  ]
                },
                "xpad": {
                  "description": "Sets the amount of padding (in px) along the x direction.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 10
                    }
                  ]
                },
                "xref": {
                  "description": "Sets the container `x` refers to. *container* spans the entire `width` of the plot. *paper* refers to the width of the plotting area only.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "container",
                        "paper"
                      ],
                      "default": "paper"
                    }
                  ]
                },
                "y": {
                  "description": "Sets the y position with respect to `yref` of the color bar (in plot fraction). When `yref` is *paper*, defaults to 0.5 when `orientation` is *v* and 1.02 when `orientation` is *h*. When `yref` is *container*, defaults to 0.5 when `orientation` is *v* and 1 when `orientation` is *h*. Must be between *0* and *1* if `yref` is *container* and between *-2* and *3* if `yref` is *paper*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number"
                    }
                  ]
                },
                "yanchor": {
                  "description": "Sets this color bar's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the color bar. Defaults to *middle* when `orientation` is *v* and *bottom* when `orientation` is *h*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "top",
                        "middle",
                        "bottom"
                      ]
                    }
                  ]
                },
                "ypad": {
                  "description": "Sets the amount of padding (in px) along the y direction.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 10
                    }
                  ]
                },
                "yref": {
                  "description": "Sets the container `y` refers to. *container* spans the entire `height` of the plot. *paper* refers to the height of the plotting area only.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "container",
                        "paper"
                      ],
                      "default": "paper"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "colorscale": {
              "description": "Sets the colorscale. Has an effect only if in `line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `line.cmin` and `line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/colorscale",
                  "default": null
                }
              ]
            },
            "colorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `color`.",
              "type": "string"
            },
            "dash": {
              "description": "Sets the dash style of the lines.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "dash",
                    "dashdot",
                    "dot",
                    "longdash",
                    "longdashdot",
                    "solid"
                  ],
                  "default": "solid"
                }
              ]
            },
            "reversescale": {
              "description": "Reverses the color mapping if true. Has an effect only if in `line.color` is set to a numerical array. If true, `line.cmin` will correspond to the last color in the array and `line.cmax` will correspond to the first color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            },
            "showscale": {
              "description": "Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `line.color` is set to a numerical array.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            },
            "width": {
              "description": "Sets the line width (in px).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 2
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "marker": {
          "type": "object",
          "properties": {
            "autocolorscale": {
              "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": true
                }
              ]
            },
            "cauto": {
              "description": "Determines whether or not the color domain is computed with respect to the input data (here in `marker.color`) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if in `marker.color` is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": true
                }
              ]
            },
            "cmax": {
              "description": "Sets the upper bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmin` must be set as well.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": null
                }
              ]
            },
            "cmid": {
              "description": "Sets the mid-point of the color domain by scaling `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color`. Has no effect when `marker.cauto` is `false`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": null
                }
              ]
            },
            "cmin": {
              "description": "Sets the lower bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmax` must be set as well.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": null
                }
              ]
            },
            "color": {
              "description": "Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.cmin` and `marker.cmax` if set.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "coloraxis": {
              "description": "Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "string",
                  "default": null,
                  "pattern": "/^coloraxis([2-9]|[1-9][0-9]+)?$/"
                }
              ]
            },
            "colorbar": {
              "type": "object",
              "properties": {
                "bgcolor": {
                  "description": "Sets the color of padded area.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "bordercolor": {
                  "description": "Sets the axis line color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "borderwidth": {
                  "description": "Sets the width (in px) or the border enclosing this color bar.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 0
                    }
                  ]
                },
                "dtick": {
                  "description": "Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L<f>*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M<n>* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48*"
                },
                "exponentformat": {
                  "description": "Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "none",
                        "e",
                        "E",
                        "power",
                        "SI",
                        "B"
                      ],
                      "default": "B"
                    }
                  ]
                },
                "labelalias": {
                  "default": false,
                  "description": "Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax."
                },
                "len": {
                  "description": "Sets the length of the color bar This measure excludes the padding of both ends. That is, the color bar length is this length minus the padding on both ends.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "lenmode": {
                  "description": "Determines whether this color bar's length (i.e. the measure in the color variation direction) is set in units of plot *fraction* or in *pixels. Use `len` to set the value.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "fraction",
                        "pixels"
                      ],
                      "default": "fraction"
                    }
                  ]
                },
                "minexponent": {
                  "description": "Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 3
                    }
                  ]
                },
                "nticks": {
                  "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 0,
                      "default": 0
                    }
                  ]
                },
                "orientation": {
                  "description": "Sets the orientation of the colorbar.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "h",
                        "v"
                      ],
                      "default": "v"
                    }
                  ]
                },
                "outlinecolor": {
                  "description": "Sets the axis line color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "outlinewidth": {
                  "description": "Sets the width (in px) of the axis line.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "separatethousands": {
                  "description": "If \"true\", even 4-digit integers are separated",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": false
                    }
                  ]
                },
                "showexponent": {
                  "description": "If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "showticklabels": {
                  "description": "Determines whether or not the tick labels are drawn.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                },
                "showtickprefix": {
                  "description": "If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "showticksuffix": {
                  "description": "Same as `showtickprefix` but for tick suffixes.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "thickness": {
                  "description": "Sets the thickness of the color bar This measure excludes the size of the padding, ticks and labels.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 30
                    }
                  ]
                },
                "thicknessmode": {
                  "description": "Determines whether this color bar's thickness (i.e. the measure in the constant color direction) is set in units of plot *fraction* or in *pixels*. Use `thickness` to set the value.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "fraction",
                        "pixels"
                      ],
                      "default": "pixels"
                    }
                  ]
                },
                "tick0": {
                  "description": "Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L<f>* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears."
                },
                "tickangle": {
                  "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": -180,
                      "maximum": 180,
                      "default": "auto"
                    }
                  ]
                },
                "tickcolor": {
                  "description": "Sets the tick color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "tickfont": {
                  "type": "object",
                  "properties": {
                    "color": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    "family": {
                      "pattern": ".*\\S.*$",
                      "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                      "type": "string"
                    },
                    "lineposition": {
                      "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    "shadow": {
                      "default": "none",
                      "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                      "type": "string"
                    },
                    "size": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    "style": {
                      "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "textcase": {
                      "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "variant": {
                      "description": "Sets the variant of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "weight": {
                      "description": "Sets the weight (or boldness) of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    }
                  },
                  "additionalProperties": false
                },
                "tickformat": {
                  "default": "",
                  "description": "Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*",
                  "type": "string"
                },
                "tickformatstops": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "dtickrange": {
                        "description": "range [*min*, *max*], where *min*, *max* - dtick values which describe some zoom level, it is possible to omit *min* or *max* value by passing *null*",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "array",
                            "items": {},
                            "minItems": 2,
                            "maxItems": 2
                          }
                        ]
                      },
                      "enabled": {
                        "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "boolean",
                            "default": true
                          }
                        ]
                      },
                      "name": {
                        "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.",
                        "type": "string"
                      },
                      "templateitemname": {
                        "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.",
                        "type": "string"
                      },
                      "value": {
                        "default": "",
                        "description": "string - dtickformat for described zoom level, the same as *tickformat*",
                        "type": "string"
                      }
                    },
                    "additionalProperties": false
                  },
                  "minItems": 1
                },
                "ticklabeloverflow": {
                  "description": "Determines how we handle tick labels that would overflow either the graph div or the domain of the axis. The default value for inside tick labels is *hide past domain*. In other cases the default is *hide past div*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "allow",
                        "hide past div",
                        "hide past domain"
                      ]
                    }
                  ]
                },
                "ticklabelposition": {
                  "description": "Determines where tick labels are drawn relative to the ticks. Left and right options are used when `orientation` is *h*, top and bottom when `orientation` is *v*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "outside",
                        "inside",
                        "outside top",
                        "inside top",
                        "outside left",
                        "inside left",
                        "outside right",
                        "inside right",
                        "outside bottom",
                        "inside bottom"
                      ],
                      "default": "outside"
                    }
                  ]
                },
                "ticklabelstep": {
                  "description": "Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "default": 1
                    }
                  ]
                },
                "ticklen": {
                  "description": "Sets the tick length (in px).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 5
                    }
                  ]
                },
                "tickmode": {
                  "description": "Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "auto",
                        "linear",
                        "array"
                      ]
                    }
                  ]
                },
                "tickprefix": {
                  "default": "",
                  "description": "Sets a tick label prefix.",
                  "type": "string"
                },
                "ticks": {
                  "description": "Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "outside",
                        "inside",
                        ""
                      ],
                      "default": ""
                    }
                  ]
                },
                "ticksuffix": {
                  "default": "",
                  "description": "Sets a tick label suffix.",
                  "type": "string"
                },
                "ticktext": {
                  "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "string"
                          }
                        ]
                      }
                    }
                  ]
                },
                "ticktextsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.",
                  "type": "string"
                },
                "tickvals": {
                  "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "string"
                          }
                        ]
                      }
                    }
                  ]
                },
                "tickvalssrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.",
                  "type": "string"
                },
                "tickwidth": {
                  "description": "Sets the tick width (in px).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "title": {
                  "type": "object",
                  "properties": {
                    "font": {
                      "type": "object",
                      "properties": {
                        "color": {
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "$ref": "#/$defs/color"
                            }
                          ]
                        },
                        "family": {
                          "pattern": ".*\\S.*$",
                          "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                          "type": "string"
                        },
                        "lineposition": {
                          "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "oneOf": [
                                {
                                  "type": "string",
                                  "enum": [
                                    "none"
                                  ]
                                },
                                {
                                  "type": "string",
                                  "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                                }
                              ],
                              "default": "none"
                            }
                          ]
                        },
                        "shadow": {
                          "default": "none",
                          "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                          "type": "string"
                        },
                        "size": {
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "type": "number",
                              "minimum": 1
                            }
                          ]
                        },
                        "style": {
                          "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "italic"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "textcase": {
                          "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "word caps",
                                "upper",
                                "lower"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "variant": {
                          "description": "Sets the variant of the font.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "small-caps",
                                "all-small-caps",
                                "all-petite-caps",
                                "petite-caps",
                                "unicase"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "weight": {
                          "description": "Sets the weight (or boldness) of the font.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "type": "integer",
                              "minimum": 1,
                              "maximum": 1000,
                              "default": "normal"
                            }
                          ]
                        }
                      },
                      "additionalProperties": false
                    },
                    "side": {
                      "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and  defaults to *right* when `orientation` if *h*.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "right",
                            "top",
                            "bottom"
                          ]
                        }
                      ]
                    },
                    "text": {
                      "description": "Sets the title of the color bar.",
                      "type": "string"
                    }
                  },
                  "additionalProperties": false
                },
                "x": {
                  "description": "Sets the x position with respect to `xref` of the color bar (in plot fraction). When `xref` is *paper*, defaults to 1.02 when `orientation` is *v* and 0.5 when `orientation` is *h*. When `xref` is *container*, defaults to *1* when `orientation` is *v* and 0.5 when `orientation` is *h*. Must be between *0* and *1* if `xref` is *container* and between *-2* and *3* if `xref` is *paper*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number"
                    }
                  ]
                },
                "xanchor": {
                  "description": "Sets this color bar's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the color bar. Defaults to *left* when `orientation` is *v* and *center* when `orientation` is *h*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "left",
                        "center",
                        "right"
                      ]
                    }
                  ]
                },
                "xpad": {
                  "description": "Sets the amount of padding (in px) along the x direction.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 10
                    }
                  ]
                },
                "xref": {
                  "description": "Sets the container `x` refers to. *container* spans the entire `width` of the plot. *paper* refers to the width of the plotting area only.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "container",
                        "paper"
                      ],
                      "default": "paper"
                    }
                  ]
                },
                "y": {
                  "description": "Sets the y position with respect to `yref` of the color bar (in plot fraction). When `yref` is *paper*, defaults to 0.5 when `orientation` is *v* and 1.02 when `orientation` is *h*. When `yref` is *container*, defaults to 0.5 when `orientation` is *v* and 1 when `orientation` is *h*. Must be between *0* and *1* if `yref` is *container* and between *-2* and *3* if `yref` is *paper*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number"
                    }
                  ]
                },
                "yanchor": {
                  "description": "Sets this color bar's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the color bar. Defaults to *middle* when `orientation` is *v* and *bottom* when `orientation` is *h*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "top",
                        "middle",
                        "bottom"
                      ]
                    }
                  ]
                },
                "ypad": {
                  "description": "Sets the amount of padding (in px) along the y direction.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 10
                    }
                  ]
                },
                "yref": {
                  "description": "Sets the container `y` refers to. *container* spans the entire `height` of the plot. *paper* refers to the height of the plotting area only.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "container",
                        "paper"
                      ],
                      "default": "paper"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "colorscale": {
              "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/colorscale",
                  "default": null
                }
              ]
            },
            "colorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `color`.",
              "type": "string"
            },
            "line": {
              "type": "object",
              "properties": {
                "autocolorscale": {
                  "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.line.colorscale`. Has an effect only if in `marker.line.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                },
                "cauto": {
                  "description": "Determines whether or not the color domain is computed with respect to the input data (here in `marker.line.color`) or the bounds set in `marker.line.cmin` and `marker.line.cmax` Has an effect only if in `marker.line.color` is set to a numerical array. Defaults to `false` when `marker.line.cmin` and `marker.line.cmax` are set by the user.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                },
                "cmax": {
                  "description": "Sets the upper bound of the color domain. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color` and if set, `marker.line.cmin` must be set as well.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "default": null
                    }
                  ]
                },
                "cmid": {
                  "description": "Sets the mid-point of the color domain by scaling `marker.line.cmin` and/or `marker.line.cmax` to be equidistant to this point. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color`. Has no effect when `marker.line.cauto` is `false`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "default": null
                    }
                  ]
                },
                "cmin": {
                  "description": "Sets the lower bound of the color domain. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color` and if set, `marker.line.cmax` must be set as well.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "default": null
                    }
                  ]
                },
                "color": {
                  "description": "Sets the marker.line color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.line.cmin` and `marker.line.cmax` if set.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "coloraxis": {
                  "description": "Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "string",
                      "default": null,
                      "pattern": "/^coloraxis([2-9]|[1-9][0-9]+)?$/"
                    }
                  ]
                },
                "colorscale": {
                  "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/colorscale",
                      "default": null
                    }
                  ]
                },
                "colorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `color`.",
                  "type": "string"
                },
                "reversescale": {
                  "description": "Reverses the color mapping if true. Has an effect only if in `marker.line.color` is set to a numerical array. If true, `marker.line.cmin` will correspond to the last color in the array and `marker.line.cmax` will correspond to the first color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": false
                    }
                  ]
                },
                "width": {
                  "description": "Sets the width (in px) of the lines bounding the marker points.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "opacity": {
              "description": "Sets the marker opacity. Note that the marker opacity for scatter3d traces must be a scalar value for performance reasons. To set a blending opacity value (i.e. which is not transparent), set *marker.color* to an rgba color and use its alpha channel.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 1
                }
              ]
            },
            "reversescale": {
              "description": "Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            },
            "showscale": {
              "description": "Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            },
            "size": {
              "description": "Sets the marker size (in px).",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 8
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 0,
                        "default": 8
                      }
                    ]
                  }
                }
              ]
            },
            "sizemin": {
              "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the minimum size (in px) of the rendered marker points.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "sizemode": {
              "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the rule for which the data in `size` is converted to pixels.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "diameter",
                    "area"
                  ],
                  "default": "diameter"
                }
              ]
            },
            "sizeref": {
              "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the scale factor used to determine the rendered size of marker points. Use with `sizemin` and `sizemode`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": 1
                }
              ]
            },
            "sizesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `size`.",
              "type": "string"
            },
            "symbol": {
              "description": "Sets the marker symbol type.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "circle",
                        "circle-open",
                        "cross",
                        "diamond",
                        "diamond-open",
                        "square",
                        "square-open",
                        "x"
                      ],
                      "default": "circle"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "circle",
                          "circle-open",
                          "cross",
                          "diamond",
                          "diamond-open",
                          "square",
                          "square-open",
                          "x"
                        ],
                        "default": "circle"
                      }
                    ]
                  }
                }
              ]
            },
            "symbolsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `symbol`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "metasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `meta`.",
          "type": "string"
        },
        "mode": {
          "description": "Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover. If there are less than 20 points and the trace is not stacked then the default is *lines+markers*. Otherwise, *lines*.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "oneOf": [
                {
                  "type": "string",
                  "enum": [
                    "none"
                  ]
                },
                {
                  "type": "string",
                  "pattern": "^(lines|markers|text)(\\+(lines|markers|text))*$"
                }
              ],
              "default": "lines+markers"
            }
          ]
        },
        "name": {
          "description": "Sets the trace name. The trace name appears as the legend item and on hover.",
          "type": "string"
        },
        "opacity": {
          "description": "Sets the opacity of the trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0,
              "maximum": 1,
              "default": 1
            }
          ]
        },
        "projection": {
          "type": "object",
          "properties": {
            "x": {
              "type": "object",
              "properties": {
                "opacity": {
                  "description": "Sets the projection color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1,
                      "default": 1
                    }
                  ]
                },
                "scale": {
                  "description": "Sets the scale factor determining the size of the projection marker points.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 10,
                      "default": 0.6666666666666666
                    }
                  ]
                },
                "show": {
                  "description": "Sets whether or not projections are shown along the x axis.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": false
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "y": {
              "type": "object",
              "properties": {
                "opacity": {
                  "description": "Sets the projection color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1,
                      "default": 1
                    }
                  ]
                },
                "scale": {
                  "description": "Sets the scale factor determining the size of the projection marker points.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 10,
                      "default": 0.6666666666666666
                    }
                  ]
                },
                "show": {
                  "description": "Sets whether or not projections are shown along the y axis.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": false
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "z": {
              "type": "object",
              "properties": {
                "opacity": {
                  "description": "Sets the projection color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1,
                      "default": 1
                    }
                  ]
                },
                "scale": {
                  "description": "Sets the scale factor determining the size of the projection marker points.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 10,
                      "default": 0.6666666666666666
                    }
                  ]
                },
                "show": {
                  "description": "Sets whether or not projections are shown along the z axis.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": false
                    }
                  ]
                }
              },
              "additionalProperties": false
            }
          },
          "additionalProperties": false
        },
        "scene": {
          "description": "Sets a reference between this trace's 3D coordinate system and a 3D scene. If *scene* (the default value), the (x,y,z) coordinates refer to `layout.scene`. If *scene2*, the (x,y,z) coordinates refer to `layout.scene2`, and so on.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "scene",
              "pattern": "^scene([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "showlegend": {
          "description": "Determines whether or not an item corresponding to this trace is shown in the legend.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "stream": {
          "type": "object",
          "properties": {
            "maxpoints": {
              "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 10000,
                  "default": 500
                }
              ]
            },
            "token": {
              "pattern": ".*\\S.*$",
              "description": "The stream id number links a data trace on a plot with a stream. See <https://chart-studio.plotly.com/settings> for more details.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "surfaceaxis": {
          "description": "If *-1*, the scatter points are not fill with a surface If *0*, *1*, *2*, the scatter points are filled with a Delaunay surface about the x, y, z respectively.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                -1,
                0,
                1,
                2
              ],
              "default": -1
            }
          ]
        },
        "surfacecolor": {
          "description": "Sets the surface fill color.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "$ref": "#/$defs/color"
            }
          ]
        },
        "text": {
          "description": "Sets text elements associated with each (x,y,z) triplet. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y,z) coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "textfont": {
          "type": "object",
          "properties": {
            "color": {
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "colorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `color`.",
              "type": "string"
            },
            "family": {
              "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
              "oneOf": [
                {
                  "pattern": ".*\\S.*$",
                  "type": "string"
                },
                {
                  "type": "array",
                  "items": {
                    "pattern": ".*\\S.*$",
                    "type": "string"
                  }
                },
                {
                  "$ref": "#/$defs/query-string"
                }
              ]
            },
            "familysrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `family`.",
              "type": "string"
            },
            "size": {
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 1
                      }
                    ]
                  }
                }
              ]
            },
            "sizesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `size`.",
              "type": "string"
            },
            "style": {
              "description": "Sets whether a font should be styled with a normal or italic face from its family.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "italic"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "stylesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `style`.",
              "type": "string"
            },
            "variant": {
              "description": "Sets the variant of the font.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "small-caps"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "variantsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `variant`.",
              "type": "string"
            },
            "weight": {
              "description": "Sets the weight (or boldness) of the font.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 1000,
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "weightsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `weight`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "textposition": {
          "description": "Sets the positions of the `text` elements with respects to the (x,y) coordinates.",
          "oneOf": [
            {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "top left",
                    "top center",
                    "top right",
                    "middle left",
                    "middle center",
                    "middle right",
                    "bottom left",
                    "bottom center",
                    "bottom right"
                  ],
                  "default": "top center"
                }
              ]
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "enum": [
                      "top left",
                      "top center",
                      "top right",
                      "middle left",
                      "middle center",
                      "middle right",
                      "bottom left",
                      "bottom center",
                      "bottom right"
                    ],
                    "default": "top center"
                  }
                ]
              }
            }
          ]
        },
        "textpositionsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `textposition`.",
          "type": "string"
        },
        "textsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `text`.",
          "type": "string"
        },
        "texttemplate": {
          "description": "Template string used for rendering the information text that appear on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". <https://github.com/d3/d3-format/tree/v1.4.5#d3-format> for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format> for details on the date formatting syntax. Every attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. ",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "texttemplatesrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.",
          "type": "string"
        },
        "uid": {
          "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.",
          "type": "string"
        },
        "uirevision": {
          "description": "Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves."
        },
        "visible": {
          "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                true,
                false,
                "legendonly"
              ],
              "default": true
            }
          ]
        },
        "x": {
          "description": "Sets the x coordinates.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "xcalendar": {
          "description": "Sets the calendar system to use with `x` date data.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "chinese",
                "coptic",
                "discworld",
                "ethiopian",
                "gregorian",
                "hebrew",
                "islamic",
                "jalali",
                "julian",
                "mayan",
                "nanakshahi",
                "nepali",
                "persian",
                "taiwan",
                "thai",
                "ummalqura"
              ],
              "default": "gregorian"
            }
          ]
        },
        "xhoverformat": {
          "default": "",
          "description": "Sets the hover text formatting rulefor `x`  using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.",
          "type": "string"
        },
        "xsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `x`.",
          "type": "string"
        },
        "y": {
          "description": "Sets the y coordinates.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "ycalendar": {
          "description": "Sets the calendar system to use with `y` date data.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "chinese",
                "coptic",
                "discworld",
                "ethiopian",
                "gregorian",
                "hebrew",
                "islamic",
                "jalali",
                "julian",
                "mayan",
                "nanakshahi",
                "nepali",
                "persian",
                "taiwan",
                "thai",
                "ummalqura"
              ],
              "default": "gregorian"
            }
          ]
        },
        "yhoverformat": {
          "default": "",
          "description": "Sets the hover text formatting rulefor `y`  using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.",
          "type": "string"
        },
        "ysrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `y`.",
          "type": "string"
        },
        "z": {
          "description": "Sets the z coordinates.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "zcalendar": {
          "description": "Sets the calendar system to use with `z` date data.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "chinese",
                "coptic",
                "discworld",
                "ethiopian",
                "gregorian",
                "hebrew",
                "islamic",
                "jalali",
                "julian",
                "mayan",
                "nanakshahi",
                "nepali",
                "persian",
                "taiwan",
                "thai",
                "ummalqura"
              ],
              "default": "gregorian"
            }
          ]
        },
        "zhoverformat": {
          "default": "",
          "description": "Sets the hover text formatting rulefor `z`  using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `zaxis.hoverformat`.",
          "type": "string"
        },
        "zsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `z`.",
          "type": "string"
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false
    },
    "Scattercarpet": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "$id": "https://visivo.io/trace-properties/schema",
      "description": "A schema to validate plotly trace properties",
      "type": "object",
      "properties": {
        "type": {
          "const": "scattercarpet"
        },
        "a": {
          "description": "Sets the a-axis coordinates.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "asrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `a`.",
          "type": "string"
        },
        "b": {
          "description": "Sets the b-axis coordinates.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "bsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `b`.",
          "type": "string"
        },
        "carpet": {
          "description": "An identifier for this carpet, so that `scattercarpet` and `contourcarpet` traces can specify a carpet plot on which they lie",
          "type": "string"
        },
        "connectgaps": {
          "description": "Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": false
            }
          ]
        },
        "customdata": {
          "description": "Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "customdatasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `customdata`.",
          "type": "string"
        },
        "fill": {
          "description": "Sets the area to fill with a solid color. Use with `fillcolor` if not *none*. scatterternary has a subset of the options available to scatter. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape. *tonext* fills the space between two traces if one completely encloses the other (eg consecutive contour lines), and behaves like *toself* if there is no trace before it. *tonext* should not be used if one trace does not enclose the other.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "none",
                "toself",
                "tonext"
              ],
              "default": "none"
            }
          ]
        },
        "fillcolor": {
          "description": "Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "$ref": "#/$defs/color"
            }
          ]
        },
        "hoverinfo": {
          "description": "Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired.",
          "oneOf": [
            {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "oneOf": [
                    {
                      "type": "string",
                      "enum": [
                        "all",
                        "none",
                        "skip"
                      ]
                    },
                    {
                      "type": "string",
                      "pattern": "^(a|b|text|name)(\\+(a|b|text|name))*$"
                    }
                  ],
                  "default": "all"
                }
              ]
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "oneOf": [
                      {
                        "type": "string",
                        "enum": [
                          "all",
                          "none",
                          "skip"
                        ]
                      },
                      {
                        "type": "string",
                        "pattern": "^(a|b|text|name)(\\+(a|b|text|name))*$"
                      }
                    ],
                    "default": "all"
                  }
                ]
              }
            }
          ]
        },
        "hoverinfosrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.",
          "type": "string"
        },
        "hoverlabel": {
          "type": "object",
          "properties": {
            "align": {
              "description": "Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "left",
                        "right",
                        "auto"
                      ],
                      "default": "auto"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "left",
                          "right",
                          "auto"
                        ],
                        "default": "auto"
                      }
                    ]
                  }
                }
              ]
            },
            "alignsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `align`.",
              "type": "string"
            },
            "bgcolor": {
              "description": "Sets the background color of the hover labels for this trace",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "bgcolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.",
              "type": "string"
            },
            "bordercolor": {
              "description": "Sets the border color of the hover labels for this trace.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "bordercolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.",
              "type": "string"
            },
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "colorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `color`.",
                  "type": "string"
                },
                "family": {
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "oneOf": [
                    {
                      "pattern": ".*\\S.*$",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "pattern": ".*\\S.*$",
                        "type": "string"
                      }
                    },
                    {
                      "$ref": "#/$defs/query-string"
                    }
                  ]
                },
                "familysrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `family`.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "oneOf": [
                              {
                                "type": "string",
                                "enum": [
                                  "none"
                                ]
                              },
                              {
                                "type": "string",
                                "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                              }
                            ],
                            "default": "none"
                          }
                        ]
                      }
                    }
                  ]
                },
                "linepositionsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.",
                  "type": "string"
                },
                "shadow": {
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "oneOf": [
                    {
                      "default": "none",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "default": "none",
                        "type": "string"
                      }
                    }
                  ]
                },
                "shadowsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `shadow`.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 1
                          }
                        ]
                      }
                    }
                  ]
                },
                "sizesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `size`.",
                  "type": "string"
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "italic"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "stylesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `style`.",
                  "type": "string"
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "word caps",
                              "upper",
                              "lower"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "textcasesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `textcase`.",
                  "type": "string"
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "small-caps",
                              "all-small-caps",
                              "all-petite-caps",
                              "petite-caps",
                              "unicase"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "variantsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `variant`.",
                  "type": "string"
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 1000,
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "weightsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `weight`.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "namelength": {
              "description": "Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": -1,
                      "default": 15
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "integer",
                        "minimum": -1,
                        "default": 15
                      }
                    ]
                  }
                }
              ]
            },
            "namelengthsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `namelength`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "hoveron": {
          "description": "Do the hover effects highlight individual points (markers or line points) or do they highlight filled regions? If the fill is *toself* or *tonext* and there are no markers or text, then the default is *fills*, otherwise it is *points*.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "pattern": "^(points|fills)(\\+(points|fills))*$"
            }
          ]
        },
        "hovertemplate": {
          "description": "Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". <https://github.com/d3/d3-format/tree/v1.4.5#d3-format> for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format> for details on the date formatting syntax. The variables available in `hovertemplate` are the ones emitted as event data described at this link <https://plotly.com/javascript/plotlyjs-events/#event-data>. Additionally, every attributes that can be specified per-point (the ones that are `arrayOk: true`) are available.  Anything contained in tag `<extra>` is displayed in the secondary box, for example \"<extra>{fullData.name}</extra>\". To hide the secondary box completely, use an empty tag `<extra></extra>`.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "hovertemplatesrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.",
          "type": "string"
        },
        "hovertext": {
          "description": "Sets hover text elements associated with each (a,b) point. If a single string, the same string appears over all the data points. If an array of strings, the items are mapped in order to the the data points in (a,b). To be seen, trace `hoverinfo` must contain a *text* flag.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "hovertextsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.",
          "type": "string"
        },
        "ids": {
          "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "idssrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `ids`.",
          "type": "string"
        },
        "legend": {
          "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "legend",
              "pattern": "^legend([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "legendgroup": {
          "default": "",
          "description": "Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items.",
          "type": "string"
        },
        "legendgrouptitle": {
          "type": "object",
          "properties": {
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "family": {
                  "pattern": ".*\\S.*$",
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                "shadow": {
                  "default": "none",
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "text": {
              "default": "",
              "description": "Sets the title of the legend group.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "legendrank": {
          "description": "Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": 1000
            }
          ]
        },
        "legendwidth": {
          "description": "Sets the width (in px or fraction) of the legend for this trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0
            }
          ]
        },
        "line": {
          "type": "object",
          "properties": {
            "backoff": {
              "description": "Sets the line back off from the end point of the nth line segment (in px). This option is useful e.g. to avoid overlap with arrowhead markers. With *auto* the lines would trim before markers if `marker.angleref` is set to *previous*.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": "auto"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 0,
                        "default": "auto"
                      }
                    ]
                  }
                }
              ]
            },
            "backoffsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `backoff`.",
              "type": "string"
            },
            "color": {
              "description": "Sets the line color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "dash": {
              "default": "solid",
              "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).",
              "type": "string"
            },
            "shape": {
              "description": "Determines the line shape. With *spline* the lines are drawn using spline interpolation. The other available values correspond to step-wise line shapes.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "linear",
                    "spline"
                  ],
                  "default": "linear"
                }
              ]
            },
            "smoothing": {
              "description": "Has an effect only if `shape` is set to *spline* Sets the amount of smoothing. *0* corresponds to no smoothing (equivalent to a *linear* shape).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 1.3,
                  "default": 1
                }
              ]
            },
            "width": {
              "description": "Sets the line width (in px).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 2
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "marker": {
          "type": "object",
          "properties": {
            "angle": {
              "description": "Sets the marker angle in respect to `angleref`.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": -180,
                      "maximum": 180,
                      "default": 0
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": -180,
                        "maximum": 180,
                        "default": 0
                      }
                    ]
                  }
                }
              ]
            },
            "angleref": {
              "description": "Sets the reference for marker angle. With *previous*, angle 0 points along the line from the previous point to this one. With *up*, angle 0 points toward the top of the screen.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "previous",
                    "up"
                  ],
                  "default": "up"
                }
              ]
            },
            "anglesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `angle`.",
              "type": "string"
            },
            "autocolorscale": {
              "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": true
                }
              ]
            },
            "cauto": {
              "description": "Determines whether or not the color domain is computed with respect to the input data (here in `marker.color`) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if in `marker.color` is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": true
                }
              ]
            },
            "cmax": {
              "description": "Sets the upper bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmin` must be set as well.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": null
                }
              ]
            },
            "cmid": {
              "description": "Sets the mid-point of the color domain by scaling `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color`. Has no effect when `marker.cauto` is `false`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": null
                }
              ]
            },
            "cmin": {
              "description": "Sets the lower bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmax` must be set as well.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": null
                }
              ]
            },
            "color": {
              "description": "Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.cmin` and `marker.cmax` if set.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "coloraxis": {
              "description": "Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "string",
                  "default": null,
                  "pattern": "/^coloraxis([2-9]|[1-9][0-9]+)?$/"
                }
              ]
            },
            "colorbar": {
              "type": "object",
              "properties": {
                "bgcolor": {
                  "description": "Sets the color of padded area.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "bordercolor": {
                  "description": "Sets the axis line color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "borderwidth": {
                  "description": "Sets the width (in px) or the border enclosing this color bar.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 0
                    }
                  ]
                },
                "dtick": {
                  "description": "Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L<f>*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M<n>* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48*"
                },
                "exponentformat": {
                  "description": "Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "none",
                        "e",
                        "E",
                        "power",
                        "SI",
                        "B"
                      ],
                      "default": "B"
                    }
                  ]
                },
                "labelalias": {
                  "default": false,
                  "description": "Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax."
                },
                "len": {
                  "description": "Sets the length of the color bar This measure excludes the padding of both ends. That is, the color bar length is this length minus the padding on both ends.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "lenmode": {
                  "description": "Determines whether this color bar's length (i.e. the measure in the color variation direction) is set in units of plot *fraction* or in *pixels. Use `len` to set the value.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "fraction",
                        "pixels"
                      ],
                      "default": "fraction"
                    }
                  ]
                },
                "minexponent": {
                  "description": "Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 3
                    }
                  ]
                },
                "nticks": {
                  "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 0,
                      "default": 0
                    }
                  ]
                },
                "orientation": {
                  "description": "Sets the orientation of the colorbar.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "h",
                        "v"
                      ],
                      "default": "v"
                    }
                  ]
                },
                "outlinecolor": {
                  "description": "Sets the axis line color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "outlinewidth": {
                  "description": "Sets the width (in px) of the axis line.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "separatethousands": {
                  "description": "If \"true\", even 4-digit integers are separated",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": false
                    }
                  ]
                },
                "showexponent": {
                  "description": "If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "showticklabels": {
                  "description": "Determines whether or not the tick labels are drawn.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                },
                "showtickprefix": {
                  "description": "If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "showticksuffix": {
                  "description": "Same as `showtickprefix` but for tick suffixes.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "thickness": {
                  "description": "Sets the thickness of the color bar This measure excludes the size of the padding, ticks and labels.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 30
                    }
                  ]
                },
                "thicknessmode": {
                  "description": "Determines whether this color bar's thickness (i.e. the measure in the constant color direction) is set in units of plot *fraction* or in *pixels*. Use `thickness` to set the value.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "fraction",
                        "pixels"
                      ],
                      "default": "pixels"
                    }
                  ]
                },
                "tick0": {
                  "description": "Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L<f>* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears."
                },
                "tickangle": {
                  "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": -180,
                      "maximum": 180,
                      "default": "auto"
                    }
                  ]
                },
                "tickcolor": {
                  "description": "Sets the tick color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "tickfont": {
                  "type": "object",
                  "properties": {
                    "color": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    "family": {
                      "pattern": ".*\\S.*$",
                      "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                      "type": "string"
                    },
                    "lineposition": {
                      "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    "shadow": {
                      "default": "none",
                      "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                      "type": "string"
                    },
                    "size": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    "style": {
                      "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "textcase": {
                      "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "variant": {
                      "description": "Sets the variant of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "weight": {
                      "description": "Sets the weight (or boldness) of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    }
                  },
                  "additionalProperties": false
                },
                "tickformat": {
                  "default": "",
                  "description": "Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*",
                  "type": "string"
                },
                "tickformatstops": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "dtickrange": {
                        "description": "range [*min*, *max*], where *min*, *max* - dtick values which describe some zoom level, it is possible to omit *min* or *max* value by passing *null*",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "array",
                            "items": {},
                            "minItems": 2,
                            "maxItems": 2
                          }
                        ]
                      },
                      "enabled": {
                        "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "boolean",
                            "default": true
                          }
                        ]
                      },
                      "name": {
                        "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.",
                        "type": "string"
                      },
                      "templateitemname": {
                        "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.",
                        "type": "string"
                      },
                      "value": {
                        "default": "",
                        "description": "string - dtickformat for described zoom level, the same as *tickformat*",
                        "type": "string"
                      }
                    },
                    "additionalProperties": false
                  },
                  "minItems": 1
                },
                "ticklabeloverflow": {
                  "description": "Determines how we handle tick labels that would overflow either the graph div or the domain of the axis. The default value for inside tick labels is *hide past domain*. In other cases the default is *hide past div*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "allow",
                        "hide past div",
                        "hide past domain"
                      ]
                    }
                  ]
                },
                "ticklabelposition": {
                  "description": "Determines where tick labels are drawn relative to the ticks. Left and right options are used when `orientation` is *h*, top and bottom when `orientation` is *v*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "outside",
                        "inside",
                        "outside top",
                        "inside top",
                        "outside left",
                        "inside left",
                        "outside right",
                        "inside right",
                        "outside bottom",
                        "inside bottom"
                      ],
                      "default": "outside"
                    }
                  ]
                },
                "ticklabelstep": {
                  "description": "Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "default": 1
                    }
                  ]
                },
                "ticklen": {
                  "description": "Sets the tick length (in px).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 5
                    }
                  ]
                },
                "tickmode": {
                  "description": "Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "auto",
                        "linear",
                        "array"
                      ]
                    }
                  ]
                },
                "tickprefix": {
                  "default": "",
                  "description": "Sets a tick label prefix.",
                  "type": "string"
                },
                "ticks": {
                  "description": "Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "outside",
                        "inside",
                        ""
                      ],
                      "default": ""
                    }
                  ]
                },
                "ticksuffix": {
                  "default": "",
                  "description": "Sets a tick label suffix.",
                  "type": "string"
                },
                "ticktext": {
                  "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "string"
                          }
                        ]
                      }
                    }
                  ]
                },
                "ticktextsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.",
                  "type": "string"
                },
                "tickvals": {
                  "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "string"
                          }
                        ]
                      }
                    }
                  ]
                },
                "tickvalssrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.",
                  "type": "string"
                },
                "tickwidth": {
                  "description": "Sets the tick width (in px).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "title": {
                  "type": "object",
                  "properties": {
                    "font": {
                      "type": "object",
                      "properties": {
                        "color": {
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "$ref": "#/$defs/color"
                            }
                          ]
                        },
                        "family": {
                          "pattern": ".*\\S.*$",
                          "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                          "type": "string"
                        },
                        "lineposition": {
                          "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "oneOf": [
                                {
                                  "type": "string",
                                  "enum": [
                                    "none"
                                  ]
                                },
                                {
                                  "type": "string",
                                  "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                                }
                              ],
                              "default": "none"
                            }
                          ]
                        },
                        "shadow": {
                          "default": "none",
                          "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                          "type": "string"
                        },
                        "size": {
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "type": "number",
                              "minimum": 1
                            }
                          ]
                        },
                        "style": {
                          "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "italic"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "textcase": {
                          "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "word caps",
                                "upper",
                                "lower"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "variant": {
                          "description": "Sets the variant of the font.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "small-caps",
                                "all-small-caps",
                                "all-petite-caps",
                                "petite-caps",
                                "unicase"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "weight": {
                          "description": "Sets the weight (or boldness) of the font.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "type": "integer",
                              "minimum": 1,
                              "maximum": 1000,
                              "default": "normal"
                            }
                          ]
                        }
                      },
                      "additionalProperties": false
                    },
                    "side": {
                      "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and  defaults to *right* when `orientation` if *h*.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "right",
                            "top",
                            "bottom"
                          ]
                        }
                      ]
                    },
                    "text": {
                      "description": "Sets the title of the color bar.",
                      "type": "string"
                    }
                  },
                  "additionalProperties": false
                },
                "x": {
                  "description": "Sets the x position with respect to `xref` of the color bar (in plot fraction). When `xref` is *paper*, defaults to 1.02 when `orientation` is *v* and 0.5 when `orientation` is *h*. When `xref` is *container*, defaults to *1* when `orientation` is *v* and 0.5 when `orientation` is *h*. Must be between *0* and *1* if `xref` is *container* and between *-2* and *3* if `xref` is *paper*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number"
                    }
                  ]
                },
                "xanchor": {
                  "description": "Sets this color bar's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the color bar. Defaults to *left* when `orientation` is *v* and *center* when `orientation` is *h*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "left",
                        "center",
                        "right"
                      ]
                    }
                  ]
                },
                "xpad": {
                  "description": "Sets the amount of padding (in px) along the x direction.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 10
                    }
                  ]
                },
                "xref": {
                  "description": "Sets the container `x` refers to. *container* spans the entire `width` of the plot. *paper* refers to the width of the plotting area only.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "container",
                        "paper"
                      ],
                      "default": "paper"
                    }
                  ]
                },
                "y": {
                  "description": "Sets the y position with respect to `yref` of the color bar (in plot fraction). When `yref` is *paper*, defaults to 0.5 when `orientation` is *v* and 1.02 when `orientation` is *h*. When `yref` is *container*, defaults to 0.5 when `orientation` is *v* and 1 when `orientation` is *h*. Must be between *0* and *1* if `yref` is *container* and between *-2* and *3* if `yref` is *paper*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number"
                    }
                  ]
                },
                "yanchor": {
                  "description": "Sets this color bar's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the color bar. Defaults to *middle* when `orientation` is *v* and *bottom* when `orientation` is *h*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "top",
                        "middle",
                        "bottom"
                      ]
                    }
                  ]
                },
                "ypad": {
                  "description": "Sets the amount of padding (in px) along the y direction.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 10
                    }
                  ]
                },
                "yref": {
                  "description": "Sets the container `y` refers to. *container* spans the entire `height` of the plot. *paper* refers to the height of the plotting area only.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "container",
                        "paper"
                      ],
                      "default": "paper"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "colorscale": {
              "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/colorscale",
                  "default": null
                }
              ]
            },
            "colorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `color`.",
              "type": "string"
            },
            "gradient": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the final color of the gradient fill: the center color for radial, the right for horizontal, or the bottom for vertical.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "colorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `color`.",
                  "type": "string"
                },
                "type": {
                  "description": "Sets the type of gradient used to fill the markers",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "radial",
                            "horizontal",
                            "vertical",
                            "none"
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "radial",
                              "horizontal",
                              "vertical",
                              "none"
                            ],
                            "default": "none"
                          }
                        ]
                      }
                    }
                  ]
                },
                "typesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `type`.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "line": {
              "type": "object",
              "properties": {
                "autocolorscale": {
                  "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.line.colorscale`. Has an effect only if in `marker.line.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                },
                "cauto": {
                  "description": "Determines whether or not the color domain is computed with respect to the input data (here in `marker.line.color`) or the bounds set in `marker.line.cmin` and `marker.line.cmax` Has an effect only if in `marker.line.color` is set to a numerical array. Defaults to `false` when `marker.line.cmin` and `marker.line.cmax` are set by the user.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                },
                "cmax": {
                  "description": "Sets the upper bound of the color domain. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color` and if set, `marker.line.cmin` must be set as well.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "default": null
                    }
                  ]
                },
                "cmid": {
                  "description": "Sets the mid-point of the color domain by scaling `marker.line.cmin` and/or `marker.line.cmax` to be equidistant to this point. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color`. Has no effect when `marker.line.cauto` is `false`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "default": null
                    }
                  ]
                },
                "cmin": {
                  "description": "Sets the lower bound of the color domain. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color` and if set, `marker.line.cmax` must be set as well.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "default": null
                    }
                  ]
                },
                "color": {
                  "description": "Sets the marker.line color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.line.cmin` and `marker.line.cmax` if set.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "coloraxis": {
                  "description": "Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "string",
                      "default": null,
                      "pattern": "/^coloraxis([2-9]|[1-9][0-9]+)?$/"
                    }
                  ]
                },
                "colorscale": {
                  "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/colorscale",
                      "default": null
                    }
                  ]
                },
                "colorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `color`.",
                  "type": "string"
                },
                "reversescale": {
                  "description": "Reverses the color mapping if true. Has an effect only if in `marker.line.color` is set to a numerical array. If true, `marker.line.cmin` will correspond to the last color in the array and `marker.line.cmax` will correspond to the first color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": false
                    }
                  ]
                },
                "width": {
                  "description": "Sets the width (in px) of the lines bounding the marker points.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 0
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 0
                          }
                        ]
                      }
                    }
                  ]
                },
                "widthsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `width`.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "maxdisplayed": {
              "description": "Sets a maximum number of points to be drawn on the graph. *0* corresponds to no limit.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "opacity": {
              "description": "Sets the marker opacity.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 1
                      }
                    ]
                  }
                }
              ]
            },
            "opacitysrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `opacity`.",
              "type": "string"
            },
            "reversescale": {
              "description": "Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            },
            "showscale": {
              "description": "Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            },
            "size": {
              "description": "Sets the marker size (in px).",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 6
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 0,
                        "default": 6
                      }
                    ]
                  }
                }
              ]
            },
            "sizemin": {
              "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the minimum size (in px) of the rendered marker points.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "sizemode": {
              "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the rule for which the data in `size` is converted to pixels.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "diameter",
                    "area"
                  ],
                  "default": "diameter"
                }
              ]
            },
            "sizeref": {
              "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the scale factor used to determine the rendered size of marker points. Use with `sizemin` and `sizemode`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": 1
                }
              ]
            },
            "sizesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `size`.",
              "type": "string"
            },
            "standoff": {
              "description": "Moves the marker away from the data point in the direction of `angle` (in px). This can be useful for example if you have another marker at this location and you want to point an arrowhead marker at it.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 0
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 0,
                        "default": 0
                      }
                    ]
                  }
                }
              ]
            },
            "standoffsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `standoff`.",
              "type": "string"
            },
            "symbol": {
              "description": "Sets the marker symbol type. Adding 100 is equivalent to appending *-open* to a symbol name. Adding 200 is equivalent to appending *-dot* to a symbol name. Adding 300 is equivalent to appending *-open-dot* or *dot-open* to a symbol name.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        0,
                        "0",
                        "circle",
                        100,
                        "100",
                        "circle-open",
                        200,
                        "200",
                        "circle-dot",
                        300,
                        "300",
                        "circle-open-dot",
                        1,
                        "1",
                        "square",
                        101,
                        "101",
                        "square-open",
                        201,
                        "201",
                        "square-dot",
                        301,
                        "301",
                        "square-open-dot",
                        2,
                        "2",
                        "diamond",
                        102,
                        "102",
                        "diamond-open",
                        202,
                        "202",
                        "diamond-dot",
                        302,
                        "302",
                        "diamond-open-dot",
                        3,
                        "3",
                        "cross",
                        103,
                        "103",
                        "cross-open",
                        203,
                        "203",
                        "cross-dot",
                        303,
                        "303",
                        "cross-open-dot",
                        4,
                        "4",
                        "x",
                        104,
                        "104",
                        "x-open",
                        204,
                        "204",
                        "x-dot",
                        304,
                        "304",
                        "x-open-dot",
                        5,
                        "5",
                        "triangle-up",
                        105,
                        "105",
                        "triangle-up-open",
                        205,
                        "205",
                        "triangle-up-dot",
                        305,
                        "305",
                        "triangle-up-open-dot",
                        6,
                        "6",
                        "triangle-down",
                        106,
                        "106",
                        "triangle-down-open",
                        206,
                        "206",
                        "triangle-down-dot",
                        306,
                        "306",
                        "triangle-down-open-dot",
                        7,
                        "7",
                        "triangle-left",
                        107,
                        "107",
                        "triangle-left-open",
                        207,
                        "207",
                        "triangle-left-dot",
                        307,
                        "307",
                        "triangle-left-open-dot",
                        8,
                        "8",
                        "triangle-right",
                        108,
                        "108",
                        "triangle-right-open",
                        208,
                        "208",
                        "triangle-right-dot",
                        308,
                        "308",
                        "triangle-right-open-dot",
                        9,
                        "9",
                        "triangle-ne",
                        109,
                        "109",
                        "triangle-ne-open",
                        209,
                        "209",
                        "triangle-ne-dot",
                        309,
                        "309",
                        "triangle-ne-open-dot",
                        10,
                        "10",
                        "triangle-se",
                        110,
                        "110",
                        "triangle-se-open",
                        210,
                        "210",
                        "triangle-se-dot",
                        310,
                        "310",
                        "triangle-se-open-dot",
                        11,
                        "11",
                        "triangle-sw",
                        111,
                        "111",
                        "triangle-sw-open",
                        211,
                        "211",
                        "triangle-sw-dot",
                        311,
                        "311",
                        "triangle-sw-open-dot",
                        12,
                        "12",
                        "triangle-nw",
                        112,
                        "112",
                        "triangle-nw-open",
                        212,
                        "212",
                        "triangle-nw-dot",
                        312,
                        "312",
                        "triangle-nw-open-dot",
                        13,
                        "13",
                        "pentagon",
                        113,
                        "113",
                        "pentagon-open",
                        213,
                        "213",
                        "pentagon-dot",
                        313,
                        "313",
                        "pentagon-open-dot",
                        14,
                        "14",
                        "hexagon",
                        114,
                        "114",
                        "hexagon-open",
                        214,
                        "214",
                        "hexagon-dot",
                        314,
                        "314",
                        "hexagon-open-dot",
                        15,
                        "15",
                        "hexagon2",
                        115,
                        "115",
                        "hexagon2-open",
                        215,
                        "215",
                        "hexagon2-dot",
                        315,
                        "315",
                        "hexagon2-open-dot",
                        16,
                        "16",
                        "octagon",
                        116,
                        "116",
                        "octagon-open",
                        216,
                        "216",
                        "octagon-dot",
                        316,
                        "316",
                        "octagon-open-dot",
                        17,
                        "17",
                        "star",
                        117,
                        "117",
                        "star-open",
                        217,
                        "217",
                        "star-dot",
                        317,
                        "317",
                        "star-open-dot",
                        18,
                        "18",
                        "hexagram",
                        118,
                        "118",
                        "hexagram-open",
                        218,
                        "218",
                        "hexagram-dot",
                        318,
                        "318",
                        "hexagram-open-dot",
                        19,
                        "19",
                        "star-triangle-up",
                        119,
                        "119",
                        "star-triangle-up-open",
                        219,
                        "219",
                        "star-triangle-up-dot",
                        319,
                        "319",
                        "star-triangle-up-open-dot",
                        20,
                        "20",
                        "star-triangle-down",
                        120,
                        "120",
                        "star-triangle-down-open",
                        220,
                        "220",
                        "star-triangle-down-dot",
                        320,
                        "320",
                        "star-triangle-down-open-dot",
                        21,
                        "21",
                        "star-square",
                        121,
                        "121",
                        "star-square-open",
                        221,
                        "221",
                        "star-square-dot",
                        321,
                        "321",
                        "star-square-open-dot",
                        22,
                        "22",
                        "star-diamond",
                        122,
                        "122",
                        "star-diamond-open",
                        222,
                        "222",
                        "star-diamond-dot",
                        322,
                        "322",
                        "star-diamond-open-dot",
                        23,
                        "23",
                        "diamond-tall",
                        123,
                        "123",
                        "diamond-tall-open",
                        223,
                        "223",
                        "diamond-tall-dot",
                        323,
                        "323",
                        "diamond-tall-open-dot",
                        24,
                        "24",
                        "diamond-wide",
                        124,
                        "124",
                        "diamond-wide-open",
                        224,
                        "224",
                        "diamond-wide-dot",
                        324,
                        "324",
                        "diamond-wide-open-dot",
                        25,
                        "25",
                        "hourglass",
                        125,
                        "125",
                        "hourglass-open",
                        26,
                        "26",
                        "bowtie",
                        126,
                        "126",
                        "bowtie-open",
                        27,
                        "27",
                        "circle-cross",
                        127,
                        "127",
                        "circle-cross-open",
                        28,
                        "28",
                        "circle-x",
                        128,
                        "128",
                        "circle-x-open",
                        29,
                        "29",
                        "square-cross",
                        129,
                        "129",
                        "square-cross-open",
                        30,
                        "30",
                        "square-x",
                        130,
                        "130",
                        "square-x-open",
                        31,
                        "31",
                        "diamond-cross",
                        131,
                        "131",
                        "diamond-cross-open",
                        32,
                        "32",
                        "diamond-x",
                        132,
                        "132",
                        "diamond-x-open",
                        33,
                        "33",
                        "cross-thin",
                        133,
                        "133",
                        "cross-thin-open",
                        34,
                        "34",
                        "x-thin",
                        134,
                        "134",
                        "x-thin-open",
                        35,
                        "35",
                        "asterisk",
                        135,
                        "135",
                        "asterisk-open",
                        36,
                        "36",
                        "hash",
                        136,
                        "136",
                        "hash-open",
                        236,
                        "236",
                        "hash-dot",
                        336,
                        "336",
                        "hash-open-dot",
                        37,
                        "37",
                        "y-up",
                        137,
                        "137",
                        "y-up-open",
                        38,
                        "38",
                        "y-down",
                        138,
                        "138",
                        "y-down-open",
                        39,
                        "39",
                        "y-left",
                        139,
                        "139",
                        "y-left-open",
                        40,
                        "40",
                        "y-right",
                        140,
                        "140",
                        "y-right-open",
                        41,
                        "41",
                        "line-ew",
                        141,
                        "141",
                        "line-ew-open",
                        42,
                        "42",
                        "line-ns",
                        142,
                        "142",
                        "line-ns-open",
                        43,
                        "43",
                        "line-ne",
                        143,
                        "143",
                        "line-ne-open",
                        44,
                        "44",
                        "line-nw",
                        144,
                        "144",
                        "line-nw-open",
                        45,
                        "45",
                        "arrow-up",
                        145,
                        "145",
                        "arrow-up-open",
                        46,
                        "46",
                        "arrow-down",
                        146,
                        "146",
                        "arrow-down-open",
                        47,
                        "47",
                        "arrow-left",
                        147,
                        "147",
                        "arrow-left-open",
                        48,
                        "48",
                        "arrow-right",
                        148,
                        "148",
                        "arrow-right-open",
                        49,
                        "49",
                        "arrow-bar-up",
                        149,
                        "149",
                        "arrow-bar-up-open",
                        50,
                        "50",
                        "arrow-bar-down",
                        150,
                        "150",
                        "arrow-bar-down-open",
                        51,
                        "51",
                        "arrow-bar-left",
                        151,
                        "151",
                        "arrow-bar-left-open",
                        52,
                        "52",
                        "arrow-bar-right",
                        152,
                        "152",
                        "arrow-bar-right-open",
                        53,
                        "53",
                        "arrow",
                        153,
                        "153",
                        "arrow-open",
                        54,
                        "54",
                        "arrow-wide",
                        154,
                        "154",
                        "arrow-wide-open"
                      ],
                      "default": "circle"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          0,
                          "0",
                          "circle",
                          100,
                          "100",
                          "circle-open",
                          200,
                          "200",
                          "circle-dot",
                          300,
                          "300",
                          "circle-open-dot",
                          1,
                          "1",
                          "square",
                          101,
                          "101",
                          "square-open",
                          201,
                          "201",
                          "square-dot",
                          301,
                          "301",
                          "square-open-dot",
                          2,
                          "2",
                          "diamond",
                          102,
                          "102",
                          "diamond-open",
                          202,
                          "202",
                          "diamond-dot",
                          302,
                          "302",
                          "diamond-open-dot",
                          3,
                          "3",
                          "cross",
                          103,
                          "103",
                          "cross-open",
                          203,
                          "203",
                          "cross-dot",
                          303,
                          "303",
                          "cross-open-dot",
                          4,
                          "4",
                          "x",
                          104,
                          "104",
                          "x-open",
                          204,
                          "204",
                          "x-dot",
                          304,
                          "304",
                          "x-open-dot",
                          5,
                          "5",
                          "triangle-up",
                          105,
                          "105",
                          "triangle-up-open",
                          205,
                          "205",
                          "triangle-up-dot",
                          305,
                          "305",
                          "triangle-up-open-dot",
                          6,
                          "6",
                          "triangle-down",
                          106,
                          "106",
                          "triangle-down-open",
                          206,
                          "206",
                          "triangle-down-dot",
                          306,
                          "306",
                          "triangle-down-open-dot",
                          7,
                          "7",
                          "triangle-left",
                          107,
                          "107",
                          "triangle-left-open",
                          207,
                          "207",
                          "triangle-left-dot",
                          307,
                          "307",
                          "triangle-left-open-dot",
                          8,
                          "8",
                          "triangle-right",
                          108,
                          "108",
                          "triangle-right-open",
                          208,
                          "208",
                          "triangle-right-dot",
                          308,
                          "308",
                          "triangle-right-open-dot",
                          9,
                          "9",
                          "triangle-ne",
                          109,
                          "109",
                          "triangle-ne-open",
                          209,
                          "209",
                          "triangle-ne-dot",
                          309,
                          "309",
                          "triangle-ne-open-dot",
                          10,
                          "10",
                          "triangle-se",
                          110,
                          "110",
                          "triangle-se-open",
                          210,
                          "210",
                          "triangle-se-dot",
                          310,
                          "310",
                          "triangle-se-open-dot",
                          11,
                          "11",
                          "triangle-sw",
                          111,
                          "111",
                          "triangle-sw-open",
                          211,
                          "211",
                          "triangle-sw-dot",
                          311,
                          "311",
                          "triangle-sw-open-dot",
                          12,
                          "12",
                          "triangle-nw",
                          112,
                          "112",
                          "triangle-nw-open",
                          212,
                          "212",
                          "triangle-nw-dot",
                          312,
                          "312",
                          "triangle-nw-open-dot",
                          13,
                          "13",
                          "pentagon",
                          113,
                          "113",
                          "pentagon-open",
                          213,
                          "213",
                          "pentagon-dot",
                          313,
                          "313",
                          "pentagon-open-dot",
                          14,
                          "14",
                          "hexagon",
                          114,
                          "114",
                          "hexagon-open",
                          214,
                          "214",
                          "hexagon-dot",
                          314,
                          "314",
                          "hexagon-open-dot",
                          15,
                          "15",
                          "hexagon2",
                          115,
                          "115",
                          "hexagon2-open",
                          215,
                          "215",
                          "hexagon2-dot",
                          315,
                          "315",
                          "hexagon2-open-dot",
                          16,
                          "16",
                          "octagon",
                          116,
                          "116",
                          "octagon-open",
                          216,
                          "216",
                          "octagon-dot",
                          316,
                          "316",
                          "octagon-open-dot",
                          17,
                          "17",
                          "star",
                          117,
                          "117",
                          "star-open",
                          217,
                          "217",
                          "star-dot",
                          317,
                          "317",
                          "star-open-dot",
                          18,
                          "18",
                          "hexagram",
                          118,
                          "118",
                          "hexagram-open",
                          218,
                          "218",
                          "hexagram-dot",
                          318,
                          "318",
                          "hexagram-open-dot",
                          19,
                          "19",
                          "star-triangle-up",
                          119,
                          "119",
                          "star-triangle-up-open",
                          219,
                          "219",
                          "star-triangle-up-dot",
                          319,
                          "319",
                          "star-triangle-up-open-dot",
                          20,
                          "20",
                          "star-triangle-down",
                          120,
                          "120",
                          "star-triangle-down-open",
                          220,
                          "220",
                          "star-triangle-down-dot",
                          320,
                          "320",
                          "star-triangle-down-open-dot",
                          21,
                          "21",
                          "star-square",
                          121,
                          "121",
                          "star-square-open",
                          221,
                          "221",
                          "star-square-dot",
                          321,
                          "321",
                          "star-square-open-dot",
                          22,
                          "22",
                          "star-diamond",
                          122,
                          "122",
                          "star-diamond-open",
                          222,
                          "222",
                          "star-diamond-dot",
                          322,
                          "322",
                          "star-diamond-open-dot",
                          23,
                          "23",
                          "diamond-tall",
                          123,
                          "123",
                          "diamond-tall-open",
                          223,
                          "223",
                          "diamond-tall-dot",
                          323,
                          "323",
                          "diamond-tall-open-dot",
                          24,
                          "24",
                          "diamond-wide",
                          124,
                          "124",
                          "diamond-wide-open",
                          224,
                          "224",
                          "diamond-wide-dot",
                          324,
                          "324",
                          "diamond-wide-open-dot",
                          25,
                          "25",
                          "hourglass",
                          125,
                          "125",
                          "hourglass-open",
                          26,
                          "26",
                          "bowtie",
                          126,
                          "126",
                          "bowtie-open",
                          27,
                          "27",
                          "circle-cross",
                          127,
                          "127",
                          "circle-cross-open",
                          28,
                          "28",
                          "circle-x",
                          128,
                          "128",
                          "circle-x-open",
                          29,
                          "29",
                          "square-cross",
                          129,
                          "129",
                          "square-cross-open",
                          30,
                          "30",
                          "square-x",
                          130,
                          "130",
                          "square-x-open",
                          31,
                          "31",
                          "diamond-cross",
                          131,
                          "131",
                          "diamond-cross-open",
                          32,
                          "32",
                          "diamond-x",
                          132,
                          "132",
                          "diamond-x-open",
                          33,
                          "33",
                          "cross-thin",
                          133,
                          "133",
                          "cross-thin-open",
                          34,
                          "34",
                          "x-thin",
                          134,
                          "134",
                          "x-thin-open",
                          35,
                          "35",
                          "asterisk",
                          135,
                          "135",
                          "asterisk-open",
                          36,
                          "36",
                          "hash",
                          136,
                          "136",
                          "hash-open",
                          236,
                          "236",
                          "hash-dot",
                          336,
                          "336",
                          "hash-open-dot",
                          37,
                          "37",
                          "y-up",
                          137,
                          "137",
                          "y-up-open",
                          38,
                          "38",
                          "y-down",
                          138,
                          "138",
                          "y-down-open",
                          39,
                          "39",
                          "y-left",
                          139,
                          "139",
                          "y-left-open",
                          40,
                          "40",
                          "y-right",
                          140,
                          "140",
                          "y-right-open",
                          41,
                          "41",
                          "line-ew",
                          141,
                          "141",
                          "line-ew-open",
                          42,
                          "42",
                          "line-ns",
                          142,
                          "142",
                          "line-ns-open",
                          43,
                          "43",
                          "line-ne",
                          143,
                          "143",
                          "line-ne-open",
                          44,
                          "44",
                          "line-nw",
                          144,
                          "144",
                          "line-nw-open",
                          45,
                          "45",
                          "arrow-up",
                          145,
                          "145",
                          "arrow-up-open",
                          46,
                          "46",
                          "arrow-down",
                          146,
                          "146",
                          "arrow-down-open",
                          47,
                          "47",
                          "arrow-left",
                          147,
                          "147",
                          "arrow-left-open",
                          48,
                          "48",
                          "arrow-right",
                          148,
                          "148",
                          "arrow-right-open",
                          49,
                          "49",
                          "arrow-bar-up",
                          149,
                          "149",
                          "arrow-bar-up-open",
                          50,
                          "50",
                          "arrow-bar-down",
                          150,
                          "150",
                          "arrow-bar-down-open",
                          51,
                          "51",
                          "arrow-bar-left",
                          151,
                          "151",
                          "arrow-bar-left-open",
                          52,
                          "52",
                          "arrow-bar-right",
                          152,
                          "152",
                          "arrow-bar-right-open",
                          53,
                          "53",
                          "arrow",
                          153,
                          "153",
                          "arrow-open",
                          54,
                          "54",
                          "arrow-wide",
                          154,
                          "154",
                          "arrow-wide-open"
                        ],
                        "default": "circle"
                      }
                    ]
                  }
                }
              ]
            },
            "symbolsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `symbol`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "metasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `meta`.",
          "type": "string"
        },
        "mode": {
          "description": "Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover. If there are less than 20 points and the trace is not stacked then the default is *lines+markers*. Otherwise, *lines*.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "oneOf": [
                {
                  "type": "string",
                  "enum": [
                    "none"
                  ]
                },
                {
                  "type": "string",
                  "pattern": "^(lines|markers|text)(\\+(lines|markers|text))*$"
                }
              ],
              "default": "markers"
            }
          ]
        },
        "name": {
          "description": "Sets the trace name. The trace name appears as the legend item and on hover.",
          "type": "string"
        },
        "opacity": {
          "description": "Sets the opacity of the trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0,
              "maximum": 1,
              "default": 1
            }
          ]
        },
        "selected": {
          "type": "object",
          "properties": {
            "marker": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the marker color of selected points.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "opacity": {
                  "description": "Sets the marker opacity of selected points.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1
                    }
                  ]
                },
                "size": {
                  "description": "Sets the marker size of selected points.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "textfont": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the text font color of selected points.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                }
              },
              "additionalProperties": false
            }
          },
          "additionalProperties": false
        },
        "selectedpoints": {
          "description": "Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect."
        },
        "showlegend": {
          "description": "Determines whether or not an item corresponding to this trace is shown in the legend.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "stream": {
          "type": "object",
          "properties": {
            "maxpoints": {
              "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 10000,
                  "default": 500
                }
              ]
            },
            "token": {
              "pattern": ".*\\S.*$",
              "description": "The stream id number links a data trace on a plot with a stream. See <https://chart-studio.plotly.com/settings> for more details.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "text": {
          "description": "Sets text elements associated with each (a,b) point. If a single string, the same string appears over all the data points. If an array of strings, the items are mapped in order to the the data points in (a,b). If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "textfont": {
          "type": "object",
          "properties": {
            "color": {
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "colorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `color`.",
              "type": "string"
            },
            "family": {
              "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
              "oneOf": [
                {
                  "pattern": ".*\\S.*$",
                  "type": "string"
                },
                {
                  "type": "array",
                  "items": {
                    "pattern": ".*\\S.*$",
                    "type": "string"
                  }
                },
                {
                  "$ref": "#/$defs/query-string"
                }
              ]
            },
            "familysrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `family`.",
              "type": "string"
            },
            "lineposition": {
              "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "oneOf": [
                          {
                            "type": "string",
                            "enum": [
                              "none"
                            ]
                          },
                          {
                            "type": "string",
                            "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                          }
                        ],
                        "default": "none"
                      }
                    ]
                  }
                }
              ]
            },
            "linepositionsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.",
              "type": "string"
            },
            "shadow": {
              "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
              "oneOf": [
                {
                  "default": "none",
                  "type": "string"
                },
                {
                  "type": "array",
                  "items": {
                    "default": "none",
                    "type": "string"
                  }
                }
              ]
            },
            "shadowsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `shadow`.",
              "type": "string"
            },
            "size": {
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 1
                      }
                    ]
                  }
                }
              ]
            },
            "sizesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `size`.",
              "type": "string"
            },
            "style": {
              "description": "Sets whether a font should be styled with a normal or italic face from its family.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "italic"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "stylesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `style`.",
              "type": "string"
            },
            "textcase": {
              "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "word caps",
                          "upper",
                          "lower"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "textcasesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `textcase`.",
              "type": "string"
            },
            "variant": {
              "description": "Sets the variant of the font.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "small-caps",
                          "all-small-caps",
                          "all-petite-caps",
                          "petite-caps",
                          "unicase"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "variantsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `variant`.",
              "type": "string"
            },
            "weight": {
              "description": "Sets the weight (or boldness) of the font.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 1000,
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "weightsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `weight`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "textposition": {
          "description": "Sets the positions of the `text` elements with respects to the (x,y) coordinates.",
          "oneOf": [
            {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "top left",
                    "top center",
                    "top right",
                    "middle left",
                    "middle center",
                    "middle right",
                    "bottom left",
                    "bottom center",
                    "bottom right"
                  ],
                  "default": "middle center"
                }
              ]
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "enum": [
                      "top left",
                      "top center",
                      "top right",
                      "middle left",
                      "middle center",
                      "middle right",
                      "bottom left",
                      "bottom center",
                      "bottom right"
                    ],
                    "default": "middle center"
                  }
                ]
              }
            }
          ]
        },
        "textpositionsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `textposition`.",
          "type": "string"
        },
        "textsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `text`.",
          "type": "string"
        },
        "texttemplate": {
          "description": "Template string used for rendering the information text that appear on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". <https://github.com/d3/d3-format/tree/v1.4.5#d3-format> for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format> for details on the date formatting syntax. Every attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `a`, `b` and `text`.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "texttemplatesrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.",
          "type": "string"
        },
        "uid": {
          "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.",
          "type": "string"
        },
        "uirevision": {
          "description": "Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves."
        },
        "unselected": {
          "type": "object",
          "properties": {
            "marker": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the marker color of unselected points, applied only when a selection exists.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "opacity": {
                  "description": "Sets the marker opacity of unselected points, applied only when a selection exists.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1
                    }
                  ]
                },
                "size": {
                  "description": "Sets the marker size of unselected points, applied only when a selection exists.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "textfont": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the text font color of unselected points, applied only when a selection exists.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                }
              },
              "additionalProperties": false
            }
          },
          "additionalProperties": false
        },
        "visible": {
          "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                true,
                false,
                "legendonly"
              ],
              "default": true
            }
          ]
        },
        "xaxis": {
          "description": "Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "x",
              "pattern": "^x([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "yaxis": {
          "description": "Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "y",
              "pattern": "^y([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "zorder": {
          "description": "Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "integer",
              "default": 0
            }
          ]
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false
    },
    "Scattergeo": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "$id": "https://visivo.io/trace-properties/schema",
      "description": "A schema to validate plotly trace properties",
      "type": "object",
      "properties": {
        "type": {
          "const": "scattergeo"
        },
        "connectgaps": {
          "description": "Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": false
            }
          ]
        },
        "customdata": {
          "description": "Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "customdatasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `customdata`.",
          "type": "string"
        },
        "featureidkey": {
          "default": "id",
          "description": "Sets the key in GeoJSON features which is used as id to match the items included in the `locations` array. Only has an effect when `geojson` is set. Support nested property, for example *properties.name*.",
          "type": "string"
        },
        "fill": {
          "description": "Sets the area to fill with a solid color. Use with `fillcolor` if not *none*. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "none",
                "toself"
              ],
              "default": "none"
            }
          ]
        },
        "fillcolor": {
          "description": "Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "$ref": "#/$defs/color"
            }
          ]
        },
        "geo": {
          "description": "Sets a reference between this trace's geospatial coordinates and a geographic map. If *geo* (the default value), the geospatial coordinates refer to `layout.geo`. If *geo2*, the geospatial coordinates refer to `layout.geo2`, and so on.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "geo",
              "pattern": "^geo([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "geojson": {
          "description": "Sets optional GeoJSON data associated with this trace. If not given, the features on the base map are used when `locations` is set. It can be set as a valid GeoJSON object or as a URL string. Note that we only accept GeoJSONs of type *FeatureCollection* or *Feature* with geometries of type *Polygon* or *MultiPolygon*."
        },
        "hoverinfo": {
          "description": "Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired.",
          "oneOf": [
            {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "oneOf": [
                    {
                      "type": "string",
                      "enum": [
                        "all",
                        "none",
                        "skip"
                      ]
                    },
                    {
                      "type": "string",
                      "pattern": "^(lon|lat|location|text|name)(\\+(lon|lat|location|text|name))*$"
                    }
                  ],
                  "default": "all"
                }
              ]
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "oneOf": [
                      {
                        "type": "string",
                        "enum": [
                          "all",
                          "none",
                          "skip"
                        ]
                      },
                      {
                        "type": "string",
                        "pattern": "^(lon|lat|location|text|name)(\\+(lon|lat|location|text|name))*$"
                      }
                    ],
                    "default": "all"
                  }
                ]
              }
            }
          ]
        },
        "hoverinfosrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.",
          "type": "string"
        },
        "hoverlabel": {
          "type": "object",
          "properties": {
            "align": {
              "description": "Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "left",
                        "right",
                        "auto"
                      ],
                      "default": "auto"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "left",
                          "right",
                          "auto"
                        ],
                        "default": "auto"
                      }
                    ]
                  }
                }
              ]
            },
            "alignsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `align`.",
              "type": "string"
            },
            "bgcolor": {
              "description": "Sets the background color of the hover labels for this trace",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "bgcolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.",
              "type": "string"
            },
            "bordercolor": {
              "description": "Sets the border color of the hover labels for this trace.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "bordercolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.",
              "type": "string"
            },
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "colorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `color`.",
                  "type": "string"
                },
                "family": {
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "oneOf": [
                    {
                      "pattern": ".*\\S.*$",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "pattern": ".*\\S.*$",
                        "type": "string"
                      }
                    },
                    {
                      "$ref": "#/$defs/query-string"
                    }
                  ]
                },
                "familysrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `family`.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "oneOf": [
                              {
                                "type": "string",
                                "enum": [
                                  "none"
                                ]
                              },
                              {
                                "type": "string",
                                "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                              }
                            ],
                            "default": "none"
                          }
                        ]
                      }
                    }
                  ]
                },
                "linepositionsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.",
                  "type": "string"
                },
                "shadow": {
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "oneOf": [
                    {
                      "default": "none",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "default": "none",
                        "type": "string"
                      }
                    }
                  ]
                },
                "shadowsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `shadow`.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 1
                          }
                        ]
                      }
                    }
                  ]
                },
                "sizesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `size`.",
                  "type": "string"
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "italic"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "stylesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `style`.",
                  "type": "string"
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "word caps",
                              "upper",
                              "lower"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "textcasesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `textcase`.",
                  "type": "string"
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "small-caps",
                              "all-small-caps",
                              "all-petite-caps",
                              "petite-caps",
                              "unicase"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "variantsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `variant`.",
                  "type": "string"
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 1000,
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "weightsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `weight`.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "namelength": {
              "description": "Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": -1,
                      "default": 15
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "integer",
                        "minimum": -1,
                        "default": 15
                      }
                    ]
                  }
                }
              ]
            },
            "namelengthsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `namelength`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "hovertemplate": {
          "description": "Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". <https://github.com/d3/d3-format/tree/v1.4.5#d3-format> for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format> for details on the date formatting syntax. The variables available in `hovertemplate` are the ones emitted as event data described at this link <https://plotly.com/javascript/plotlyjs-events/#event-data>. Additionally, every attributes that can be specified per-point (the ones that are `arrayOk: true`) are available.  Anything contained in tag `<extra>` is displayed in the secondary box, for example \"<extra>{fullData.name}</extra>\". To hide the secondary box completely, use an empty tag `<extra></extra>`.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "hovertemplatesrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.",
          "type": "string"
        },
        "hovertext": {
          "description": "Sets hover text elements associated with each (lon,lat) pair or item in `locations`. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (lon,lat) or `locations` coordinates. To be seen, trace `hoverinfo` must contain a *text* flag.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "hovertextsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.",
          "type": "string"
        },
        "ids": {
          "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "idssrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `ids`.",
          "type": "string"
        },
        "lat": {
          "description": "Sets the latitude coordinates (in degrees North).",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "latsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `lat`.",
          "type": "string"
        },
        "legend": {
          "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "legend",
              "pattern": "^legend([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "legendgroup": {
          "default": "",
          "description": "Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items.",
          "type": "string"
        },
        "legendgrouptitle": {
          "type": "object",
          "properties": {
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "family": {
                  "pattern": ".*\\S.*$",
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                "shadow": {
                  "default": "none",
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "text": {
              "default": "",
              "description": "Sets the title of the legend group.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "legendrank": {
          "description": "Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": 1000
            }
          ]
        },
        "legendwidth": {
          "description": "Sets the width (in px or fraction) of the legend for this trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0
            }
          ]
        },
        "line": {
          "type": "object",
          "properties": {
            "color": {
              "description": "Sets the line color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "dash": {
              "default": "solid",
              "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).",
              "type": "string"
            },
            "width": {
              "description": "Sets the line width (in px).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 2
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "locationmode": {
          "description": "Determines the set of locations used to match entries in `locations` to regions on the map. Values *ISO-3*, *USA-states*, *country names* correspond to features on the base map and value *geojson-id* corresponds to features from a custom GeoJSON linked to the `geojson` attribute.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "ISO-3",
                "USA-states",
                "country names",
                "geojson-id"
              ],
              "default": "ISO-3"
            }
          ]
        },
        "locations": {
          "description": "Sets the coordinates via location IDs or names. Coordinates correspond to the centroid of each location given. See `locationmode` for more info.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "locationssrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `locations`.",
          "type": "string"
        },
        "lon": {
          "description": "Sets the longitude coordinates (in degrees East).",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "lonsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `lon`.",
          "type": "string"
        },
        "marker": {
          "type": "object",
          "properties": {
            "angle": {
              "description": "Sets the marker angle in respect to `angleref`.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": -180,
                      "maximum": 180,
                      "default": 0
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": -180,
                        "maximum": 180,
                        "default": 0
                      }
                    ]
                  }
                }
              ]
            },
            "angleref": {
              "description": "Sets the reference for marker angle. With *previous*, angle 0 points along the line from the previous point to this one. With *up*, angle 0 points toward the top of the screen. With *north*, angle 0 points north based on the current map projection.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "previous",
                    "up",
                    "north"
                  ],
                  "default": "up"
                }
              ]
            },
            "anglesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `angle`.",
              "type": "string"
            },
            "autocolorscale": {
              "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": true
                }
              ]
            },
            "cauto": {
              "description": "Determines whether or not the color domain is computed with respect to the input data (here in `marker.color`) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if in `marker.color` is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": true
                }
              ]
            },
            "cmax": {
              "description": "Sets the upper bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmin` must be set as well.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": null
                }
              ]
            },
            "cmid": {
              "description": "Sets the mid-point of the color domain by scaling `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color`. Has no effect when `marker.cauto` is `false`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": null
                }
              ]
            },
            "cmin": {
              "description": "Sets the lower bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmax` must be set as well.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": null
                }
              ]
            },
            "color": {
              "description": "Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.cmin` and `marker.cmax` if set.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "coloraxis": {
              "description": "Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "string",
                  "default": null,
                  "pattern": "/^coloraxis([2-9]|[1-9][0-9]+)?$/"
                }
              ]
            },
            "colorbar": {
              "type": "object",
              "properties": {
                "bgcolor": {
                  "description": "Sets the color of padded area.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "bordercolor": {
                  "description": "Sets the axis line color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "borderwidth": {
                  "description": "Sets the width (in px) or the border enclosing this color bar.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 0
                    }
                  ]
                },
                "dtick": {
                  "description": "Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L<f>*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M<n>* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48*"
                },
                "exponentformat": {
                  "description": "Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "none",
                        "e",
                        "E",
                        "power",
                        "SI",
                        "B"
                      ],
                      "default": "B"
                    }
                  ]
                },
                "labelalias": {
                  "default": false,
                  "description": "Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax."
                },
                "len": {
                  "description": "Sets the length of the color bar This measure excludes the padding of both ends. That is, the color bar length is this length minus the padding on both ends.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "lenmode": {
                  "description": "Determines whether this color bar's length (i.e. the measure in the color variation direction) is set in units of plot *fraction* or in *pixels. Use `len` to set the value.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "fraction",
                        "pixels"
                      ],
                      "default": "fraction"
                    }
                  ]
                },
                "minexponent": {
                  "description": "Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 3
                    }
                  ]
                },
                "nticks": {
                  "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 0,
                      "default": 0
                    }
                  ]
                },
                "orientation": {
                  "description": "Sets the orientation of the colorbar.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "h",
                        "v"
                      ],
                      "default": "v"
                    }
                  ]
                },
                "outlinecolor": {
                  "description": "Sets the axis line color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "outlinewidth": {
                  "description": "Sets the width (in px) of the axis line.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "separatethousands": {
                  "description": "If \"true\", even 4-digit integers are separated",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": false
                    }
                  ]
                },
                "showexponent": {
                  "description": "If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "showticklabels": {
                  "description": "Determines whether or not the tick labels are drawn.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                },
                "showtickprefix": {
                  "description": "If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "showticksuffix": {
                  "description": "Same as `showtickprefix` but for tick suffixes.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "thickness": {
                  "description": "Sets the thickness of the color bar This measure excludes the size of the padding, ticks and labels.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 30
                    }
                  ]
                },
                "thicknessmode": {
                  "description": "Determines whether this color bar's thickness (i.e. the measure in the constant color direction) is set in units of plot *fraction* or in *pixels*. Use `thickness` to set the value.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "fraction",
                        "pixels"
                      ],
                      "default": "pixels"
                    }
                  ]
                },
                "tick0": {
                  "description": "Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L<f>* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears."
                },
                "tickangle": {
                  "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": -180,
                      "maximum": 180,
                      "default": "auto"
                    }
                  ]
                },
                "tickcolor": {
                  "description": "Sets the tick color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "tickfont": {
                  "type": "object",
                  "properties": {
                    "color": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    "family": {
                      "pattern": ".*\\S.*$",
                      "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                      "type": "string"
                    },
                    "lineposition": {
                      "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    "shadow": {
                      "default": "none",
                      "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                      "type": "string"
                    },
                    "size": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    "style": {
                      "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "textcase": {
                      "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "variant": {
                      "description": "Sets the variant of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "weight": {
                      "description": "Sets the weight (or boldness) of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    }
                  },
                  "additionalProperties": false
                },
                "tickformat": {
                  "default": "",
                  "description": "Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*",
                  "type": "string"
                },
                "tickformatstops": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "dtickrange": {
                        "description": "range [*min*, *max*], where *min*, *max* - dtick values which describe some zoom level, it is possible to omit *min* or *max* value by passing *null*",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "array",
                            "items": {},
                            "minItems": 2,
                            "maxItems": 2
                          }
                        ]
                      },
                      "enabled": {
                        "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "boolean",
                            "default": true
                          }
                        ]
                      },
                      "name": {
                        "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.",
                        "type": "string"
                      },
                      "templateitemname": {
                        "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.",
                        "type": "string"
                      },
                      "value": {
                        "default": "",
                        "description": "string - dtickformat for described zoom level, the same as *tickformat*",
                        "type": "string"
                      }
                    },
                    "additionalProperties": false
                  },
                  "minItems": 1
                },
                "ticklabeloverflow": {
                  "description": "Determines how we handle tick labels that would overflow either the graph div or the domain of the axis. The default value for inside tick labels is *hide past domain*. In other cases the default is *hide past div*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "allow",
                        "hide past div",
                        "hide past domain"
                      ]
                    }
                  ]
                },
                "ticklabelposition": {
                  "description": "Determines where tick labels are drawn relative to the ticks. Left and right options are used when `orientation` is *h*, top and bottom when `orientation` is *v*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "outside",
                        "inside",
                        "outside top",
                        "inside top",
                        "outside left",
                        "inside left",
                        "outside right",
                        "inside right",
                        "outside bottom",
                        "inside bottom"
                      ],
                      "default": "outside"
                    }
                  ]
                },
                "ticklabelstep": {
                  "description": "Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "default": 1
                    }
                  ]
                },
                "ticklen": {
                  "description": "Sets the tick length (in px).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 5
                    }
                  ]
                },
                "tickmode": {
                  "description": "Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "auto",
                        "linear",
                        "array"
                      ]
                    }
                  ]
                },
                "tickprefix": {
                  "default": "",
                  "description": "Sets a tick label prefix.",
                  "type": "string"
                },
                "ticks": {
                  "description": "Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "outside",
                        "inside",
                        ""
                      ],
                      "default": ""
                    }
                  ]
                },
                "ticksuffix": {
                  "default": "",
                  "description": "Sets a tick label suffix.",
                  "type": "string"
                },
                "ticktext": {
                  "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "string"
                          }
                        ]
                      }
                    }
                  ]
                },
                "ticktextsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.",
                  "type": "string"
                },
                "tickvals": {
                  "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "string"
                          }
                        ]
                      }
                    }
                  ]
                },
                "tickvalssrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.",
                  "type": "string"
                },
                "tickwidth": {
                  "description": "Sets the tick width (in px).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "title": {
                  "type": "object",
                  "properties": {
                    "font": {
                      "type": "object",
                      "properties": {
                        "color": {
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "$ref": "#/$defs/color"
                            }
                          ]
                        },
                        "family": {
                          "pattern": ".*\\S.*$",
                          "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                          "type": "string"
                        },
                        "lineposition": {
                          "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "oneOf": [
                                {
                                  "type": "string",
                                  "enum": [
                                    "none"
                                  ]
                                },
                                {
                                  "type": "string",
                                  "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                                }
                              ],
                              "default": "none"
                            }
                          ]
                        },
                        "shadow": {
                          "default": "none",
                          "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                          "type": "string"
                        },
                        "size": {
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "type": "number",
                              "minimum": 1
                            }
                          ]
                        },
                        "style": {
                          "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "italic"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "textcase": {
                          "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "word caps",
                                "upper",
                                "lower"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "variant": {
                          "description": "Sets the variant of the font.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "small-caps",
                                "all-small-caps",
                                "all-petite-caps",
                                "petite-caps",
                                "unicase"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "weight": {
                          "description": "Sets the weight (or boldness) of the font.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "type": "integer",
                              "minimum": 1,
                              "maximum": 1000,
                              "default": "normal"
                            }
                          ]
                        }
                      },
                      "additionalProperties": false
                    },
                    "side": {
                      "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and  defaults to *right* when `orientation` if *h*.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "right",
                            "top",
                            "bottom"
                          ]
                        }
                      ]
                    },
                    "text": {
                      "description": "Sets the title of the color bar.",
                      "type": "string"
                    }
                  },
                  "additionalProperties": false
                },
                "x": {
                  "description": "Sets the x position with respect to `xref` of the color bar (in plot fraction). When `xref` is *paper*, defaults to 1.02 when `orientation` is *v* and 0.5 when `orientation` is *h*. When `xref` is *container*, defaults to *1* when `orientation` is *v* and 0.5 when `orientation` is *h*. Must be between *0* and *1* if `xref` is *container* and between *-2* and *3* if `xref` is *paper*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number"
                    }
                  ]
                },
                "xanchor": {
                  "description": "Sets this color bar's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the color bar. Defaults to *left* when `orientation` is *v* and *center* when `orientation` is *h*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "left",
                        "center",
                        "right"
                      ]
                    }
                  ]
                },
                "xpad": {
                  "description": "Sets the amount of padding (in px) along the x direction.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 10
                    }
                  ]
                },
                "xref": {
                  "description": "Sets the container `x` refers to. *container* spans the entire `width` of the plot. *paper* refers to the width of the plotting area only.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "container",
                        "paper"
                      ],
                      "default": "paper"
                    }
                  ]
                },
                "y": {
                  "description": "Sets the y position with respect to `yref` of the color bar (in plot fraction). When `yref` is *paper*, defaults to 0.5 when `orientation` is *v* and 1.02 when `orientation` is *h*. When `yref` is *container*, defaults to 0.5 when `orientation` is *v* and 1 when `orientation` is *h*. Must be between *0* and *1* if `yref` is *container* and between *-2* and *3* if `yref` is *paper*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number"
                    }
                  ]
                },
                "yanchor": {
                  "description": "Sets this color bar's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the color bar. Defaults to *middle* when `orientation` is *v* and *bottom* when `orientation` is *h*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "top",
                        "middle",
                        "bottom"
                      ]
                    }
                  ]
                },
                "ypad": {
                  "description": "Sets the amount of padding (in px) along the y direction.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 10
                    }
                  ]
                },
                "yref": {
                  "description": "Sets the container `y` refers to. *container* spans the entire `height` of the plot. *paper* refers to the height of the plotting area only.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "container",
                        "paper"
                      ],
                      "default": "paper"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "colorscale": {
              "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/colorscale",
                  "default": null
                }
              ]
            },
            "colorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `color`.",
              "type": "string"
            },
            "gradient": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the final color of the gradient fill: the center color for radial, the right for horizontal, or the bottom for vertical.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "colorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `color`.",
                  "type": "string"
                },
                "type": {
                  "description": "Sets the type of gradient used to fill the markers",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "radial",
                            "horizontal",
                            "vertical",
                            "none"
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "radial",
                              "horizontal",
                              "vertical",
                              "none"
                            ],
                            "default": "none"
                          }
                        ]
                      }
                    }
                  ]
                },
                "typesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `type`.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "line": {
              "type": "object",
              "properties": {
                "autocolorscale": {
                  "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.line.colorscale`. Has an effect only if in `marker.line.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                },
                "cauto": {
                  "description": "Determines whether or not the color domain is computed with respect to the input data (here in `marker.line.color`) or the bounds set in `marker.line.cmin` and `marker.line.cmax` Has an effect only if in `marker.line.color` is set to a numerical array. Defaults to `false` when `marker.line.cmin` and `marker.line.cmax` are set by the user.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                },
                "cmax": {
                  "description": "Sets the upper bound of the color domain. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color` and if set, `marker.line.cmin` must be set as well.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "default": null
                    }
                  ]
                },
                "cmid": {
                  "description": "Sets the mid-point of the color domain by scaling `marker.line.cmin` and/or `marker.line.cmax` to be equidistant to this point. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color`. Has no effect when `marker.line.cauto` is `false`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "default": null
                    }
                  ]
                },
                "cmin": {
                  "description": "Sets the lower bound of the color domain. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color` and if set, `marker.line.cmax` must be set as well.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "default": null
                    }
                  ]
                },
                "color": {
                  "description": "Sets the marker.line color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.line.cmin` and `marker.line.cmax` if set.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "coloraxis": {
                  "description": "Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "string",
                      "default": null,
                      "pattern": "/^coloraxis([2-9]|[1-9][0-9]+)?$/"
                    }
                  ]
                },
                "colorscale": {
                  "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/colorscale",
                      "default": null
                    }
                  ]
                },
                "colorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `color`.",
                  "type": "string"
                },
                "reversescale": {
                  "description": "Reverses the color mapping if true. Has an effect only if in `marker.line.color` is set to a numerical array. If true, `marker.line.cmin` will correspond to the last color in the array and `marker.line.cmax` will correspond to the first color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": false
                    }
                  ]
                },
                "width": {
                  "description": "Sets the width (in px) of the lines bounding the marker points.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 0
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 0
                          }
                        ]
                      }
                    }
                  ]
                },
                "widthsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `width`.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "opacity": {
              "description": "Sets the marker opacity.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 1
                      }
                    ]
                  }
                }
              ]
            },
            "opacitysrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `opacity`.",
              "type": "string"
            },
            "reversescale": {
              "description": "Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            },
            "showscale": {
              "description": "Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            },
            "size": {
              "description": "Sets the marker size (in px).",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 6
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 0,
                        "default": 6
                      }
                    ]
                  }
                }
              ]
            },
            "sizemin": {
              "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the minimum size (in px) of the rendered marker points.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "sizemode": {
              "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the rule for which the data in `size` is converted to pixels.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "diameter",
                    "area"
                  ],
                  "default": "diameter"
                }
              ]
            },
            "sizeref": {
              "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the scale factor used to determine the rendered size of marker points. Use with `sizemin` and `sizemode`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": 1
                }
              ]
            },
            "sizesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `size`.",
              "type": "string"
            },
            "standoff": {
              "description": "Moves the marker away from the data point in the direction of `angle` (in px). This can be useful for example if you have another marker at this location and you want to point an arrowhead marker at it.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 0
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 0,
                        "default": 0
                      }
                    ]
                  }
                }
              ]
            },
            "standoffsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `standoff`.",
              "type": "string"
            },
            "symbol": {
              "description": "Sets the marker symbol type. Adding 100 is equivalent to appending *-open* to a symbol name. Adding 200 is equivalent to appending *-dot* to a symbol name. Adding 300 is equivalent to appending *-open-dot* or *dot-open* to a symbol name.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        0,
                        "0",
                        "circle",
                        100,
                        "100",
                        "circle-open",
                        200,
                        "200",
                        "circle-dot",
                        300,
                        "300",
                        "circle-open-dot",
                        1,
                        "1",
                        "square",
                        101,
                        "101",
                        "square-open",
                        201,
                        "201",
                        "square-dot",
                        301,
                        "301",
                        "square-open-dot",
                        2,
                        "2",
                        "diamond",
                        102,
                        "102",
                        "diamond-open",
                        202,
                        "202",
                        "diamond-dot",
                        302,
                        "302",
                        "diamond-open-dot",
                        3,
                        "3",
                        "cross",
                        103,
                        "103",
                        "cross-open",
                        203,
                        "203",
                        "cross-dot",
                        303,
                        "303",
                        "cross-open-dot",
                        4,
                        "4",
                        "x",
                        104,
                        "104",
                        "x-open",
                        204,
                        "204",
                        "x-dot",
                        304,
                        "304",
                        "x-open-dot",
                        5,
                        "5",
                        "triangle-up",
                        105,
                        "105",
                        "triangle-up-open",
                        205,
                        "205",
                        "triangle-up-dot",
                        305,
                        "305",
                        "triangle-up-open-dot",
                        6,
                        "6",
                        "triangle-down",
                        106,
                        "106",
                        "triangle-down-open",
                        206,
                        "206",
                        "triangle-down-dot",
                        306,
                        "306",
                        "triangle-down-open-dot",
                        7,
                        "7",
                        "triangle-left",
                        107,
                        "107",
                        "triangle-left-open",
                        207,
                        "207",
                        "triangle-left-dot",
                        307,
                        "307",
                        "triangle-left-open-dot",
                        8,
                        "8",
                        "triangle-right",
                        108,
                        "108",
                        "triangle-right-open",
                        208,
                        "208",
                        "triangle-right-dot",
                        308,
                        "308",
                        "triangle-right-open-dot",
                        9,
                        "9",
                        "triangle-ne",
                        109,
                        "109",
                        "triangle-ne-open",
                        209,
                        "209",
                        "triangle-ne-dot",
                        309,
                        "309",
                        "triangle-ne-open-dot",
                        10,
                        "10",
                        "triangle-se",
                        110,
                        "110",
                        "triangle-se-open",
                        210,
                        "210",
                        "triangle-se-dot",
                        310,
                        "310",
                        "triangle-se-open-dot",
                        11,
                        "11",
                        "triangle-sw",
                        111,
                        "111",
                        "triangle-sw-open",
                        211,
                        "211",
                        "triangle-sw-dot",
                        311,
                        "311",
                        "triangle-sw-open-dot",
                        12,
                        "12",
                        "triangle-nw",
                        112,
                        "112",
                        "triangle-nw-open",
                        212,
                        "212",
                        "triangle-nw-dot",
                        312,
                        "312",
                        "triangle-nw-open-dot",
                        13,
                        "13",
                        "pentagon",
                        113,
                        "113",
                        "pentagon-open",
                        213,
                        "213",
                        "pentagon-dot",
                        313,
                        "313",
                        "pentagon-open-dot",
                        14,
                        "14",
                        "hexagon",
                        114,
                        "114",
                        "hexagon-open",
                        214,
                        "214",
                        "hexagon-dot",
                        314,
                        "314",
                        "hexagon-open-dot",
                        15,
                        "15",
                        "hexagon2",
                        115,
                        "115",
                        "hexagon2-open",
                        215,
                        "215",
                        "hexagon2-dot",
                        315,
                        "315",
                        "hexagon2-open-dot",
                        16,
                        "16",
                        "octagon",
                        116,
                        "116",
                        "octagon-open",
                        216,
                        "216",
                        "octagon-dot",
                        316,
                        "316",
                        "octagon-open-dot",
                        17,
                        "17",
                        "star",
                        117,
                        "117",
                        "star-open",
                        217,
                        "217",
                        "star-dot",
                        317,
                        "317",
                        "star-open-dot",
                        18,
                        "18",
                        "hexagram",
                        118,
                        "118",
                        "hexagram-open",
                        218,
                        "218",
                        "hexagram-dot",
                        318,
                        "318",
                        "hexagram-open-dot",
                        19,
                        "19",
                        "star-triangle-up",
                        119,
                        "119",
                        "star-triangle-up-open",
                        219,
                        "219",
                        "star-triangle-up-dot",
                        319,
                        "319",
                        "star-triangle-up-open-dot",
                        20,
                        "20",
                        "star-triangle-down",
                        120,
                        "120",
                        "star-triangle-down-open",
                        220,
                        "220",
                        "star-triangle-down-dot",
                        320,
                        "320",
                        "star-triangle-down-open-dot",
                        21,
                        "21",
                        "star-square",
                        121,
                        "121",
                        "star-square-open",
                        221,
                        "221",
                        "star-square-dot",
                        321,
                        "321",
                        "star-square-open-dot",
                        22,
                        "22",
                        "star-diamond",
                        122,
                        "122",
                        "star-diamond-open",
                        222,
                        "222",
                        "star-diamond-dot",
                        322,
                        "322",
                        "star-diamond-open-dot",
                        23,
                        "23",
                        "diamond-tall",
                        123,
                        "123",
                        "diamond-tall-open",
                        223,
                        "223",
                        "diamond-tall-dot",
                        323,
                        "323",
                        "diamond-tall-open-dot",
                        24,
                        "24",
                        "diamond-wide",
                        124,
                        "124",
                        "diamond-wide-open",
                        224,
                        "224",
                        "diamond-wide-dot",
                        324,
                        "324",
                        "diamond-wide-open-dot",
                        25,
                        "25",
                        "hourglass",
                        125,
                        "125",
                        "hourglass-open",
                        26,
                        "26",
                        "bowtie",
                        126,
                        "126",
                        "bowtie-open",
                        27,
                        "27",
                        "circle-cross",
                        127,
                        "127",
                        "circle-cross-open",
                        28,
                        "28",
                        "circle-x",
                        128,
                        "128",
                        "circle-x-open",
                        29,
                        "29",
                        "square-cross",
                        129,
                        "129",
                        "square-cross-open",
                        30,
                        "30",
                        "square-x",
                        130,
                        "130",
                        "square-x-open",
                        31,
                        "31",
                        "diamond-cross",
                        131,
                        "131",
                        "diamond-cross-open",
                        32,
                        "32",
                        "diamond-x",
                        132,
                        "132",
                        "diamond-x-open",
                        33,
                        "33",
                        "cross-thin",
                        133,
                        "133",
                        "cross-thin-open",
                        34,
                        "34",
                        "x-thin",
                        134,
                        "134",
                        "x-thin-open",
                        35,
                        "35",
                        "asterisk",
                        135,
                        "135",
                        "asterisk-open",
                        36,
                        "36",
                        "hash",
                        136,
                        "136",
                        "hash-open",
                        236,
                        "236",
                        "hash-dot",
                        336,
                        "336",
                        "hash-open-dot",
                        37,
                        "37",
                        "y-up",
                        137,
                        "137",
                        "y-up-open",
                        38,
                        "38",
                        "y-down",
                        138,
                        "138",
                        "y-down-open",
                        39,
                        "39",
                        "y-left",
                        139,
                        "139",
                        "y-left-open",
                        40,
                        "40",
                        "y-right",
                        140,
                        "140",
                        "y-right-open",
                        41,
                        "41",
                        "line-ew",
                        141,
                        "141",
                        "line-ew-open",
                        42,
                        "42",
                        "line-ns",
                        142,
                        "142",
                        "line-ns-open",
                        43,
                        "43",
                        "line-ne",
                        143,
                        "143",
                        "line-ne-open",
                        44,
                        "44",
                        "line-nw",
                        144,
                        "144",
                        "line-nw-open",
                        45,
                        "45",
                        "arrow-up",
                        145,
                        "145",
                        "arrow-up-open",
                        46,
                        "46",
                        "arrow-down",
                        146,
                        "146",
                        "arrow-down-open",
                        47,
                        "47",
                        "arrow-left",
                        147,
                        "147",
                        "arrow-left-open",
                        48,
                        "48",
                        "arrow-right",
                        148,
                        "148",
                        "arrow-right-open",
                        49,
                        "49",
                        "arrow-bar-up",
                        149,
                        "149",
                        "arrow-bar-up-open",
                        50,
                        "50",
                        "arrow-bar-down",
                        150,
                        "150",
                        "arrow-bar-down-open",
                        51,
                        "51",
                        "arrow-bar-left",
                        151,
                        "151",
                        "arrow-bar-left-open",
                        52,
                        "52",
                        "arrow-bar-right",
                        152,
                        "152",
                        "arrow-bar-right-open",
                        53,
                        "53",
                        "arrow",
                        153,
                        "153",
                        "arrow-open",
                        54,
                        "54",
                        "arrow-wide",
                        154,
                        "154",
                        "arrow-wide-open"
                      ],
                      "default": "circle"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          0,
                          "0",
                          "circle",
                          100,
                          "100",
                          "circle-open",
                          200,
                          "200",
                          "circle-dot",
                          300,
                          "300",
                          "circle-open-dot",
                          1,
                          "1",
                          "square",
                          101,
                          "101",
                          "square-open",
                          201,
                          "201",
                          "square-dot",
                          301,
                          "301",
                          "square-open-dot",
                          2,
                          "2",
                          "diamond",
                          102,
                          "102",
                          "diamond-open",
                          202,
                          "202",
                          "diamond-dot",
                          302,
                          "302",
                          "diamond-open-dot",
                          3,
                          "3",
                          "cross",
                          103,
                          "103",
                          "cross-open",
                          203,
                          "203",
                          "cross-dot",
                          303,
                          "303",
                          "cross-open-dot",
                          4,
                          "4",
                          "x",
                          104,
                          "104",
                          "x-open",
                          204,
                          "204",
                          "x-dot",
                          304,
                          "304",
                          "x-open-dot",
                          5,
                          "5",
                          "triangle-up",
                          105,
                          "105",
                          "triangle-up-open",
                          205,
                          "205",
                          "triangle-up-dot",
                          305,
                          "305",
                          "triangle-up-open-dot",
                          6,
                          "6",
                          "triangle-down",
                          106,
                          "106",
                          "triangle-down-open",
                          206,
                          "206",
                          "triangle-down-dot",
                          306,
                          "306",
                          "triangle-down-open-dot",
                          7,
                          "7",
                          "triangle-left",
                          107,
                          "107",
                          "triangle-left-open",
                          207,
                          "207",
                          "triangle-left-dot",
                          307,
                          "307",
                          "triangle-left-open-dot",
                          8,
                          "8",
                          "triangle-right",
                          108,
                          "108",
                          "triangle-right-open",
                          208,
                          "208",
                          "triangle-right-dot",
                          308,
                          "308",
                          "triangle-right-open-dot",
                          9,
                          "9",
                          "triangle-ne",
                          109,
                          "109",
                          "triangle-ne-open",
                          209,
                          "209",
                          "triangle-ne-dot",
                          309,
                          "309",
                          "triangle-ne-open-dot",
                          10,
                          "10",
                          "triangle-se",
                          110,
                          "110",
                          "triangle-se-open",
                          210,
                          "210",
                          "triangle-se-dot",
                          310,
                          "310",
                          "triangle-se-open-dot",
                          11,
                          "11",
                          "triangle-sw",
                          111,
                          "111",
                          "triangle-sw-open",
                          211,
                          "211",
                          "triangle-sw-dot",
                          311,
                          "311",
                          "triangle-sw-open-dot",
                          12,
                          "12",
                          "triangle-nw",
                          112,
                          "112",
                          "triangle-nw-open",
                          212,
                          "212",
                          "triangle-nw-dot",
                          312,
                          "312",
                          "triangle-nw-open-dot",
                          13,
                          "13",
                          "pentagon",
                          113,
                          "113",
                          "pentagon-open",
                          213,
                          "213",
                          "pentagon-dot",
                          313,
                          "313",
                          "pentagon-open-dot",
                          14,
                          "14",
                          "hexagon",
                          114,
                          "114",
                          "hexagon-open",
                          214,
                          "214",
                          "hexagon-dot",
                          314,
                          "314",
                          "hexagon-open-dot",
                          15,
                          "15",
                          "hexagon2",
                          115,
                          "115",
                          "hexagon2-open",
                          215,
                          "215",
                          "hexagon2-dot",
                          315,
                          "315",
                          "hexagon2-open-dot",
                          16,
                          "16",
                          "octagon",
                          116,
                          "116",
                          "octagon-open",
                          216,
                          "216",
                          "octagon-dot",
                          316,
                          "316",
                          "octagon-open-dot",
                          17,
                          "17",
                          "star",
                          117,
                          "117",
                          "star-open",
                          217,
                          "217",
                          "star-dot",
                          317,
                          "317",
                          "star-open-dot",
                          18,
                          "18",
                          "hexagram",
                          118,
                          "118",
                          "hexagram-open",
                          218,
                          "218",
                          "hexagram-dot",
                          318,
                          "318",
                          "hexagram-open-dot",
                          19,
                          "19",
                          "star-triangle-up",
                          119,
                          "119",
                          "star-triangle-up-open",
                          219,
                          "219",
                          "star-triangle-up-dot",
                          319,
                          "319",
                          "star-triangle-up-open-dot",
                          20,
                          "20",
                          "star-triangle-down",
                          120,
                          "120",
                          "star-triangle-down-open",
                          220,
                          "220",
                          "star-triangle-down-dot",
                          320,
                          "320",
                          "star-triangle-down-open-dot",
                          21,
                          "21",
                          "star-square",
                          121,
                          "121",
                          "star-square-open",
                          221,
                          "221",
                          "star-square-dot",
                          321,
                          "321",
                          "star-square-open-dot",
                          22,
                          "22",
                          "star-diamond",
                          122,
                          "122",
                          "star-diamond-open",
                          222,
                          "222",
                          "star-diamond-dot",
                          322,
                          "322",
                          "star-diamond-open-dot",
                          23,
                          "23",
                          "diamond-tall",
                          123,
                          "123",
                          "diamond-tall-open",
                          223,
                          "223",
                          "diamond-tall-dot",
                          323,
                          "323",
                          "diamond-tall-open-dot",
                          24,
                          "24",
                          "diamond-wide",
                          124,
                          "124",
                          "diamond-wide-open",
                          224,
                          "224",
                          "diamond-wide-dot",
                          324,
                          "324",
                          "diamond-wide-open-dot",
                          25,
                          "25",
                          "hourglass",
                          125,
                          "125",
                          "hourglass-open",
                          26,
                          "26",
                          "bowtie",
                          126,
                          "126",
                          "bowtie-open",
                          27,
                          "27",
                          "circle-cross",
                          127,
                          "127",
                          "circle-cross-open",
                          28,
                          "28",
                          "circle-x",
                          128,
                          "128",
                          "circle-x-open",
                          29,
                          "29",
                          "square-cross",
                          129,
                          "129",
                          "square-cross-open",
                          30,
                          "30",
                          "square-x",
                          130,
                          "130",
                          "square-x-open",
                          31,
                          "31",
                          "diamond-cross",
                          131,
                          "131",
                          "diamond-cross-open",
                          32,
                          "32",
                          "diamond-x",
                          132,
                          "132",
                          "diamond-x-open",
                          33,
                          "33",
                          "cross-thin",
                          133,
                          "133",
                          "cross-thin-open",
                          34,
                          "34",
                          "x-thin",
                          134,
                          "134",
                          "x-thin-open",
                          35,
                          "35",
                          "asterisk",
                          135,
                          "135",
                          "asterisk-open",
                          36,
                          "36",
                          "hash",
                          136,
                          "136",
                          "hash-open",
                          236,
                          "236",
                          "hash-dot",
                          336,
                          "336",
                          "hash-open-dot",
                          37,
                          "37",
                          "y-up",
                          137,
                          "137",
                          "y-up-open",
                          38,
                          "38",
                          "y-down",
                          138,
                          "138",
                          "y-down-open",
                          39,
                          "39",
                          "y-left",
                          139,
                          "139",
                          "y-left-open",
                          40,
                          "40",
                          "y-right",
                          140,
                          "140",
                          "y-right-open",
                          41,
                          "41",
                          "line-ew",
                          141,
                          "141",
                          "line-ew-open",
                          42,
                          "42",
                          "line-ns",
                          142,
                          "142",
                          "line-ns-open",
                          43,
                          "43",
                          "line-ne",
                          143,
                          "143",
                          "line-ne-open",
                          44,
                          "44",
                          "line-nw",
                          144,
                          "144",
                          "line-nw-open",
                          45,
                          "45",
                          "arrow-up",
                          145,
                          "145",
                          "arrow-up-open",
                          46,
                          "46",
                          "arrow-down",
                          146,
                          "146",
                          "arrow-down-open",
                          47,
                          "47",
                          "arrow-left",
                          147,
                          "147",
                          "arrow-left-open",
                          48,
                          "48",
                          "arrow-right",
                          148,
                          "148",
                          "arrow-right-open",
                          49,
                          "49",
                          "arrow-bar-up",
                          149,
                          "149",
                          "arrow-bar-up-open",
                          50,
                          "50",
                          "arrow-bar-down",
                          150,
                          "150",
                          "arrow-bar-down-open",
                          51,
                          "51",
                          "arrow-bar-left",
                          151,
                          "151",
                          "arrow-bar-left-open",
                          52,
                          "52",
                          "arrow-bar-right",
                          152,
                          "152",
                          "arrow-bar-right-open",
                          53,
                          "53",
                          "arrow",
                          153,
                          "153",
                          "arrow-open",
                          54,
                          "54",
                          "arrow-wide",
                          154,
                          "154",
                          "arrow-wide-open"
                        ],
                        "default": "circle"
                      }
                    ]
                  }
                }
              ]
            },
            "symbolsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `symbol`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "metasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `meta`.",
          "type": "string"
        },
        "mode": {
          "description": "Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover. If there are less than 20 points and the trace is not stacked then the default is *lines+markers*. Otherwise, *lines*.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "oneOf": [
                {
                  "type": "string",
                  "enum": [
                    "none"
                  ]
                },
                {
                  "type": "string",
                  "pattern": "^(lines|markers|text)(\\+(lines|markers|text))*$"
                }
              ],
              "default": "markers"
            }
          ]
        },
        "name": {
          "description": "Sets the trace name. The trace name appears as the legend item and on hover.",
          "type": "string"
        },
        "opacity": {
          "description": "Sets the opacity of the trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0,
              "maximum": 1,
              "default": 1
            }
          ]
        },
        "selected": {
          "type": "object",
          "properties": {
            "marker": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the marker color of selected points.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "opacity": {
                  "description": "Sets the marker opacity of selected points.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1
                    }
                  ]
                },
                "size": {
                  "description": "Sets the marker size of selected points.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "textfont": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the text font color of selected points.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                }
              },
              "additionalProperties": false
            }
          },
          "additionalProperties": false
        },
        "selectedpoints": {
          "description": "Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect."
        },
        "showlegend": {
          "description": "Determines whether or not an item corresponding to this trace is shown in the legend.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "stream": {
          "type": "object",
          "properties": {
            "maxpoints": {
              "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 10000,
                  "default": 500
                }
              ]
            },
            "token": {
              "pattern": ".*\\S.*$",
              "description": "The stream id number links a data trace on a plot with a stream. See <https://chart-studio.plotly.com/settings> for more details.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "text": {
          "description": "Sets text elements associated with each (lon,lat) pair or item in `locations`. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (lon,lat) or `locations` coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "textfont": {
          "type": "object",
          "properties": {
            "color": {
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "colorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `color`.",
              "type": "string"
            },
            "family": {
              "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
              "oneOf": [
                {
                  "pattern": ".*\\S.*$",
                  "type": "string"
                },
                {
                  "type": "array",
                  "items": {
                    "pattern": ".*\\S.*$",
                    "type": "string"
                  }
                },
                {
                  "$ref": "#/$defs/query-string"
                }
              ]
            },
            "familysrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `family`.",
              "type": "string"
            },
            "lineposition": {
              "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "oneOf": [
                          {
                            "type": "string",
                            "enum": [
                              "none"
                            ]
                          },
                          {
                            "type": "string",
                            "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                          }
                        ],
                        "default": "none"
                      }
                    ]
                  }
                }
              ]
            },
            "linepositionsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.",
              "type": "string"
            },
            "shadow": {
              "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
              "oneOf": [
                {
                  "default": "none",
                  "type": "string"
                },
                {
                  "type": "array",
                  "items": {
                    "default": "none",
                    "type": "string"
                  }
                }
              ]
            },
            "shadowsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `shadow`.",
              "type": "string"
            },
            "size": {
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 1
                      }
                    ]
                  }
                }
              ]
            },
            "sizesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `size`.",
              "type": "string"
            },
            "style": {
              "description": "Sets whether a font should be styled with a normal or italic face from its family.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "italic"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "stylesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `style`.",
              "type": "string"
            },
            "textcase": {
              "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "word caps",
                          "upper",
                          "lower"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "textcasesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `textcase`.",
              "type": "string"
            },
            "variant": {
              "description": "Sets the variant of the font.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "small-caps",
                          "all-small-caps",
                          "all-petite-caps",
                          "petite-caps",
                          "unicase"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "variantsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `variant`.",
              "type": "string"
            },
            "weight": {
              "description": "Sets the weight (or boldness) of the font.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 1000,
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "weightsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `weight`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "textposition": {
          "description": "Sets the positions of the `text` elements with respects to the (x,y) coordinates.",
          "oneOf": [
            {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "top left",
                    "top center",
                    "top right",
                    "middle left",
                    "middle center",
                    "middle right",
                    "bottom left",
                    "bottom center",
                    "bottom right"
                  ],
                  "default": "middle center"
                }
              ]
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "enum": [
                      "top left",
                      "top center",
                      "top right",
                      "middle left",
                      "middle center",
                      "middle right",
                      "bottom left",
                      "bottom center",
                      "bottom right"
                    ],
                    "default": "middle center"
                  }
                ]
              }
            }
          ]
        },
        "textpositionsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `textposition`.",
          "type": "string"
        },
        "textsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `text`.",
          "type": "string"
        },
        "texttemplate": {
          "description": "Template string used for rendering the information text that appear on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". <https://github.com/d3/d3-format/tree/v1.4.5#d3-format> for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format> for details on the date formatting syntax. Every attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `lat`, `lon`, `location` and `text`.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "texttemplatesrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.",
          "type": "string"
        },
        "uid": {
          "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.",
          "type": "string"
        },
        "uirevision": {
          "description": "Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves."
        },
        "unselected": {
          "type": "object",
          "properties": {
            "marker": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the marker color of unselected points, applied only when a selection exists.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "opacity": {
                  "description": "Sets the marker opacity of unselected points, applied only when a selection exists.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1
                    }
                  ]
                },
                "size": {
                  "description": "Sets the marker size of unselected points, applied only when a selection exists.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "textfont": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the text font color of unselected points, applied only when a selection exists.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                }
              },
              "additionalProperties": false
            }
          },
          "additionalProperties": false
        },
        "visible": {
          "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                true,
                false,
                "legendonly"
              ],
              "default": true
            }
          ]
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false
    },
    "Scattergl": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "$id": "https://visivo.io/trace-properties/schema",
      "description": "A schema to validate plotly trace properties",
      "type": "object",
      "properties": {
        "type": {
          "const": "scattergl"
        },
        "connectgaps": {
          "description": "Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": false
            }
          ]
        },
        "customdata": {
          "description": "Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "customdatasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `customdata`.",
          "type": "string"
        },
        "dx": {
          "description": "Sets the x coordinate step. See `x0` for more info.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": 1
            }
          ]
        },
        "dy": {
          "description": "Sets the y coordinate step. See `y0` for more info.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": 1
            }
          ]
        },
        "error_x": {
          "type": "object",
          "properties": {
            "array": {
              "description": "Sets the data corresponding the length of each error bar. Values are plotted relative to the underlying data.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  }
                }
              ]
            },
            "arrayminus": {
              "description": "Sets the data corresponding the length of each error bar in the bottom (left) direction for vertical (horizontal) bars Values are plotted relative to the underlying data.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  }
                }
              ]
            },
            "arrayminussrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `arrayminus`.",
              "type": "string"
            },
            "arraysrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `array`.",
              "type": "string"
            },
            "color": {
              "description": "Sets the stroke color of the error bars.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "copy_ystyle": {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean"
                }
              ]
            },
            "symmetric": {
              "description": "Determines whether or not the error bars have the same length in both direction (top/bottom for vertical bars, left/right for horizontal bars.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean"
                }
              ]
            },
            "thickness": {
              "description": "Sets the thickness (in px) of the error bars.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 2
                }
              ]
            },
            "traceref": {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "tracerefminus": {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "type": {
              "description": "Determines the rule used to generate the error bars. If *constant`, the bar lengths are of a constant value. Set this constant in `value`. If *percent*, the bar lengths correspond to a percentage of underlying data. Set this percentage in `value`. If *sqrt*, the bar lengths correspond to the square of the underlying data. If *data*, the bar lengths are set with data set `array`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "percent",
                    "constant",
                    "sqrt",
                    "data"
                  ]
                }
              ]
            },
            "value": {
              "description": "Sets the value of either the percentage (if `type` is set to *percent*) or the constant (if `type` is set to *constant*) corresponding to the lengths of the error bars.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 10
                }
              ]
            },
            "valueminus": {
              "description": "Sets the value of either the percentage (if `type` is set to *percent*) or the constant (if `type` is set to *constant*) corresponding to the lengths of the error bars in the bottom (left) direction for vertical (horizontal) bars",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 10
                }
              ]
            },
            "visible": {
              "description": "Determines whether or not this set of error bars is visible.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean"
                }
              ]
            },
            "width": {
              "description": "Sets the width (in px) of the cross-bar at both ends of the error bars.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "error_y": {
          "type": "object",
          "properties": {
            "array": {
              "description": "Sets the data corresponding the length of each error bar. Values are plotted relative to the underlying data.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  }
                }
              ]
            },
            "arrayminus": {
              "description": "Sets the data corresponding the length of each error bar in the bottom (left) direction for vertical (horizontal) bars Values are plotted relative to the underlying data.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  }
                }
              ]
            },
            "arrayminussrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `arrayminus`.",
              "type": "string"
            },
            "arraysrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `array`.",
              "type": "string"
            },
            "color": {
              "description": "Sets the stroke color of the error bars.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "symmetric": {
              "description": "Determines whether or not the error bars have the same length in both direction (top/bottom for vertical bars, left/right for horizontal bars.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean"
                }
              ]
            },
            "thickness": {
              "description": "Sets the thickness (in px) of the error bars.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 2
                }
              ]
            },
            "traceref": {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "tracerefminus": {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "type": {
              "description": "Determines the rule used to generate the error bars. If *constant`, the bar lengths are of a constant value. Set this constant in `value`. If *percent*, the bar lengths correspond to a percentage of underlying data. Set this percentage in `value`. If *sqrt*, the bar lengths correspond to the square of the underlying data. If *data*, the bar lengths are set with data set `array`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "percent",
                    "constant",
                    "sqrt",
                    "data"
                  ]
                }
              ]
            },
            "value": {
              "description": "Sets the value of either the percentage (if `type` is set to *percent*) or the constant (if `type` is set to *constant*) corresponding to the lengths of the error bars.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 10
                }
              ]
            },
            "valueminus": {
              "description": "Sets the value of either the percentage (if `type` is set to *percent*) or the constant (if `type` is set to *constant*) corresponding to the lengths of the error bars in the bottom (left) direction for vertical (horizontal) bars",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 10
                }
              ]
            },
            "visible": {
              "description": "Determines whether or not this set of error bars is visible.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean"
                }
              ]
            },
            "width": {
              "description": "Sets the width (in px) of the cross-bar at both ends of the error bars.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "fill": {
          "description": "Sets the area to fill with a solid color. Defaults to *none* unless this trace is stacked, then it gets *tonexty* (*tonextx*) if `orientation` is *v* (*h*) Use with `fillcolor` if not *none*. *tozerox* and *tozeroy* fill to x=0 and y=0 respectively. *tonextx* and *tonexty* fill between the endpoints of this trace and the endpoints of the trace before it, connecting those endpoints with straight lines (to make a stacked area graph); if there is no trace before it, they behave like *tozerox* and *tozeroy*. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape. *tonext* fills the space between two traces if one completely encloses the other (eg consecutive contour lines), and behaves like *toself* if there is no trace before it. *tonext* should not be used if one trace does not enclose the other. Traces in a `stackgroup` will only fill to (or be filled to) other traces in the same group. With multiple `stackgroup`s or some traces stacked and some not, if fill-linked traces are not already consecutive, the later ones will be pushed down in the drawing order.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "none",
                "tozeroy",
                "tozerox",
                "tonexty",
                "tonextx",
                "toself",
                "tonext"
              ],
              "default": "none"
            }
          ]
        },
        "fillcolor": {
          "description": "Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "$ref": "#/$defs/color"
            }
          ]
        },
        "hoverinfo": {
          "description": "Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired.",
          "oneOf": [
            {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "oneOf": [
                    {
                      "type": "string",
                      "enum": [
                        "all",
                        "none",
                        "skip"
                      ]
                    },
                    {
                      "type": "string",
                      "pattern": "^(x|y|z|text|name)(\\+(x|y|z|text|name))*$"
                    }
                  ],
                  "default": "all"
                }
              ]
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "oneOf": [
                      {
                        "type": "string",
                        "enum": [
                          "all",
                          "none",
                          "skip"
                        ]
                      },
                      {
                        "type": "string",
                        "pattern": "^(x|y|z|text|name)(\\+(x|y|z|text|name))*$"
                      }
                    ],
                    "default": "all"
                  }
                ]
              }
            }
          ]
        },
        "hoverinfosrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.",
          "type": "string"
        },
        "hoverlabel": {
          "type": "object",
          "properties": {
            "align": {
              "description": "Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "left",
                        "right",
                        "auto"
                      ],
                      "default": "auto"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "left",
                          "right",
                          "auto"
                        ],
                        "default": "auto"
                      }
                    ]
                  }
                }
              ]
            },
            "alignsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `align`.",
              "type": "string"
            },
            "bgcolor": {
              "description": "Sets the background color of the hover labels for this trace",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "bgcolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.",
              "type": "string"
            },
            "bordercolor": {
              "description": "Sets the border color of the hover labels for this trace.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "bordercolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.",
              "type": "string"
            },
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "colorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `color`.",
                  "type": "string"
                },
                "family": {
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "oneOf": [
                    {
                      "pattern": ".*\\S.*$",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "pattern": ".*\\S.*$",
                        "type": "string"
                      }
                    },
                    {
                      "$ref": "#/$defs/query-string"
                    }
                  ]
                },
                "familysrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `family`.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "oneOf": [
                              {
                                "type": "string",
                                "enum": [
                                  "none"
                                ]
                              },
                              {
                                "type": "string",
                                "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                              }
                            ],
                            "default": "none"
                          }
                        ]
                      }
                    }
                  ]
                },
                "linepositionsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.",
                  "type": "string"
                },
                "shadow": {
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "oneOf": [
                    {
                      "default": "none",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "default": "none",
                        "type": "string"
                      }
                    }
                  ]
                },
                "shadowsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `shadow`.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 1
                          }
                        ]
                      }
                    }
                  ]
                },
                "sizesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `size`.",
                  "type": "string"
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "italic"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "stylesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `style`.",
                  "type": "string"
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "word caps",
                              "upper",
                              "lower"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "textcasesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `textcase`.",
                  "type": "string"
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "small-caps",
                              "all-small-caps",
                              "all-petite-caps",
                              "petite-caps",
                              "unicase"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "variantsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `variant`.",
                  "type": "string"
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 1000,
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "weightsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `weight`.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "namelength": {
              "description": "Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": -1,
                      "default": 15
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "integer",
                        "minimum": -1,
                        "default": 15
                      }
                    ]
                  }
                }
              ]
            },
            "namelengthsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `namelength`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "hovertemplate": {
          "description": "Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". <https://github.com/d3/d3-format/tree/v1.4.5#d3-format> for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format> for details on the date formatting syntax. The variables available in `hovertemplate` are the ones emitted as event data described at this link <https://plotly.com/javascript/plotlyjs-events/#event-data>. Additionally, every attributes that can be specified per-point (the ones that are `arrayOk: true`) are available.  Anything contained in tag `<extra>` is displayed in the secondary box, for example \"<extra>{fullData.name}</extra>\". To hide the secondary box completely, use an empty tag `<extra></extra>`.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "hovertemplatesrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.",
          "type": "string"
        },
        "hovertext": {
          "description": "Sets hover text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "hovertextsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.",
          "type": "string"
        },
        "ids": {
          "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "idssrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `ids`.",
          "type": "string"
        },
        "legend": {
          "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "legend",
              "pattern": "^legend([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "legendgroup": {
          "default": "",
          "description": "Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items.",
          "type": "string"
        },
        "legendgrouptitle": {
          "type": "object",
          "properties": {
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "family": {
                  "pattern": ".*\\S.*$",
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                "shadow": {
                  "default": "none",
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "text": {
              "default": "",
              "description": "Sets the title of the legend group.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "legendrank": {
          "description": "Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": 1000
            }
          ]
        },
        "legendwidth": {
          "description": "Sets the width (in px or fraction) of the legend for this trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0
            }
          ]
        },
        "line": {
          "type": "object",
          "properties": {
            "color": {
              "description": "Sets the line color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "dash": {
              "description": "Sets the style of the lines.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "dash",
                    "dashdot",
                    "dot",
                    "longdash",
                    "longdashdot",
                    "solid"
                  ],
                  "default": "solid"
                }
              ]
            },
            "shape": {
              "description": "Determines the line shape. The values correspond to step-wise line shapes.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "linear",
                    "hv",
                    "vh",
                    "hvh",
                    "vhv"
                  ],
                  "default": "linear"
                }
              ]
            },
            "width": {
              "description": "Sets the line width (in px).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 2
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "marker": {
          "type": "object",
          "properties": {
            "angle": {
              "description": "Sets the marker angle in respect to `angleref`.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": -180,
                      "maximum": 180,
                      "default": 0
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": -180,
                        "maximum": 180,
                        "default": 0
                      }
                    ]
                  }
                }
              ]
            },
            "anglesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `angle`.",
              "type": "string"
            },
            "autocolorscale": {
              "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": true
                }
              ]
            },
            "cauto": {
              "description": "Determines whether or not the color domain is computed with respect to the input data (here in `marker.color`) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if in `marker.color` is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": true
                }
              ]
            },
            "cmax": {
              "description": "Sets the upper bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmin` must be set as well.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": null
                }
              ]
            },
            "cmid": {
              "description": "Sets the mid-point of the color domain by scaling `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color`. Has no effect when `marker.cauto` is `false`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": null
                }
              ]
            },
            "cmin": {
              "description": "Sets the lower bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmax` must be set as well.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": null
                }
              ]
            },
            "color": {
              "description": "Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.cmin` and `marker.cmax` if set.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "coloraxis": {
              "description": "Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "string",
                  "default": null,
                  "pattern": "/^coloraxis([2-9]|[1-9][0-9]+)?$/"
                }
              ]
            },
            "colorbar": {
              "type": "object",
              "properties": {
                "bgcolor": {
                  "description": "Sets the color of padded area.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "bordercolor": {
                  "description": "Sets the axis line color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "borderwidth": {
                  "description": "Sets the width (in px) or the border enclosing this color bar.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 0
                    }
                  ]
                },
                "dtick": {
                  "description": "Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L<f>*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M<n>* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48*"
                },
                "exponentformat": {
                  "description": "Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "none",
                        "e",
                        "E",
                        "power",
                        "SI",
                        "B"
                      ],
                      "default": "B"
                    }
                  ]
                },
                "labelalias": {
                  "default": false,
                  "description": "Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax."
                },
                "len": {
                  "description": "Sets the length of the color bar This measure excludes the padding of both ends. That is, the color bar length is this length minus the padding on both ends.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "lenmode": {
                  "description": "Determines whether this color bar's length (i.e. the measure in the color variation direction) is set in units of plot *fraction* or in *pixels. Use `len` to set the value.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "fraction",
                        "pixels"
                      ],
                      "default": "fraction"
                    }
                  ]
                },
                "minexponent": {
                  "description": "Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 3
                    }
                  ]
                },
                "nticks": {
                  "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 0,
                      "default": 0
                    }
                  ]
                },
                "orientation": {
                  "description": "Sets the orientation of the colorbar.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "h",
                        "v"
                      ],
                      "default": "v"
                    }
                  ]
                },
                "outlinecolor": {
                  "description": "Sets the axis line color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "outlinewidth": {
                  "description": "Sets the width (in px) of the axis line.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "separatethousands": {
                  "description": "If \"true\", even 4-digit integers are separated",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": false
                    }
                  ]
                },
                "showexponent": {
                  "description": "If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "showticklabels": {
                  "description": "Determines whether or not the tick labels are drawn.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                },
                "showtickprefix": {
                  "description": "If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "showticksuffix": {
                  "description": "Same as `showtickprefix` but for tick suffixes.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "thickness": {
                  "description": "Sets the thickness of the color bar This measure excludes the size of the padding, ticks and labels.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 30
                    }
                  ]
                },
                "thicknessmode": {
                  "description": "Determines whether this color bar's thickness (i.e. the measure in the constant color direction) is set in units of plot *fraction* or in *pixels*. Use `thickness` to set the value.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "fraction",
                        "pixels"
                      ],
                      "default": "pixels"
                    }
                  ]
                },
                "tick0": {
                  "description": "Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L<f>* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears."
                },
                "tickangle": {
                  "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": -180,
                      "maximum": 180,
                      "default": "auto"
                    }
                  ]
                },
                "tickcolor": {
                  "description": "Sets the tick color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "tickfont": {
                  "type": "object",
                  "properties": {
                    "color": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    "family": {
                      "pattern": ".*\\S.*$",
                      "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                      "type": "string"
                    },
                    "lineposition": {
                      "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    "shadow": {
                      "default": "none",
                      "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                      "type": "string"
                    },
                    "size": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    "style": {
                      "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "textcase": {
                      "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "variant": {
                      "description": "Sets the variant of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "weight": {
                      "description": "Sets the weight (or boldness) of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    }
                  },
                  "additionalProperties": false
                },
                "tickformat": {
                  "default": "",
                  "description": "Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*",
                  "type": "string"
                },
                "tickformatstops": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "dtickrange": {
                        "description": "range [*min*, *max*], where *min*, *max* - dtick values which describe some zoom level, it is possible to omit *min* or *max* value by passing *null*",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "array",
                            "items": {},
                            "minItems": 2,
                            "maxItems": 2
                          }
                        ]
                      },
                      "enabled": {
                        "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "boolean",
                            "default": true
                          }
                        ]
                      },
                      "name": {
                        "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.",
                        "type": "string"
                      },
                      "templateitemname": {
                        "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.",
                        "type": "string"
                      },
                      "value": {
                        "default": "",
                        "description": "string - dtickformat for described zoom level, the same as *tickformat*",
                        "type": "string"
                      }
                    },
                    "additionalProperties": false
                  },
                  "minItems": 1
                },
                "ticklabeloverflow": {
                  "description": "Determines how we handle tick labels that would overflow either the graph div or the domain of the axis. The default value for inside tick labels is *hide past domain*. In other cases the default is *hide past div*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "allow",
                        "hide past div",
                        "hide past domain"
                      ]
                    }
                  ]
                },
                "ticklabelposition": {
                  "description": "Determines where tick labels are drawn relative to the ticks. Left and right options are used when `orientation` is *h*, top and bottom when `orientation` is *v*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "outside",
                        "inside",
                        "outside top",
                        "inside top",
                        "outside left",
                        "inside left",
                        "outside right",
                        "inside right",
                        "outside bottom",
                        "inside bottom"
                      ],
                      "default": "outside"
                    }
                  ]
                },
                "ticklabelstep": {
                  "description": "Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "default": 1
                    }
                  ]
                },
                "ticklen": {
                  "description": "Sets the tick length (in px).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 5
                    }
                  ]
                },
                "tickmode": {
                  "description": "Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "auto",
                        "linear",
                        "array"
                      ]
                    }
                  ]
                },
                "tickprefix": {
                  "default": "",
                  "description": "Sets a tick label prefix.",
                  "type": "string"
                },
                "ticks": {
                  "description": "Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "outside",
                        "inside",
                        ""
                      ],
                      "default": ""
                    }
                  ]
                },
                "ticksuffix": {
                  "default": "",
                  "description": "Sets a tick label suffix.",
                  "type": "string"
                },
                "ticktext": {
                  "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "string"
                          }
                        ]
                      }
                    }
                  ]
                },
                "ticktextsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.",
                  "type": "string"
                },
                "tickvals": {
                  "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "string"
                          }
                        ]
                      }
                    }
                  ]
                },
                "tickvalssrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.",
                  "type": "string"
                },
                "tickwidth": {
                  "description": "Sets the tick width (in px).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "title": {
                  "type": "object",
                  "properties": {
                    "font": {
                      "type": "object",
                      "properties": {
                        "color": {
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "$ref": "#/$defs/color"
                            }
                          ]
                        },
                        "family": {
                          "pattern": ".*\\S.*$",
                          "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                          "type": "string"
                        },
                        "lineposition": {
                          "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "oneOf": [
                                {
                                  "type": "string",
                                  "enum": [
                                    "none"
                                  ]
                                },
                                {
                                  "type": "string",
                                  "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                                }
                              ],
                              "default": "none"
                            }
                          ]
                        },
                        "shadow": {
                          "default": "none",
                          "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                          "type": "string"
                        },
                        "size": {
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "type": "number",
                              "minimum": 1
                            }
                          ]
                        },
                        "style": {
                          "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "italic"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "textcase": {
                          "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "word caps",
                                "upper",
                                "lower"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "variant": {
                          "description": "Sets the variant of the font.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "small-caps",
                                "all-small-caps",
                                "all-petite-caps",
                                "petite-caps",
                                "unicase"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "weight": {
                          "description": "Sets the weight (or boldness) of the font.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "type": "integer",
                              "minimum": 1,
                              "maximum": 1000,
                              "default": "normal"
                            }
                          ]
                        }
                      },
                      "additionalProperties": false
                    },
                    "side": {
                      "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and  defaults to *right* when `orientation` if *h*.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "right",
                            "top",
                            "bottom"
                          ]
                        }
                      ]
                    },
                    "text": {
                      "description": "Sets the title of the color bar.",
                      "type": "string"
                    }
                  },
                  "additionalProperties": false
                },
                "x": {
                  "description": "Sets the x position with respect to `xref` of the color bar (in plot fraction). When `xref` is *paper*, defaults to 1.02 when `orientation` is *v* and 0.5 when `orientation` is *h*. When `xref` is *container*, defaults to *1* when `orientation` is *v* and 0.5 when `orientation` is *h*. Must be between *0* and *1* if `xref` is *container* and between *-2* and *3* if `xref` is *paper*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number"
                    }
                  ]
                },
                "xanchor": {
                  "description": "Sets this color bar's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the color bar. Defaults to *left* when `orientation` is *v* and *center* when `orientation` is *h*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "left",
                        "center",
                        "right"
                      ]
                    }
                  ]
                },
                "xpad": {
                  "description": "Sets the amount of padding (in px) along the x direction.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 10
                    }
                  ]
                },
                "xref": {
                  "description": "Sets the container `x` refers to. *container* spans the entire `width` of the plot. *paper* refers to the width of the plotting area only.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "container",
                        "paper"
                      ],
                      "default": "paper"
                    }
                  ]
                },
                "y": {
                  "description": "Sets the y position with respect to `yref` of the color bar (in plot fraction). When `yref` is *paper*, defaults to 0.5 when `orientation` is *v* and 1.02 when `orientation` is *h*. When `yref` is *container*, defaults to 0.5 when `orientation` is *v* and 1 when `orientation` is *h*. Must be between *0* and *1* if `yref` is *container* and between *-2* and *3* if `yref` is *paper*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number"
                    }
                  ]
                },
                "yanchor": {
                  "description": "Sets this color bar's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the color bar. Defaults to *middle* when `orientation` is *v* and *bottom* when `orientation` is *h*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "top",
                        "middle",
                        "bottom"
                      ]
                    }
                  ]
                },
                "ypad": {
                  "description": "Sets the amount of padding (in px) along the y direction.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 10
                    }
                  ]
                },
                "yref": {
                  "description": "Sets the container `y` refers to. *container* spans the entire `height` of the plot. *paper* refers to the height of the plotting area only.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "container",
                        "paper"
                      ],
                      "default": "paper"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "colorscale": {
              "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/colorscale",
                  "default": null
                }
              ]
            },
            "colorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `color`.",
              "type": "string"
            },
            "line": {
              "type": "object",
              "properties": {
                "autocolorscale": {
                  "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.line.colorscale`. Has an effect only if in `marker.line.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                },
                "cauto": {
                  "description": "Determines whether or not the color domain is computed with respect to the input data (here in `marker.line.color`) or the bounds set in `marker.line.cmin` and `marker.line.cmax` Has an effect only if in `marker.line.color` is set to a numerical array. Defaults to `false` when `marker.line.cmin` and `marker.line.cmax` are set by the user.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                },
                "cmax": {
                  "description": "Sets the upper bound of the color domain. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color` and if set, `marker.line.cmin` must be set as well.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "default": null
                    }
                  ]
                },
                "cmid": {
                  "description": "Sets the mid-point of the color domain by scaling `marker.line.cmin` and/or `marker.line.cmax` to be equidistant to this point. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color`. Has no effect when `marker.line.cauto` is `false`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "default": null
                    }
                  ]
                },
                "cmin": {
                  "description": "Sets the lower bound of the color domain. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color` and if set, `marker.line.cmax` must be set as well.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "default": null
                    }
                  ]
                },
                "color": {
                  "description": "Sets the marker.line color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.line.cmin` and `marker.line.cmax` if set.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "coloraxis": {
                  "description": "Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "string",
                      "default": null,
                      "pattern": "/^coloraxis([2-9]|[1-9][0-9]+)?$/"
                    }
                  ]
                },
                "colorscale": {
                  "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/colorscale",
                      "default": null
                    }
                  ]
                },
                "colorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `color`.",
                  "type": "string"
                },
                "reversescale": {
                  "description": "Reverses the color mapping if true. Has an effect only if in `marker.line.color` is set to a numerical array. If true, `marker.line.cmin` will correspond to the last color in the array and `marker.line.cmax` will correspond to the first color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": false
                    }
                  ]
                },
                "width": {
                  "description": "Sets the width (in px) of the lines bounding the marker points.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 0
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 0
                          }
                        ]
                      }
                    }
                  ]
                },
                "widthsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `width`.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "opacity": {
              "description": "Sets the marker opacity.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 1
                      }
                    ]
                  }
                }
              ]
            },
            "opacitysrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `opacity`.",
              "type": "string"
            },
            "reversescale": {
              "description": "Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            },
            "showscale": {
              "description": "Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            },
            "size": {
              "description": "Sets the marker size (in px).",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 6
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 0,
                        "default": 6
                      }
                    ]
                  }
                }
              ]
            },
            "sizemin": {
              "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the minimum size (in px) of the rendered marker points.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "sizemode": {
              "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the rule for which the data in `size` is converted to pixels.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "diameter",
                    "area"
                  ],
                  "default": "diameter"
                }
              ]
            },
            "sizeref": {
              "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the scale factor used to determine the rendered size of marker points. Use with `sizemin` and `sizemode`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": 1
                }
              ]
            },
            "sizesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `size`.",
              "type": "string"
            },
            "symbol": {
              "description": "Sets the marker symbol type. Adding 100 is equivalent to appending *-open* to a symbol name. Adding 200 is equivalent to appending *-dot* to a symbol name. Adding 300 is equivalent to appending *-open-dot* or *dot-open* to a symbol name.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        0,
                        "0",
                        "circle",
                        100,
                        "100",
                        "circle-open",
                        200,
                        "200",
                        "circle-dot",
                        300,
                        "300",
                        "circle-open-dot",
                        1,
                        "1",
                        "square",
                        101,
                        "101",
                        "square-open",
                        201,
                        "201",
                        "square-dot",
                        301,
                        "301",
                        "square-open-dot",
                        2,
                        "2",
                        "diamond",
                        102,
                        "102",
                        "diamond-open",
                        202,
                        "202",
                        "diamond-dot",
                        302,
                        "302",
                        "diamond-open-dot",
                        3,
                        "3",
                        "cross",
                        103,
                        "103",
                        "cross-open",
                        203,
                        "203",
                        "cross-dot",
                        303,
                        "303",
                        "cross-open-dot",
                        4,
                        "4",
                        "x",
                        104,
                        "104",
                        "x-open",
                        204,
                        "204",
                        "x-dot",
                        304,
                        "304",
                        "x-open-dot",
                        5,
                        "5",
                        "triangle-up",
                        105,
                        "105",
                        "triangle-up-open",
                        205,
                        "205",
                        "triangle-up-dot",
                        305,
                        "305",
                        "triangle-up-open-dot",
                        6,
                        "6",
                        "triangle-down",
                        106,
                        "106",
                        "triangle-down-open",
                        206,
                        "206",
                        "triangle-down-dot",
                        306,
                        "306",
                        "triangle-down-open-dot",
                        7,
                        "7",
                        "triangle-left",
                        107,
                        "107",
                        "triangle-left-open",
                        207,
                        "207",
                        "triangle-left-dot",
                        307,
                        "307",
                        "triangle-left-open-dot",
                        8,
                        "8",
                        "triangle-right",
                        108,
                        "108",
                        "triangle-right-open",
                        208,
                        "208",
                        "triangle-right-dot",
                        308,
                        "308",
                        "triangle-right-open-dot",
                        9,
                        "9",
                        "triangle-ne",
                        109,
                        "109",
                        "triangle-ne-open",
                        209,
                        "209",
                        "triangle-ne-dot",
                        309,
                        "309",
                        "triangle-ne-open-dot",
                        10,
                        "10",
                        "triangle-se",
                        110,
                        "110",
                        "triangle-se-open",
                        210,
                        "210",
                        "triangle-se-dot",
                        310,
                        "310",
                        "triangle-se-open-dot",
                        11,
                        "11",
                        "triangle-sw",
                        111,
                        "111",
                        "triangle-sw-open",
                        211,
                        "211",
                        "triangle-sw-dot",
                        311,
                        "311",
                        "triangle-sw-open-dot",
                        12,
                        "12",
                        "triangle-nw",
                        112,
                        "112",
                        "triangle-nw-open",
                        212,
                        "212",
                        "triangle-nw-dot",
                        312,
                        "312",
                        "triangle-nw-open-dot",
                        13,
                        "13",
                        "pentagon",
                        113,
                        "113",
                        "pentagon-open",
                        213,
                        "213",
                        "pentagon-dot",
                        313,
                        "313",
                        "pentagon-open-dot",
                        14,
                        "14",
                        "hexagon",
                        114,
                        "114",
                        "hexagon-open",
                        214,
                        "214",
                        "hexagon-dot",
                        314,
                        "314",
                        "hexagon-open-dot",
                        15,
                        "15",
                        "hexagon2",
                        115,
                        "115",
                        "hexagon2-open",
                        215,
                        "215",
                        "hexagon2-dot",
                        315,
                        "315",
                        "hexagon2-open-dot",
                        16,
                        "16",
                        "octagon",
                        116,
                        "116",
                        "octagon-open",
                        216,
                        "216",
                        "octagon-dot",
                        316,
                        "316",
                        "octagon-open-dot",
                        17,
                        "17",
                        "star",
                        117,
                        "117",
                        "star-open",
                        217,
                        "217",
                        "star-dot",
                        317,
                        "317",
                        "star-open-dot",
                        18,
                        "18",
                        "hexagram",
                        118,
                        "118",
                        "hexagram-open",
                        218,
                        "218",
                        "hexagram-dot",
                        318,
                        "318",
                        "hexagram-open-dot",
                        19,
                        "19",
                        "star-triangle-up",
                        119,
                        "119",
                        "star-triangle-up-open",
                        219,
                        "219",
                        "star-triangle-up-dot",
                        319,
                        "319",
                        "star-triangle-up-open-dot",
                        20,
                        "20",
                        "star-triangle-down",
                        120,
                        "120",
                        "star-triangle-down-open",
                        220,
                        "220",
                        "star-triangle-down-dot",
                        320,
                        "320",
                        "star-triangle-down-open-dot",
                        21,
                        "21",
                        "star-square",
                        121,
                        "121",
                        "star-square-open",
                        221,
                        "221",
                        "star-square-dot",
                        321,
                        "321",
                        "star-square-open-dot",
                        22,
                        "22",
                        "star-diamond",
                        122,
                        "122",
                        "star-diamond-open",
                        222,
                        "222",
                        "star-diamond-dot",
                        322,
                        "322",
                        "star-diamond-open-dot",
                        23,
                        "23",
                        "diamond-tall",
                        123,
                        "123",
                        "diamond-tall-open",
                        223,
                        "223",
                        "diamond-tall-dot",
                        323,
                        "323",
                        "diamond-tall-open-dot",
                        24,
                        "24",
                        "diamond-wide",
                        124,
                        "124",
                        "diamond-wide-open",
                        224,
                        "224",
                        "diamond-wide-dot",
                        324,
                        "324",
                        "diamond-wide-open-dot",
                        25,
                        "25",
                        "hourglass",
                        125,
                        "125",
                        "hourglass-open",
                        26,
                        "26",
                        "bowtie",
                        126,
                        "126",
                        "bowtie-open",
                        27,
                        "27",
                        "circle-cross",
                        127,
                        "127",
                        "circle-cross-open",
                        28,
                        "28",
                        "circle-x",
                        128,
                        "128",
                        "circle-x-open",
                        29,
                        "29",
                        "square-cross",
                        129,
                        "129",
                        "square-cross-open",
                        30,
                        "30",
                        "square-x",
                        130,
                        "130",
                        "square-x-open",
                        31,
                        "31",
                        "diamond-cross",
                        131,
                        "131",
                        "diamond-cross-open",
                        32,
                        "32",
                        "diamond-x",
                        132,
                        "132",
                        "diamond-x-open",
                        33,
                        "33",
                        "cross-thin",
                        133,
                        "133",
                        "cross-thin-open",
                        34,
                        "34",
                        "x-thin",
                        134,
                        "134",
                        "x-thin-open",
                        35,
                        "35",
                        "asterisk",
                        135,
                        "135",
                        "asterisk-open",
                        36,
                        "36",
                        "hash",
                        136,
                        "136",
                        "hash-open",
                        236,
                        "236",
                        "hash-dot",
                        336,
                        "336",
                        "hash-open-dot",
                        37,
                        "37",
                        "y-up",
                        137,
                        "137",
                        "y-up-open",
                        38,
                        "38",
                        "y-down",
                        138,
                        "138",
                        "y-down-open",
                        39,
                        "39",
                        "y-left",
                        139,
                        "139",
                        "y-left-open",
                        40,
                        "40",
                        "y-right",
                        140,
                        "140",
                        "y-right-open",
                        41,
                        "41",
                        "line-ew",
                        141,
                        "141",
                        "line-ew-open",
                        42,
                        "42",
                        "line-ns",
                        142,
                        "142",
                        "line-ns-open",
                        43,
                        "43",
                        "line-ne",
                        143,
                        "143",
                        "line-ne-open",
                        44,
                        "44",
                        "line-nw",
                        144,
                        "144",
                        "line-nw-open",
                        45,
                        "45",
                        "arrow-up",
                        145,
                        "145",
                        "arrow-up-open",
                        46,
                        "46",
                        "arrow-down",
                        146,
                        "146",
                        "arrow-down-open",
                        47,
                        "47",
                        "arrow-left",
                        147,
                        "147",
                        "arrow-left-open",
                        48,
                        "48",
                        "arrow-right",
                        148,
                        "148",
                        "arrow-right-open",
                        49,
                        "49",
                        "arrow-bar-up",
                        149,
                        "149",
                        "arrow-bar-up-open",
                        50,
                        "50",
                        "arrow-bar-down",
                        150,
                        "150",
                        "arrow-bar-down-open",
                        51,
                        "51",
                        "arrow-bar-left",
                        151,
                        "151",
                        "arrow-bar-left-open",
                        52,
                        "52",
                        "arrow-bar-right",
                        152,
                        "152",
                        "arrow-bar-right-open",
                        53,
                        "53",
                        "arrow",
                        153,
                        "153",
                        "arrow-open",
                        54,
                        "54",
                        "arrow-wide",
                        154,
                        "154",
                        "arrow-wide-open"
                      ],
                      "default": "circle"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          0,
                          "0",
                          "circle",
                          100,
                          "100",
                          "circle-open",
                          200,
                          "200",
                          "circle-dot",
                          300,
                          "300",
                          "circle-open-dot",
                          1,
                          "1",
                          "square",
                          101,
                          "101",
                          "square-open",
                          201,
                          "201",
                          "square-dot",
                          301,
                          "301",
                          "square-open-dot",
                          2,
                          "2",
                          "diamond",
                          102,
                          "102",
                          "diamond-open",
                          202,
                          "202",
                          "diamond-dot",
                          302,
                          "302",
                          "diamond-open-dot",
                          3,
                          "3",
                          "cross",
                          103,
                          "103",
                          "cross-open",
                          203,
                          "203",
                          "cross-dot",
                          303,
                          "303",
                          "cross-open-dot",
                          4,
                          "4",
                          "x",
                          104,
                          "104",
                          "x-open",
                          204,
                          "204",
                          "x-dot",
                          304,
                          "304",
                          "x-open-dot",
                          5,
                          "5",
                          "triangle-up",
                          105,
                          "105",
                          "triangle-up-open",
                          205,
                          "205",
                          "triangle-up-dot",
                          305,
                          "305",
                          "triangle-up-open-dot",
                          6,
                          "6",
                          "triangle-down",
                          106,
                          "106",
                          "triangle-down-open",
                          206,
                          "206",
                          "triangle-down-dot",
                          306,
                          "306",
                          "triangle-down-open-dot",
                          7,
                          "7",
                          "triangle-left",
                          107,
                          "107",
                          "triangle-left-open",
                          207,
                          "207",
                          "triangle-left-dot",
                          307,
                          "307",
                          "triangle-left-open-dot",
                          8,
                          "8",
                          "triangle-right",
                          108,
                          "108",
                          "triangle-right-open",
                          208,
                          "208",
                          "triangle-right-dot",
                          308,
                          "308",
                          "triangle-right-open-dot",
                          9,
                          "9",
                          "triangle-ne",
                          109,
                          "109",
                          "triangle-ne-open",
                          209,
                          "209",
                          "triangle-ne-dot",
                          309,
                          "309",
                          "triangle-ne-open-dot",
                          10,
                          "10",
                          "triangle-se",
                          110,
                          "110",
                          "triangle-se-open",
                          210,
                          "210",
                          "triangle-se-dot",
                          310,
                          "310",
                          "triangle-se-open-dot",
                          11,
                          "11",
                          "triangle-sw",
                          111,
                          "111",
                          "triangle-sw-open",
                          211,
                          "211",
                          "triangle-sw-dot",
                          311,
                          "311",
                          "triangle-sw-open-dot",
                          12,
                          "12",
                          "triangle-nw",
                          112,
                          "112",
                          "triangle-nw-open",
                          212,
                          "212",
                          "triangle-nw-dot",
                          312,
                          "312",
                          "triangle-nw-open-dot",
                          13,
                          "13",
                          "pentagon",
                          113,
                          "113",
                          "pentagon-open",
                          213,
                          "213",
                          "pentagon-dot",
                          313,
                          "313",
                          "pentagon-open-dot",
                          14,
                          "14",
                          "hexagon",
                          114,
                          "114",
                          "hexagon-open",
                          214,
                          "214",
                          "hexagon-dot",
                          314,
                          "314",
                          "hexagon-open-dot",
                          15,
                          "15",
                          "hexagon2",
                          115,
                          "115",
                          "hexagon2-open",
                          215,
                          "215",
                          "hexagon2-dot",
                          315,
                          "315",
                          "hexagon2-open-dot",
                          16,
                          "16",
                          "octagon",
                          116,
                          "116",
                          "octagon-open",
                          216,
                          "216",
                          "octagon-dot",
                          316,
                          "316",
                          "octagon-open-dot",
                          17,
                          "17",
                          "star",
                          117,
                          "117",
                          "star-open",
                          217,
                          "217",
                          "star-dot",
                          317,
                          "317",
                          "star-open-dot",
                          18,
                          "18",
                          "hexagram",
                          118,
                          "118",
                          "hexagram-open",
                          218,
                          "218",
                          "hexagram-dot",
                          318,
                          "318",
                          "hexagram-open-dot",
                          19,
                          "19",
                          "star-triangle-up",
                          119,
                          "119",
                          "star-triangle-up-open",
                          219,
                          "219",
                          "star-triangle-up-dot",
                          319,
                          "319",
                          "star-triangle-up-open-dot",
                          20,
                          "20",
                          "star-triangle-down",
                          120,
                          "120",
                          "star-triangle-down-open",
                          220,
                          "220",
                          "star-triangle-down-dot",
                          320,
                          "320",
                          "star-triangle-down-open-dot",
                          21,
                          "21",
                          "star-square",
                          121,
                          "121",
                          "star-square-open",
                          221,
                          "221",
                          "star-square-dot",
                          321,
                          "321",
                          "star-square-open-dot",
                          22,
                          "22",
                          "star-diamond",
                          122,
                          "122",
                          "star-diamond-open",
                          222,
                          "222",
                          "star-diamond-dot",
                          322,
                          "322",
                          "star-diamond-open-dot",
                          23,
                          "23",
                          "diamond-tall",
                          123,
                          "123",
                          "diamond-tall-open",
                          223,
                          "223",
                          "diamond-tall-dot",
                          323,
                          "323",
                          "diamond-tall-open-dot",
                          24,
                          "24",
                          "diamond-wide",
                          124,
                          "124",
                          "diamond-wide-open",
                          224,
                          "224",
                          "diamond-wide-dot",
                          324,
                          "324",
                          "diamond-wide-open-dot",
                          25,
                          "25",
                          "hourglass",
                          125,
                          "125",
                          "hourglass-open",
                          26,
                          "26",
                          "bowtie",
                          126,
                          "126",
                          "bowtie-open",
                          27,
                          "27",
                          "circle-cross",
                          127,
                          "127",
                          "circle-cross-open",
                          28,
                          "28",
                          "circle-x",
                          128,
                          "128",
                          "circle-x-open",
                          29,
                          "29",
                          "square-cross",
                          129,
                          "129",
                          "square-cross-open",
                          30,
                          "30",
                          "square-x",
                          130,
                          "130",
                          "square-x-open",
                          31,
                          "31",
                          "diamond-cross",
                          131,
                          "131",
                          "diamond-cross-open",
                          32,
                          "32",
                          "diamond-x",
                          132,
                          "132",
                          "diamond-x-open",
                          33,
                          "33",
                          "cross-thin",
                          133,
                          "133",
                          "cross-thin-open",
                          34,
                          "34",
                          "x-thin",
                          134,
                          "134",
                          "x-thin-open",
                          35,
                          "35",
                          "asterisk",
                          135,
                          "135",
                          "asterisk-open",
                          36,
                          "36",
                          "hash",
                          136,
                          "136",
                          "hash-open",
                          236,
                          "236",
                          "hash-dot",
                          336,
                          "336",
                          "hash-open-dot",
                          37,
                          "37",
                          "y-up",
                          137,
                          "137",
                          "y-up-open",
                          38,
                          "38",
                          "y-down",
                          138,
                          "138",
                          "y-down-open",
                          39,
                          "39",
                          "y-left",
                          139,
                          "139",
                          "y-left-open",
                          40,
                          "40",
                          "y-right",
                          140,
                          "140",
                          "y-right-open",
                          41,
                          "41",
                          "line-ew",
                          141,
                          "141",
                          "line-ew-open",
                          42,
                          "42",
                          "line-ns",
                          142,
                          "142",
                          "line-ns-open",
                          43,
                          "43",
                          "line-ne",
                          143,
                          "143",
                          "line-ne-open",
                          44,
                          "44",
                          "line-nw",
                          144,
                          "144",
                          "line-nw-open",
                          45,
                          "45",
                          "arrow-up",
                          145,
                          "145",
                          "arrow-up-open",
                          46,
                          "46",
                          "arrow-down",
                          146,
                          "146",
                          "arrow-down-open",
                          47,
                          "47",
                          "arrow-left",
                          147,
                          "147",
                          "arrow-left-open",
                          48,
                          "48",
                          "arrow-right",
                          148,
                          "148",
                          "arrow-right-open",
                          49,
                          "49",
                          "arrow-bar-up",
                          149,
                          "149",
                          "arrow-bar-up-open",
                          50,
                          "50",
                          "arrow-bar-down",
                          150,
                          "150",
                          "arrow-bar-down-open",
                          51,
                          "51",
                          "arrow-bar-left",
                          151,
                          "151",
                          "arrow-bar-left-open",
                          52,
                          "52",
                          "arrow-bar-right",
                          152,
                          "152",
                          "arrow-bar-right-open",
                          53,
                          "53",
                          "arrow",
                          153,
                          "153",
                          "arrow-open",
                          54,
                          "54",
                          "arrow-wide",
                          154,
                          "154",
                          "arrow-wide-open"
                        ],
                        "default": "circle"
                      }
                    ]
                  }
                }
              ]
            },
            "symbolsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `symbol`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "metasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `meta`.",
          "type": "string"
        },
        "mode": {
          "description": "Determines the drawing mode for this scatter trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "oneOf": [
                {
                  "type": "string",
                  "enum": [
                    "none"
                  ]
                },
                {
                  "type": "string",
                  "pattern": "^(lines|markers|text)(\\+(lines|markers|text))*$"
                }
              ]
            }
          ]
        },
        "name": {
          "description": "Sets the trace name. The trace name appears as the legend item and on hover.",
          "type": "string"
        },
        "opacity": {
          "description": "Sets the opacity of the trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0,
              "maximum": 1,
              "default": 1
            }
          ]
        },
        "selected": {
          "type": "object",
          "properties": {
            "marker": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the marker color of selected points.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "opacity": {
                  "description": "Sets the marker opacity of selected points.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1
                    }
                  ]
                },
                "size": {
                  "description": "Sets the marker size of selected points.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "textfont": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the text font color of selected points.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                }
              },
              "additionalProperties": false
            }
          },
          "additionalProperties": false
        },
        "selectedpoints": {
          "description": "Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect."
        },
        "showlegend": {
          "description": "Determines whether or not an item corresponding to this trace is shown in the legend.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "stream": {
          "type": "object",
          "properties": {
            "maxpoints": {
              "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 10000,
                  "default": 500
                }
              ]
            },
            "token": {
              "pattern": ".*\\S.*$",
              "description": "The stream id number links a data trace on a plot with a stream. See <https://chart-studio.plotly.com/settings> for more details.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "text": {
          "description": "Sets text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "textfont": {
          "type": "object",
          "properties": {
            "color": {
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "colorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `color`.",
              "type": "string"
            },
            "family": {
              "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
              "oneOf": [
                {
                  "pattern": ".*\\S.*$",
                  "type": "string"
                },
                {
                  "type": "array",
                  "items": {
                    "pattern": ".*\\S.*$",
                    "type": "string"
                  }
                },
                {
                  "$ref": "#/$defs/query-string"
                }
              ]
            },
            "familysrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `family`.",
              "type": "string"
            },
            "size": {
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 1
                      }
                    ]
                  }
                }
              ]
            },
            "sizesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `size`.",
              "type": "string"
            },
            "style": {
              "description": "Sets whether a font should be styled with a normal or italic face from its family.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "italic"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "stylesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `style`.",
              "type": "string"
            },
            "variant": {
              "description": "Sets the variant of the font.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "small-caps"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "variantsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `variant`.",
              "type": "string"
            },
            "weight": {
              "description": "Sets the weight (or boldness) of the font.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "bold"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "bold"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "weightsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `weight`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "textposition": {
          "description": "Sets the positions of the `text` elements with respects to the (x,y) coordinates.",
          "oneOf": [
            {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "top left",
                    "top center",
                    "top right",
                    "middle left",
                    "middle center",
                    "middle right",
                    "bottom left",
                    "bottom center",
                    "bottom right"
                  ],
                  "default": "middle center"
                }
              ]
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "enum": [
                      "top left",
                      "top center",
                      "top right",
                      "middle left",
                      "middle center",
                      "middle right",
                      "bottom left",
                      "bottom center",
                      "bottom right"
                    ],
                    "default": "middle center"
                  }
                ]
              }
            }
          ]
        },
        "textpositionsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `textposition`.",
          "type": "string"
        },
        "textsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `text`.",
          "type": "string"
        },
        "texttemplate": {
          "description": "Template string used for rendering the information text that appear on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". <https://github.com/d3/d3-format/tree/v1.4.5#d3-format> for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format> for details on the date formatting syntax. Every attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. ",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "texttemplatesrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.",
          "type": "string"
        },
        "uid": {
          "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.",
          "type": "string"
        },
        "uirevision": {
          "description": "Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves."
        },
        "unselected": {
          "type": "object",
          "properties": {
            "marker": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the marker color of unselected points, applied only when a selection exists.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "opacity": {
                  "description": "Sets the marker opacity of unselected points, applied only when a selection exists.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1
                    }
                  ]
                },
                "size": {
                  "description": "Sets the marker size of unselected points, applied only when a selection exists.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "textfont": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the text font color of unselected points, applied only when a selection exists.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                }
              },
              "additionalProperties": false
            }
          },
          "additionalProperties": false
        },
        "visible": {
          "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                true,
                false,
                "legendonly"
              ],
              "default": true
            }
          ]
        },
        "x": {
          "description": "Sets the x coordinates.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "x0": {
          "default": 0,
          "description": "Alternate to `x`. Builds a linear space of x coordinates. Use with `dx` where `x0` is the starting coordinate and `dx` the step."
        },
        "xaxis": {
          "description": "Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "x",
              "pattern": "^x([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "xcalendar": {
          "description": "Sets the calendar system to use with `x` date data.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "chinese",
                "coptic",
                "discworld",
                "ethiopian",
                "gregorian",
                "hebrew",
                "islamic",
                "jalali",
                "julian",
                "mayan",
                "nanakshahi",
                "nepali",
                "persian",
                "taiwan",
                "thai",
                "ummalqura"
              ],
              "default": "gregorian"
            }
          ]
        },
        "xhoverformat": {
          "default": "",
          "description": "Sets the hover text formatting rulefor `x`  using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.",
          "type": "string"
        },
        "xperiod": {
          "default": 0,
          "description": "Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M<n>* on the x axis. Special values in the form of *M<n>* could be used to declare the number of months. In this case `n` must be a positive integer."
        },
        "xperiod0": {
          "description": "Only relevant when the axis `type` is *date*. Sets the base for period positioning in milliseconds or date string on the x0 axis. When `x0period` is round number of weeks, the `x0period0` by default would be on a Sunday i.e. 2000-01-02, otherwise it would be at 2000-01-01."
        },
        "xperiodalignment": {
          "description": "Only relevant when the axis `type` is *date*. Sets the alignment of data points on the x axis.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "start",
                "middle",
                "end"
              ],
              "default": "middle"
            }
          ]
        },
        "xsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `x`.",
          "type": "string"
        },
        "y": {
          "description": "Sets the y coordinates.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "y0": {
          "default": 0,
          "description": "Alternate to `y`. Builds a linear space of y coordinates. Use with `dy` where `y0` is the starting coordinate and `dy` the step."
        },
        "yaxis": {
          "description": "Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "y",
              "pattern": "^y([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "ycalendar": {
          "description": "Sets the calendar system to use with `y` date data.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "chinese",
                "coptic",
                "discworld",
                "ethiopian",
                "gregorian",
                "hebrew",
                "islamic",
                "jalali",
                "julian",
                "mayan",
                "nanakshahi",
                "nepali",
                "persian",
                "taiwan",
                "thai",
                "ummalqura"
              ],
              "default": "gregorian"
            }
          ]
        },
        "yhoverformat": {
          "default": "",
          "description": "Sets the hover text formatting rulefor `y`  using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.",
          "type": "string"
        },
        "yperiod": {
          "default": 0,
          "description": "Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M<n>* on the y axis. Special values in the form of *M<n>* could be used to declare the number of months. In this case `n` must be a positive integer."
        },
        "yperiod0": {
          "description": "Only relevant when the axis `type` is *date*. Sets the base for period positioning in milliseconds or date string on the y0 axis. When `y0period` is round number of weeks, the `y0period0` by default would be on a Sunday i.e. 2000-01-02, otherwise it would be at 2000-01-01."
        },
        "yperiodalignment": {
          "description": "Only relevant when the axis `type` is *date*. Sets the alignment of data points on the y axis.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "start",
                "middle",
                "end"
              ],
              "default": "middle"
            }
          ]
        },
        "ysrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `y`.",
          "type": "string"
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false
    },
    "Scattermap": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "$id": "https://visivo.io/trace-properties/schema",
      "description": "A schema to validate plotly trace properties",
      "type": "object",
      "properties": {
        "type": {
          "const": "scattermap"
        },
        "below": {
          "description": "Determines if this scattermap trace's layers are to be inserted before the layer with the specified ID. By default, scattermap layers are inserted above all the base layers. To place the scattermap layers above every other layer, set `below` to *''*.",
          "type": "string"
        },
        "cluster": {
          "type": "object",
          "properties": {
            "color": {
              "description": "Sets the color for each cluster step.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "colorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `color`.",
              "type": "string"
            },
            "enabled": {
              "description": "Determines whether clustering is enabled or disabled.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean"
                }
              ]
            },
            "maxzoom": {
              "description": "Sets the maximum zoom level. At zoom levels equal to or greater than this, points will never be clustered.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 24,
                  "default": 24
                }
              ]
            },
            "opacity": {
              "description": "Sets the marker opacity.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1,
                      "default": 1
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 1,
                        "default": 1
                      }
                    ]
                  }
                }
              ]
            },
            "opacitysrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `opacity`.",
              "type": "string"
            },
            "size": {
              "description": "Sets the size for each cluster step.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 20
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 0,
                        "default": 20
                      }
                    ]
                  }
                }
              ]
            },
            "sizesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `size`.",
              "type": "string"
            },
            "step": {
              "description": "Sets how many points it takes to create a cluster or advance to the next cluster step. Use this in conjunction with arrays for `size` and / or `color`. If an integer, steps start at multiples of this number. If an array, each step extends from the given value until one less than the next value.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": -1,
                      "default": -1
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": -1,
                        "default": -1
                      }
                    ]
                  }
                }
              ]
            },
            "stepsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `step`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "connectgaps": {
          "description": "Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": false
            }
          ]
        },
        "customdata": {
          "description": "Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "customdatasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `customdata`.",
          "type": "string"
        },
        "fill": {
          "description": "Sets the area to fill with a solid color. Use with `fillcolor` if not *none*. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "none",
                "toself"
              ],
              "default": "none"
            }
          ]
        },
        "fillcolor": {
          "description": "Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "$ref": "#/$defs/color"
            }
          ]
        },
        "hoverinfo": {
          "description": "Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired.",
          "oneOf": [
            {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "oneOf": [
                    {
                      "type": "string",
                      "enum": [
                        "all",
                        "none",
                        "skip"
                      ]
                    },
                    {
                      "type": "string",
                      "pattern": "^(lon|lat|text|name)(\\+(lon|lat|text|name))*$"
                    }
                  ],
                  "default": "all"
                }
              ]
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "oneOf": [
                      {
                        "type": "string",
                        "enum": [
                          "all",
                          "none",
                          "skip"
                        ]
                      },
                      {
                        "type": "string",
                        "pattern": "^(lon|lat|text|name)(\\+(lon|lat|text|name))*$"
                      }
                    ],
                    "default": "all"
                  }
                ]
              }
            }
          ]
        },
        "hoverinfosrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.",
          "type": "string"
        },
        "hoverlabel": {
          "type": "object",
          "properties": {
            "align": {
              "description": "Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "left",
                        "right",
                        "auto"
                      ],
                      "default": "auto"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "left",
                          "right",
                          "auto"
                        ],
                        "default": "auto"
                      }
                    ]
                  }
                }
              ]
            },
            "alignsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `align`.",
              "type": "string"
            },
            "bgcolor": {
              "description": "Sets the background color of the hover labels for this trace",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "bgcolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.",
              "type": "string"
            },
            "bordercolor": {
              "description": "Sets the border color of the hover labels for this trace.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "bordercolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.",
              "type": "string"
            },
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "colorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `color`.",
                  "type": "string"
                },
                "family": {
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "oneOf": [
                    {
                      "pattern": ".*\\S.*$",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "pattern": ".*\\S.*$",
                        "type": "string"
                      }
                    },
                    {
                      "$ref": "#/$defs/query-string"
                    }
                  ]
                },
                "familysrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `family`.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "oneOf": [
                              {
                                "type": "string",
                                "enum": [
                                  "none"
                                ]
                              },
                              {
                                "type": "string",
                                "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                              }
                            ],
                            "default": "none"
                          }
                        ]
                      }
                    }
                  ]
                },
                "linepositionsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.",
                  "type": "string"
                },
                "shadow": {
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "oneOf": [
                    {
                      "default": "none",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "default": "none",
                        "type": "string"
                      }
                    }
                  ]
                },
                "shadowsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `shadow`.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 1
                          }
                        ]
                      }
                    }
                  ]
                },
                "sizesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `size`.",
                  "type": "string"
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "italic"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "stylesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `style`.",
                  "type": "string"
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "word caps",
                              "upper",
                              "lower"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "textcasesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `textcase`.",
                  "type": "string"
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "small-caps",
                              "all-small-caps",
                              "all-petite-caps",
                              "petite-caps",
                              "unicase"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "variantsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `variant`.",
                  "type": "string"
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 1000,
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "weightsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `weight`.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "namelength": {
              "description": "Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": -1,
                      "default": 15
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "integer",
                        "minimum": -1,
                        "default": 15
                      }
                    ]
                  }
                }
              ]
            },
            "namelengthsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `namelength`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "hovertemplate": {
          "description": "Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". <https://github.com/d3/d3-format/tree/v1.4.5#d3-format> for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format> for details on the date formatting syntax. The variables available in `hovertemplate` are the ones emitted as event data described at this link <https://plotly.com/javascript/plotlyjs-events/#event-data>. Additionally, every attributes that can be specified per-point (the ones that are `arrayOk: true`) are available.  Anything contained in tag `<extra>` is displayed in the secondary box, for example \"<extra>{fullData.name}</extra>\". To hide the secondary box completely, use an empty tag `<extra></extra>`.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "hovertemplatesrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.",
          "type": "string"
        },
        "hovertext": {
          "description": "Sets hover text elements associated with each (lon,lat) pair If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (lon,lat) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "hovertextsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.",
          "type": "string"
        },
        "ids": {
          "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "idssrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `ids`.",
          "type": "string"
        },
        "lat": {
          "description": "Sets the latitude coordinates (in degrees North).",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "latsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `lat`.",
          "type": "string"
        },
        "legend": {
          "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "legend",
              "pattern": "^legend([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "legendgroup": {
          "default": "",
          "description": "Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items.",
          "type": "string"
        },
        "legendgrouptitle": {
          "type": "object",
          "properties": {
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "family": {
                  "pattern": ".*\\S.*$",
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                "shadow": {
                  "default": "none",
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "text": {
              "default": "",
              "description": "Sets the title of the legend group.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "legendrank": {
          "description": "Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": 1000
            }
          ]
        },
        "legendwidth": {
          "description": "Sets the width (in px or fraction) of the legend for this trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0
            }
          ]
        },
        "line": {
          "type": "object",
          "properties": {
            "color": {
              "description": "Sets the line color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "width": {
              "description": "Sets the line width (in px).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 2
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "lon": {
          "description": "Sets the longitude coordinates (in degrees East).",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "lonsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `lon`.",
          "type": "string"
        },
        "marker": {
          "type": "object",
          "properties": {
            "allowoverlap": {
              "description": "Flag to draw all symbols, even if they overlap.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            },
            "angle": {
              "description": "Sets the marker orientation from true North, in degrees clockwise. When using the *auto* default, no rotation would be applied in perspective views which is different from using a zero angle.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "default": "auto"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "default": "auto"
                      }
                    ]
                  }
                }
              ]
            },
            "anglesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `angle`.",
              "type": "string"
            },
            "autocolorscale": {
              "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": true
                }
              ]
            },
            "cauto": {
              "description": "Determines whether or not the color domain is computed with respect to the input data (here in `marker.color`) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if in `marker.color` is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": true
                }
              ]
            },
            "cmax": {
              "description": "Sets the upper bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmin` must be set as well.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": null
                }
              ]
            },
            "cmid": {
              "description": "Sets the mid-point of the color domain by scaling `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color`. Has no effect when `marker.cauto` is `false`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": null
                }
              ]
            },
            "cmin": {
              "description": "Sets the lower bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmax` must be set as well.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": null
                }
              ]
            },
            "color": {
              "description": "Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.cmin` and `marker.cmax` if set.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "coloraxis": {
              "description": "Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "string",
                  "default": null,
                  "pattern": "/^coloraxis([2-9]|[1-9][0-9]+)?$/"
                }
              ]
            },
            "colorbar": {
              "type": "object",
              "properties": {
                "bgcolor": {
                  "description": "Sets the color of padded area.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "bordercolor": {
                  "description": "Sets the axis line color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "borderwidth": {
                  "description": "Sets the width (in px) or the border enclosing this color bar.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 0
                    }
                  ]
                },
                "dtick": {
                  "description": "Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L<f>*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M<n>* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48*"
                },
                "exponentformat": {
                  "description": "Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "none",
                        "e",
                        "E",
                        "power",
                        "SI",
                        "B"
                      ],
                      "default": "B"
                    }
                  ]
                },
                "labelalias": {
                  "default": false,
                  "description": "Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax."
                },
                "len": {
                  "description": "Sets the length of the color bar This measure excludes the padding of both ends. That is, the color bar length is this length minus the padding on both ends.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "lenmode": {
                  "description": "Determines whether this color bar's length (i.e. the measure in the color variation direction) is set in units of plot *fraction* or in *pixels. Use `len` to set the value.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "fraction",
                        "pixels"
                      ],
                      "default": "fraction"
                    }
                  ]
                },
                "minexponent": {
                  "description": "Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 3
                    }
                  ]
                },
                "nticks": {
                  "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 0,
                      "default": 0
                    }
                  ]
                },
                "orientation": {
                  "description": "Sets the orientation of the colorbar.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "h",
                        "v"
                      ],
                      "default": "v"
                    }
                  ]
                },
                "outlinecolor": {
                  "description": "Sets the axis line color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "outlinewidth": {
                  "description": "Sets the width (in px) of the axis line.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "separatethousands": {
                  "description": "If \"true\", even 4-digit integers are separated",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": false
                    }
                  ]
                },
                "showexponent": {
                  "description": "If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "showticklabels": {
                  "description": "Determines whether or not the tick labels are drawn.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                },
                "showtickprefix": {
                  "description": "If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "showticksuffix": {
                  "description": "Same as `showtickprefix` but for tick suffixes.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "thickness": {
                  "description": "Sets the thickness of the color bar This measure excludes the size of the padding, ticks and labels.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 30
                    }
                  ]
                },
                "thicknessmode": {
                  "description": "Determines whether this color bar's thickness (i.e. the measure in the constant color direction) is set in units of plot *fraction* or in *pixels*. Use `thickness` to set the value.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "fraction",
                        "pixels"
                      ],
                      "default": "pixels"
                    }
                  ]
                },
                "tick0": {
                  "description": "Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L<f>* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears."
                },
                "tickangle": {
                  "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": -180,
                      "maximum": 180,
                      "default": "auto"
                    }
                  ]
                },
                "tickcolor": {
                  "description": "Sets the tick color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "tickfont": {
                  "type": "object",
                  "properties": {
                    "color": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    "family": {
                      "pattern": ".*\\S.*$",
                      "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                      "type": "string"
                    },
                    "lineposition": {
                      "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    "shadow": {
                      "default": "none",
                      "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                      "type": "string"
                    },
                    "size": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    "style": {
                      "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "textcase": {
                      "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "variant": {
                      "description": "Sets the variant of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "weight": {
                      "description": "Sets the weight (or boldness) of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    }
                  },
                  "additionalProperties": false
                },
                "tickformat": {
                  "default": "",
                  "description": "Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*",
                  "type": "string"
                },
                "tickformatstops": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "dtickrange": {
                        "description": "range [*min*, *max*], where *min*, *max* - dtick values which describe some zoom level, it is possible to omit *min* or *max* value by passing *null*",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "array",
                            "items": {},
                            "minItems": 2,
                            "maxItems": 2
                          }
                        ]
                      },
                      "enabled": {
                        "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "boolean",
                            "default": true
                          }
                        ]
                      },
                      "name": {
                        "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.",
                        "type": "string"
                      },
                      "templateitemname": {
                        "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.",
                        "type": "string"
                      },
                      "value": {
                        "default": "",
                        "description": "string - dtickformat for described zoom level, the same as *tickformat*",
                        "type": "string"
                      }
                    },
                    "additionalProperties": false
                  },
                  "minItems": 1
                },
                "ticklabeloverflow": {
                  "description": "Determines how we handle tick labels that would overflow either the graph div or the domain of the axis. The default value for inside tick labels is *hide past domain*. In other cases the default is *hide past div*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "allow",
                        "hide past div",
                        "hide past domain"
                      ]
                    }
                  ]
                },
                "ticklabelposition": {
                  "description": "Determines where tick labels are drawn relative to the ticks. Left and right options are used when `orientation` is *h*, top and bottom when `orientation` is *v*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "outside",
                        "inside",
                        "outside top",
                        "inside top",
                        "outside left",
                        "inside left",
                        "outside right",
                        "inside right",
                        "outside bottom",
                        "inside bottom"
                      ],
                      "default": "outside"
                    }
                  ]
                },
                "ticklabelstep": {
                  "description": "Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "default": 1
                    }
                  ]
                },
                "ticklen": {
                  "description": "Sets the tick length (in px).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 5
                    }
                  ]
                },
                "tickmode": {
                  "description": "Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "auto",
                        "linear",
                        "array"
                      ]
                    }
                  ]
                },
                "tickprefix": {
                  "default": "",
                  "description": "Sets a tick label prefix.",
                  "type": "string"
                },
                "ticks": {
                  "description": "Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "outside",
                        "inside",
                        ""
                      ],
                      "default": ""
                    }
                  ]
                },
                "ticksuffix": {
                  "default": "",
                  "description": "Sets a tick label suffix.",
                  "type": "string"
                },
                "ticktext": {
                  "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "string"
                          }
                        ]
                      }
                    }
                  ]
                },
                "ticktextsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.",
                  "type": "string"
                },
                "tickvals": {
                  "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "string"
                          }
                        ]
                      }
                    }
                  ]
                },
                "tickvalssrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.",
                  "type": "string"
                },
                "tickwidth": {
                  "description": "Sets the tick width (in px).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "title": {
                  "type": "object",
                  "properties": {
                    "font": {
                      "type": "object",
                      "properties": {
                        "color": {
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "$ref": "#/$defs/color"
                            }
                          ]
                        },
                        "family": {
                          "pattern": ".*\\S.*$",
                          "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                          "type": "string"
                        },
                        "lineposition": {
                          "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "oneOf": [
                                {
                                  "type": "string",
                                  "enum": [
                                    "none"
                                  ]
                                },
                                {
                                  "type": "string",
                                  "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                                }
                              ],
                              "default": "none"
                            }
                          ]
                        },
                        "shadow": {
                          "default": "none",
                          "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                          "type": "string"
                        },
                        "size": {
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "type": "number",
                              "minimum": 1
                            }
                          ]
                        },
                        "style": {
                          "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "italic"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "textcase": {
                          "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "word caps",
                                "upper",
                                "lower"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "variant": {
                          "description": "Sets the variant of the font.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "small-caps",
                                "all-small-caps",
                                "all-petite-caps",
                                "petite-caps",
                                "unicase"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "weight": {
                          "description": "Sets the weight (or boldness) of the font.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "type": "integer",
                              "minimum": 1,
                              "maximum": 1000,
                              "default": "normal"
                            }
                          ]
                        }
                      },
                      "additionalProperties": false
                    },
                    "side": {
                      "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and  defaults to *right* when `orientation` if *h*.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "right",
                            "top",
                            "bottom"
                          ]
                        }
                      ]
                    },
                    "text": {
                      "description": "Sets the title of the color bar.",
                      "type": "string"
                    }
                  },
                  "additionalProperties": false
                },
                "x": {
                  "description": "Sets the x position with respect to `xref` of the color bar (in plot fraction). When `xref` is *paper*, defaults to 1.02 when `orientation` is *v* and 0.5 when `orientation` is *h*. When `xref` is *container*, defaults to *1* when `orientation` is *v* and 0.5 when `orientation` is *h*. Must be between *0* and *1* if `xref` is *container* and between *-2* and *3* if `xref` is *paper*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number"
                    }
                  ]
                },
                "xanchor": {
                  "description": "Sets this color bar's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the color bar. Defaults to *left* when `orientation` is *v* and *center* when `orientation` is *h*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "left",
                        "center",
                        "right"
                      ]
                    }
                  ]
                },
                "xpad": {
                  "description": "Sets the amount of padding (in px) along the x direction.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 10
                    }
                  ]
                },
                "xref": {
                  "description": "Sets the container `x` refers to. *container* spans the entire `width` of the plot. *paper* refers to the width of the plotting area only.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "container",
                        "paper"
                      ],
                      "default": "paper"
                    }
                  ]
                },
                "y": {
                  "description": "Sets the y position with respect to `yref` of the color bar (in plot fraction). When `yref` is *paper*, defaults to 0.5 when `orientation` is *v* and 1.02 when `orientation` is *h*. When `yref` is *container*, defaults to 0.5 when `orientation` is *v* and 1 when `orientation` is *h*. Must be between *0* and *1* if `yref` is *container* and between *-2* and *3* if `yref` is *paper*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number"
                    }
                  ]
                },
                "yanchor": {
                  "description": "Sets this color bar's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the color bar. Defaults to *middle* when `orientation` is *v* and *bottom* when `orientation` is *h*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "top",
                        "middle",
                        "bottom"
                      ]
                    }
                  ]
                },
                "ypad": {
                  "description": "Sets the amount of padding (in px) along the y direction.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 10
                    }
                  ]
                },
                "yref": {
                  "description": "Sets the container `y` refers to. *container* spans the entire `height` of the plot. *paper* refers to the height of the plotting area only.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "container",
                        "paper"
                      ],
                      "default": "paper"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "colorscale": {
              "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/colorscale",
                  "default": null
                }
              ]
            },
            "colorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `color`.",
              "type": "string"
            },
            "opacity": {
              "description": "Sets the marker opacity.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 1
                      }
                    ]
                  }
                }
              ]
            },
            "opacitysrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `opacity`.",
              "type": "string"
            },
            "reversescale": {
              "description": "Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            },
            "showscale": {
              "description": "Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            },
            "size": {
              "description": "Sets the marker size (in px).",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 6
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 0,
                        "default": 6
                      }
                    ]
                  }
                }
              ]
            },
            "sizemin": {
              "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the minimum size (in px) of the rendered marker points.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "sizemode": {
              "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the rule for which the data in `size` is converted to pixels.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "diameter",
                    "area"
                  ],
                  "default": "diameter"
                }
              ]
            },
            "sizeref": {
              "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the scale factor used to determine the rendered size of marker points. Use with `sizemin` and `sizemode`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": 1
                }
              ]
            },
            "sizesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `size`.",
              "type": "string"
            },
            "symbol": {
              "description": "Sets the marker symbol. Full list: <https://www.map.com/maki-icons/> Note that the array `marker.color` and `marker.size` are only available for *circle* symbols.",
              "oneOf": [
                {
                  "default": "circle",
                  "type": "string"
                },
                {
                  "type": "array",
                  "items": {
                    "default": "circle",
                    "type": "string"
                  }
                }
              ]
            },
            "symbolsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `symbol`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "metasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `meta`.",
          "type": "string"
        },
        "mode": {
          "description": "Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "oneOf": [
                {
                  "type": "string",
                  "enum": [
                    "none"
                  ]
                },
                {
                  "type": "string",
                  "pattern": "^(lines|markers|text)(\\+(lines|markers|text))*$"
                }
              ],
              "default": "markers"
            }
          ]
        },
        "name": {
          "description": "Sets the trace name. The trace name appears as the legend item and on hover.",
          "type": "string"
        },
        "opacity": {
          "description": "Sets the opacity of the trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0,
              "maximum": 1,
              "default": 1
            }
          ]
        },
        "selected": {
          "type": "object",
          "properties": {
            "marker": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the marker color of selected points.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "opacity": {
                  "description": "Sets the marker opacity of selected points.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1
                    }
                  ]
                },
                "size": {
                  "description": "Sets the marker size of selected points.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0
                    }
                  ]
                }
              },
              "additionalProperties": false
            }
          },
          "additionalProperties": false
        },
        "selectedpoints": {
          "description": "Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect."
        },
        "showlegend": {
          "description": "Determines whether or not an item corresponding to this trace is shown in the legend.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "stream": {
          "type": "object",
          "properties": {
            "maxpoints": {
              "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 10000,
                  "default": 500
                }
              ]
            },
            "token": {
              "pattern": ".*\\S.*$",
              "description": "The stream id number links a data trace on a plot with a stream. See <https://chart-studio.plotly.com/settings> for more details.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "subplot": {
          "description": "Sets a reference between this trace's data coordinates and a map subplot. If *map* (the default value), the data refer to `layout.map`. If *map2*, the data refer to `layout.map2`, and so on.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "map",
              "pattern": "^map([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "text": {
          "description": "Sets text elements associated with each (lon,lat) pair If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (lon,lat) coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "textfont": {
          "type": "object",
          "properties": {
            "color": {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "family": {
              "default": "Open Sans Regular, Arial Unicode MS Regular",
              "pattern": ".*\\S.*$",
              "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
              "type": "string"
            },
            "size": {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 1
                }
              ]
            },
            "style": {
              "description": "Sets whether a font should be styled with a normal or italic face from its family.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "normal",
                    "italic"
                  ],
                  "default": "normal"
                }
              ]
            },
            "weight": {
              "description": "Sets the weight (or boldness) of the font.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 1,
                  "maximum": 1000,
                  "default": "normal"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "textposition": {
          "description": "Sets the positions of the `text` elements with respects to the (x,y) coordinates.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "top left",
                "top center",
                "top right",
                "middle left",
                "middle center",
                "middle right",
                "bottom left",
                "bottom center",
                "bottom right"
              ],
              "default": "middle center"
            }
          ]
        },
        "textsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `text`.",
          "type": "string"
        },
        "texttemplate": {
          "description": "Template string used for rendering the information text that appear on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". <https://github.com/d3/d3-format/tree/v1.4.5#d3-format> for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format> for details on the date formatting syntax. Every attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `lat`, `lon` and `text`.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "texttemplatesrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.",
          "type": "string"
        },
        "uid": {
          "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.",
          "type": "string"
        },
        "uirevision": {
          "description": "Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves."
        },
        "unselected": {
          "type": "object",
          "properties": {
            "marker": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the marker color of unselected points, applied only when a selection exists.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "opacity": {
                  "description": "Sets the marker opacity of unselected points, applied only when a selection exists.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1
                    }
                  ]
                },
                "size": {
                  "description": "Sets the marker size of unselected points, applied only when a selection exists.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0
                    }
                  ]
                }
              },
              "additionalProperties": false
            }
          },
          "additionalProperties": false
        },
        "visible": {
          "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                true,
                false,
                "legendonly"
              ],
              "default": true
            }
          ]
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false
    },
    "Scattermapbox": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "$id": "https://visivo.io/trace-properties/schema",
      "description": "A schema to validate plotly trace properties",
      "type": "object",
      "properties": {
        "type": {
          "const": "scattermapbox"
        },
        "below": {
          "description": "Determines if this scattermapbox trace's layers are to be inserted before the layer with the specified ID. By default, scattermapbox layers are inserted above all the base layers. To place the scattermapbox layers above every other layer, set `below` to *''*.",
          "type": "string"
        },
        "cluster": {
          "type": "object",
          "properties": {
            "color": {
              "description": "Sets the color for each cluster step.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "colorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `color`.",
              "type": "string"
            },
            "enabled": {
              "description": "Determines whether clustering is enabled or disabled.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean"
                }
              ]
            },
            "maxzoom": {
              "description": "Sets the maximum zoom level. At zoom levels equal to or greater than this, points will never be clustered.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 24,
                  "default": 24
                }
              ]
            },
            "opacity": {
              "description": "Sets the marker opacity.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1,
                      "default": 1
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 1,
                        "default": 1
                      }
                    ]
                  }
                }
              ]
            },
            "opacitysrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `opacity`.",
              "type": "string"
            },
            "size": {
              "description": "Sets the size for each cluster step.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 20
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 0,
                        "default": 20
                      }
                    ]
                  }
                }
              ]
            },
            "sizesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `size`.",
              "type": "string"
            },
            "step": {
              "description": "Sets how many points it takes to create a cluster or advance to the next cluster step. Use this in conjunction with arrays for `size` and / or `color`. If an integer, steps start at multiples of this number. If an array, each step extends from the given value until one less than the next value.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": -1,
                      "default": -1
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": -1,
                        "default": -1
                      }
                    ]
                  }
                }
              ]
            },
            "stepsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `step`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "connectgaps": {
          "description": "Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": false
            }
          ]
        },
        "customdata": {
          "description": "Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "customdatasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `customdata`.",
          "type": "string"
        },
        "fill": {
          "description": "Sets the area to fill with a solid color. Use with `fillcolor` if not *none*. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "none",
                "toself"
              ],
              "default": "none"
            }
          ]
        },
        "fillcolor": {
          "description": "Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "$ref": "#/$defs/color"
            }
          ]
        },
        "hoverinfo": {
          "description": "Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired.",
          "oneOf": [
            {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "oneOf": [
                    {
                      "type": "string",
                      "enum": [
                        "all",
                        "none",
                        "skip"
                      ]
                    },
                    {
                      "type": "string",
                      "pattern": "^(lon|lat|text|name)(\\+(lon|lat|text|name))*$"
                    }
                  ],
                  "default": "all"
                }
              ]
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "oneOf": [
                      {
                        "type": "string",
                        "enum": [
                          "all",
                          "none",
                          "skip"
                        ]
                      },
                      {
                        "type": "string",
                        "pattern": "^(lon|lat|text|name)(\\+(lon|lat|text|name))*$"
                      }
                    ],
                    "default": "all"
                  }
                ]
              }
            }
          ]
        },
        "hoverinfosrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.",
          "type": "string"
        },
        "hoverlabel": {
          "type": "object",
          "properties": {
            "align": {
              "description": "Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "left",
                        "right",
                        "auto"
                      ],
                      "default": "auto"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "left",
                          "right",
                          "auto"
                        ],
                        "default": "auto"
                      }
                    ]
                  }
                }
              ]
            },
            "alignsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `align`.",
              "type": "string"
            },
            "bgcolor": {
              "description": "Sets the background color of the hover labels for this trace",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "bgcolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.",
              "type": "string"
            },
            "bordercolor": {
              "description": "Sets the border color of the hover labels for this trace.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "bordercolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.",
              "type": "string"
            },
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "colorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `color`.",
                  "type": "string"
                },
                "family": {
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "oneOf": [
                    {
                      "pattern": ".*\\S.*$",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "pattern": ".*\\S.*$",
                        "type": "string"
                      }
                    },
                    {
                      "$ref": "#/$defs/query-string"
                    }
                  ]
                },
                "familysrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `family`.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "oneOf": [
                              {
                                "type": "string",
                                "enum": [
                                  "none"
                                ]
                              },
                              {
                                "type": "string",
                                "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                              }
                            ],
                            "default": "none"
                          }
                        ]
                      }
                    }
                  ]
                },
                "linepositionsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.",
                  "type": "string"
                },
                "shadow": {
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "oneOf": [
                    {
                      "default": "none",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "default": "none",
                        "type": "string"
                      }
                    }
                  ]
                },
                "shadowsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `shadow`.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 1
                          }
                        ]
                      }
                    }
                  ]
                },
                "sizesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `size`.",
                  "type": "string"
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "italic"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "stylesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `style`.",
                  "type": "string"
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "word caps",
                              "upper",
                              "lower"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "textcasesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `textcase`.",
                  "type": "string"
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "small-caps",
                              "all-small-caps",
                              "all-petite-caps",
                              "petite-caps",
                              "unicase"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "variantsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `variant`.",
                  "type": "string"
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 1000,
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "weightsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `weight`.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "namelength": {
              "description": "Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": -1,
                      "default": 15
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "integer",
                        "minimum": -1,
                        "default": 15
                      }
                    ]
                  }
                }
              ]
            },
            "namelengthsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `namelength`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "hovertemplate": {
          "description": "Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". <https://github.com/d3/d3-format/tree/v1.4.5#d3-format> for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format> for details on the date formatting syntax. The variables available in `hovertemplate` are the ones emitted as event data described at this link <https://plotly.com/javascript/plotlyjs-events/#event-data>. Additionally, every attributes that can be specified per-point (the ones that are `arrayOk: true`) are available.  Anything contained in tag `<extra>` is displayed in the secondary box, for example \"<extra>{fullData.name}</extra>\". To hide the secondary box completely, use an empty tag `<extra></extra>`.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "hovertemplatesrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.",
          "type": "string"
        },
        "hovertext": {
          "description": "Sets hover text elements associated with each (lon,lat) pair If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (lon,lat) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "hovertextsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.",
          "type": "string"
        },
        "ids": {
          "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "idssrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `ids`.",
          "type": "string"
        },
        "lat": {
          "description": "Sets the latitude coordinates (in degrees North).",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "latsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `lat`.",
          "type": "string"
        },
        "legend": {
          "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "legend",
              "pattern": "^legend([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "legendgroup": {
          "default": "",
          "description": "Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items.",
          "type": "string"
        },
        "legendgrouptitle": {
          "type": "object",
          "properties": {
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "family": {
                  "pattern": ".*\\S.*$",
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                "shadow": {
                  "default": "none",
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "text": {
              "default": "",
              "description": "Sets the title of the legend group.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "legendrank": {
          "description": "Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": 1000
            }
          ]
        },
        "legendwidth": {
          "description": "Sets the width (in px or fraction) of the legend for this trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0
            }
          ]
        },
        "line": {
          "type": "object",
          "properties": {
            "color": {
              "description": "Sets the line color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "width": {
              "description": "Sets the line width (in px).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 2
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "lon": {
          "description": "Sets the longitude coordinates (in degrees East).",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "lonsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `lon`.",
          "type": "string"
        },
        "marker": {
          "type": "object",
          "properties": {
            "allowoverlap": {
              "description": "Flag to draw all symbols, even if they overlap.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            },
            "angle": {
              "description": "Sets the marker orientation from true North, in degrees clockwise. When using the *auto* default, no rotation would be applied in perspective views which is different from using a zero angle.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "default": "auto"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "default": "auto"
                      }
                    ]
                  }
                }
              ]
            },
            "anglesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `angle`.",
              "type": "string"
            },
            "autocolorscale": {
              "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": true
                }
              ]
            },
            "cauto": {
              "description": "Determines whether or not the color domain is computed with respect to the input data (here in `marker.color`) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if in `marker.color` is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": true
                }
              ]
            },
            "cmax": {
              "description": "Sets the upper bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmin` must be set as well.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": null
                }
              ]
            },
            "cmid": {
              "description": "Sets the mid-point of the color domain by scaling `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color`. Has no effect when `marker.cauto` is `false`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": null
                }
              ]
            },
            "cmin": {
              "description": "Sets the lower bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmax` must be set as well.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": null
                }
              ]
            },
            "color": {
              "description": "Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.cmin` and `marker.cmax` if set.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "coloraxis": {
              "description": "Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "string",
                  "default": null,
                  "pattern": "/^coloraxis([2-9]|[1-9][0-9]+)?$/"
                }
              ]
            },
            "colorbar": {
              "type": "object",
              "properties": {
                "bgcolor": {
                  "description": "Sets the color of padded area.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "bordercolor": {
                  "description": "Sets the axis line color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "borderwidth": {
                  "description": "Sets the width (in px) or the border enclosing this color bar.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 0
                    }
                  ]
                },
                "dtick": {
                  "description": "Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L<f>*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M<n>* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48*"
                },
                "exponentformat": {
                  "description": "Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "none",
                        "e",
                        "E",
                        "power",
                        "SI",
                        "B"
                      ],
                      "default": "B"
                    }
                  ]
                },
                "labelalias": {
                  "default": false,
                  "description": "Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax."
                },
                "len": {
                  "description": "Sets the length of the color bar This measure excludes the padding of both ends. That is, the color bar length is this length minus the padding on both ends.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "lenmode": {
                  "description": "Determines whether this color bar's length (i.e. the measure in the color variation direction) is set in units of plot *fraction* or in *pixels. Use `len` to set the value.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "fraction",
                        "pixels"
                      ],
                      "default": "fraction"
                    }
                  ]
                },
                "minexponent": {
                  "description": "Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 3
                    }
                  ]
                },
                "nticks": {
                  "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 0,
                      "default": 0
                    }
                  ]
                },
                "orientation": {
                  "description": "Sets the orientation of the colorbar.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "h",
                        "v"
                      ],
                      "default": "v"
                    }
                  ]
                },
                "outlinecolor": {
                  "description": "Sets the axis line color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "outlinewidth": {
                  "description": "Sets the width (in px) of the axis line.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "separatethousands": {
                  "description": "If \"true\", even 4-digit integers are separated",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": false
                    }
                  ]
                },
                "showexponent": {
                  "description": "If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "showticklabels": {
                  "description": "Determines whether or not the tick labels are drawn.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                },
                "showtickprefix": {
                  "description": "If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "showticksuffix": {
                  "description": "Same as `showtickprefix` but for tick suffixes.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "thickness": {
                  "description": "Sets the thickness of the color bar This measure excludes the size of the padding, ticks and labels.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 30
                    }
                  ]
                },
                "thicknessmode": {
                  "description": "Determines whether this color bar's thickness (i.e. the measure in the constant color direction) is set in units of plot *fraction* or in *pixels*. Use `thickness` to set the value.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "fraction",
                        "pixels"
                      ],
                      "default": "pixels"
                    }
                  ]
                },
                "tick0": {
                  "description": "Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L<f>* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears."
                },
                "tickangle": {
                  "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": -180,
                      "maximum": 180,
                      "default": "auto"
                    }
                  ]
                },
                "tickcolor": {
                  "description": "Sets the tick color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "tickfont": {
                  "type": "object",
                  "properties": {
                    "color": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    "family": {
                      "pattern": ".*\\S.*$",
                      "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                      "type": "string"
                    },
                    "lineposition": {
                      "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    "shadow": {
                      "default": "none",
                      "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                      "type": "string"
                    },
                    "size": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    "style": {
                      "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "textcase": {
                      "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "variant": {
                      "description": "Sets the variant of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "weight": {
                      "description": "Sets the weight (or boldness) of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    }
                  },
                  "additionalProperties": false
                },
                "tickformat": {
                  "default": "",
                  "description": "Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*",
                  "type": "string"
                },
                "tickformatstops": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "dtickrange": {
                        "description": "range [*min*, *max*], where *min*, *max* - dtick values which describe some zoom level, it is possible to omit *min* or *max* value by passing *null*",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "array",
                            "items": {},
                            "minItems": 2,
                            "maxItems": 2
                          }
                        ]
                      },
                      "enabled": {
                        "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "boolean",
                            "default": true
                          }
                        ]
                      },
                      "name": {
                        "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.",
                        "type": "string"
                      },
                      "templateitemname": {
                        "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.",
                        "type": "string"
                      },
                      "value": {
                        "default": "",
                        "description": "string - dtickformat for described zoom level, the same as *tickformat*",
                        "type": "string"
                      }
                    },
                    "additionalProperties": false
                  },
                  "minItems": 1
                },
                "ticklabeloverflow": {
                  "description": "Determines how we handle tick labels that would overflow either the graph div or the domain of the axis. The default value for inside tick labels is *hide past domain*. In other cases the default is *hide past div*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "allow",
                        "hide past div",
                        "hide past domain"
                      ]
                    }
                  ]
                },
                "ticklabelposition": {
                  "description": "Determines where tick labels are drawn relative to the ticks. Left and right options are used when `orientation` is *h*, top and bottom when `orientation` is *v*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "outside",
                        "inside",
                        "outside top",
                        "inside top",
                        "outside left",
                        "inside left",
                        "outside right",
                        "inside right",
                        "outside bottom",
                        "inside bottom"
                      ],
                      "default": "outside"
                    }
                  ]
                },
                "ticklabelstep": {
                  "description": "Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "default": 1
                    }
                  ]
                },
                "ticklen": {
                  "description": "Sets the tick length (in px).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 5
                    }
                  ]
                },
                "tickmode": {
                  "description": "Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "auto",
                        "linear",
                        "array"
                      ]
                    }
                  ]
                },
                "tickprefix": {
                  "default": "",
                  "description": "Sets a tick label prefix.",
                  "type": "string"
                },
                "ticks": {
                  "description": "Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "outside",
                        "inside",
                        ""
                      ],
                      "default": ""
                    }
                  ]
                },
                "ticksuffix": {
                  "default": "",
                  "description": "Sets a tick label suffix.",
                  "type": "string"
                },
                "ticktext": {
                  "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "string"
                          }
                        ]
                      }
                    }
                  ]
                },
                "ticktextsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.",
                  "type": "string"
                },
                "tickvals": {
                  "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "string"
                          }
                        ]
                      }
                    }
                  ]
                },
                "tickvalssrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.",
                  "type": "string"
                },
                "tickwidth": {
                  "description": "Sets the tick width (in px).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "title": {
                  "type": "object",
                  "properties": {
                    "font": {
                      "type": "object",
                      "properties": {
                        "color": {
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "$ref": "#/$defs/color"
                            }
                          ]
                        },
                        "family": {
                          "pattern": ".*\\S.*$",
                          "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                          "type": "string"
                        },
                        "lineposition": {
                          "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "oneOf": [
                                {
                                  "type": "string",
                                  "enum": [
                                    "none"
                                  ]
                                },
                                {
                                  "type": "string",
                                  "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                                }
                              ],
                              "default": "none"
                            }
                          ]
                        },
                        "shadow": {
                          "default": "none",
                          "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                          "type": "string"
                        },
                        "size": {
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "type": "number",
                              "minimum": 1
                            }
                          ]
                        },
                        "style": {
                          "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "italic"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "textcase": {
                          "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "word caps",
                                "upper",
                                "lower"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "variant": {
                          "description": "Sets the variant of the font.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "small-caps",
                                "all-small-caps",
                                "all-petite-caps",
                                "petite-caps",
                                "unicase"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "weight": {
                          "description": "Sets the weight (or boldness) of the font.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "type": "integer",
                              "minimum": 1,
                              "maximum": 1000,
                              "default": "normal"
                            }
                          ]
                        }
                      },
                      "additionalProperties": false
                    },
                    "side": {
                      "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and  defaults to *right* when `orientation` if *h*.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "right",
                            "top",
                            "bottom"
                          ]
                        }
                      ]
                    },
                    "text": {
                      "description": "Sets the title of the color bar.",
                      "type": "string"
                    }
                  },
                  "additionalProperties": false
                },
                "x": {
                  "description": "Sets the x position with respect to `xref` of the color bar (in plot fraction). When `xref` is *paper*, defaults to 1.02 when `orientation` is *v* and 0.5 when `orientation` is *h*. When `xref` is *container*, defaults to *1* when `orientation` is *v* and 0.5 when `orientation` is *h*. Must be between *0* and *1* if `xref` is *container* and between *-2* and *3* if `xref` is *paper*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number"
                    }
                  ]
                },
                "xanchor": {
                  "description": "Sets this color bar's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the color bar. Defaults to *left* when `orientation` is *v* and *center* when `orientation` is *h*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "left",
                        "center",
                        "right"
                      ]
                    }
                  ]
                },
                "xpad": {
                  "description": "Sets the amount of padding (in px) along the x direction.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 10
                    }
                  ]
                },
                "xref": {
                  "description": "Sets the container `x` refers to. *container* spans the entire `width` of the plot. *paper* refers to the width of the plotting area only.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "container",
                        "paper"
                      ],
                      "default": "paper"
                    }
                  ]
                },
                "y": {
                  "description": "Sets the y position with respect to `yref` of the color bar (in plot fraction). When `yref` is *paper*, defaults to 0.5 when `orientation` is *v* and 1.02 when `orientation` is *h*. When `yref` is *container*, defaults to 0.5 when `orientation` is *v* and 1 when `orientation` is *h*. Must be between *0* and *1* if `yref` is *container* and between *-2* and *3* if `yref` is *paper*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number"
                    }
                  ]
                },
                "yanchor": {
                  "description": "Sets this color bar's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the color bar. Defaults to *middle* when `orientation` is *v* and *bottom* when `orientation` is *h*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "top",
                        "middle",
                        "bottom"
                      ]
                    }
                  ]
                },
                "ypad": {
                  "description": "Sets the amount of padding (in px) along the y direction.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 10
                    }
                  ]
                },
                "yref": {
                  "description": "Sets the container `y` refers to. *container* spans the entire `height` of the plot. *paper* refers to the height of the plotting area only.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "container",
                        "paper"
                      ],
                      "default": "paper"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "colorscale": {
              "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/colorscale",
                  "default": null
                }
              ]
            },
            "colorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `color`.",
              "type": "string"
            },
            "opacity": {
              "description": "Sets the marker opacity.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 1
                      }
                    ]
                  }
                }
              ]
            },
            "opacitysrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `opacity`.",
              "type": "string"
            },
            "reversescale": {
              "description": "Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            },
            "showscale": {
              "description": "Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            },
            "size": {
              "description": "Sets the marker size (in px).",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 6
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 0,
                        "default": 6
                      }
                    ]
                  }
                }
              ]
            },
            "sizemin": {
              "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the minimum size (in px) of the rendered marker points.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "sizemode": {
              "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the rule for which the data in `size` is converted to pixels.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "diameter",
                    "area"
                  ],
                  "default": "diameter"
                }
              ]
            },
            "sizeref": {
              "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the scale factor used to determine the rendered size of marker points. Use with `sizemin` and `sizemode`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": 1
                }
              ]
            },
            "sizesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `size`.",
              "type": "string"
            },
            "symbol": {
              "description": "Sets the marker symbol. Full list: <https://www.mapbox.com/maki-icons/> Note that the array `marker.color` and `marker.size` are only available for *circle* symbols.",
              "oneOf": [
                {
                  "default": "circle",
                  "type": "string"
                },
                {
                  "type": "array",
                  "items": {
                    "default": "circle",
                    "type": "string"
                  }
                }
              ]
            },
            "symbolsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `symbol`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "metasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `meta`.",
          "type": "string"
        },
        "mode": {
          "description": "Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "oneOf": [
                {
                  "type": "string",
                  "enum": [
                    "none"
                  ]
                },
                {
                  "type": "string",
                  "pattern": "^(lines|markers|text)(\\+(lines|markers|text))*$"
                }
              ],
              "default": "markers"
            }
          ]
        },
        "name": {
          "description": "Sets the trace name. The trace name appears as the legend item and on hover.",
          "type": "string"
        },
        "opacity": {
          "description": "Sets the opacity of the trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0,
              "maximum": 1,
              "default": 1
            }
          ]
        },
        "selected": {
          "type": "object",
          "properties": {
            "marker": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the marker color of selected points.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "opacity": {
                  "description": "Sets the marker opacity of selected points.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1
                    }
                  ]
                },
                "size": {
                  "description": "Sets the marker size of selected points.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0
                    }
                  ]
                }
              },
              "additionalProperties": false
            }
          },
          "additionalProperties": false
        },
        "selectedpoints": {
          "description": "Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect."
        },
        "showlegend": {
          "description": "Determines whether or not an item corresponding to this trace is shown in the legend.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "stream": {
          "type": "object",
          "properties": {
            "maxpoints": {
              "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 10000,
                  "default": 500
                }
              ]
            },
            "token": {
              "pattern": ".*\\S.*$",
              "description": "The stream id number links a data trace on a plot with a stream. See <https://chart-studio.plotly.com/settings> for more details.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "subplot": {
          "description": "mapbox subplots and traces are deprecated! Please consider switching to `map` subplots and traces. Learn more at: <https://plotly.com/python/maplibre-migration/> as well as <https://plotly.com/javascript/maplibre-migration/> Sets a reference between this trace's data coordinates and a mapbox subplot. If *mapbox* (the default value), the data refer to `layout.mapbox`. If *mapbox2*, the data refer to `layout.mapbox2`, and so on.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "mapbox",
              "pattern": "^mapbox([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "text": {
          "description": "Sets text elements associated with each (lon,lat) pair If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (lon,lat) coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "textfont": {
          "type": "object",
          "properties": {
            "color": {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "family": {
              "default": "Open Sans Regular, Arial Unicode MS Regular",
              "pattern": ".*\\S.*$",
              "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
              "type": "string"
            },
            "size": {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 1
                }
              ]
            },
            "style": {
              "description": "Sets whether a font should be styled with a normal or italic face from its family.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "normal",
                    "italic"
                  ],
                  "default": "normal"
                }
              ]
            },
            "weight": {
              "description": "Sets the weight (or boldness) of the font.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 1,
                  "maximum": 1000,
                  "default": "normal"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "textposition": {
          "description": "Sets the positions of the `text` elements with respects to the (x,y) coordinates.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "top left",
                "top center",
                "top right",
                "middle left",
                "middle center",
                "middle right",
                "bottom left",
                "bottom center",
                "bottom right"
              ],
              "default": "middle center"
            }
          ]
        },
        "textsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `text`.",
          "type": "string"
        },
        "texttemplate": {
          "description": "Template string used for rendering the information text that appear on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". <https://github.com/d3/d3-format/tree/v1.4.5#d3-format> for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format> for details on the date formatting syntax. Every attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `lat`, `lon` and `text`.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "texttemplatesrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.",
          "type": "string"
        },
        "uid": {
          "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.",
          "type": "string"
        },
        "uirevision": {
          "description": "Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves."
        },
        "unselected": {
          "type": "object",
          "properties": {
            "marker": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the marker color of unselected points, applied only when a selection exists.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "opacity": {
                  "description": "Sets the marker opacity of unselected points, applied only when a selection exists.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1
                    }
                  ]
                },
                "size": {
                  "description": "Sets the marker size of unselected points, applied only when a selection exists.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0
                    }
                  ]
                }
              },
              "additionalProperties": false
            }
          },
          "additionalProperties": false
        },
        "visible": {
          "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                true,
                false,
                "legendonly"
              ],
              "default": true
            }
          ]
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false
    },
    "Scatterpolar": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "$id": "https://visivo.io/trace-properties/schema",
      "description": "A schema to validate plotly trace properties",
      "type": "object",
      "properties": {
        "type": {
          "const": "scatterpolar"
        },
        "cliponaxis": {
          "description": "Determines whether or not markers and text nodes are clipped about the subplot axes. To show markers and text nodes above axis lines and tick labels, make sure to set `xaxis.layer` and `yaxis.layer` to *below traces*.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": false
            }
          ]
        },
        "connectgaps": {
          "description": "Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": false
            }
          ]
        },
        "customdata": {
          "description": "Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "customdatasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `customdata`.",
          "type": "string"
        },
        "dr": {
          "description": "Sets the r coordinate step.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": 1
            }
          ]
        },
        "dtheta": {
          "description": "Sets the theta coordinate step. By default, the `dtheta` step equals the subplot's period divided by the length of the `r` coordinates.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number"
            }
          ]
        },
        "fill": {
          "description": "Sets the area to fill with a solid color. Use with `fillcolor` if not *none*. scatterpolar has a subset of the options available to scatter. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape. *tonext* fills the space between two traces if one completely encloses the other (eg consecutive contour lines), and behaves like *toself* if there is no trace before it. *tonext* should not be used if one trace does not enclose the other.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "none",
                "toself",
                "tonext"
              ],
              "default": "none"
            }
          ]
        },
        "fillcolor": {
          "description": "Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "$ref": "#/$defs/color"
            }
          ]
        },
        "hoverinfo": {
          "description": "Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired.",
          "oneOf": [
            {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "oneOf": [
                    {
                      "type": "string",
                      "enum": [
                        "all",
                        "none",
                        "skip"
                      ]
                    },
                    {
                      "type": "string",
                      "pattern": "^(r|theta|text|name)(\\+(r|theta|text|name))*$"
                    }
                  ],
                  "default": "all"
                }
              ]
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "oneOf": [
                      {
                        "type": "string",
                        "enum": [
                          "all",
                          "none",
                          "skip"
                        ]
                      },
                      {
                        "type": "string",
                        "pattern": "^(r|theta|text|name)(\\+(r|theta|text|name))*$"
                      }
                    ],
                    "default": "all"
                  }
                ]
              }
            }
          ]
        },
        "hoverinfosrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.",
          "type": "string"
        },
        "hoverlabel": {
          "type": "object",
          "properties": {
            "align": {
              "description": "Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "left",
                        "right",
                        "auto"
                      ],
                      "default": "auto"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "left",
                          "right",
                          "auto"
                        ],
                        "default": "auto"
                      }
                    ]
                  }
                }
              ]
            },
            "alignsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `align`.",
              "type": "string"
            },
            "bgcolor": {
              "description": "Sets the background color of the hover labels for this trace",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "bgcolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.",
              "type": "string"
            },
            "bordercolor": {
              "description": "Sets the border color of the hover labels for this trace.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "bordercolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.",
              "type": "string"
            },
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "colorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `color`.",
                  "type": "string"
                },
                "family": {
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "oneOf": [
                    {
                      "pattern": ".*\\S.*$",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "pattern": ".*\\S.*$",
                        "type": "string"
                      }
                    },
                    {
                      "$ref": "#/$defs/query-string"
                    }
                  ]
                },
                "familysrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `family`.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "oneOf": [
                              {
                                "type": "string",
                                "enum": [
                                  "none"
                                ]
                              },
                              {
                                "type": "string",
                                "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                              }
                            ],
                            "default": "none"
                          }
                        ]
                      }
                    }
                  ]
                },
                "linepositionsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.",
                  "type": "string"
                },
                "shadow": {
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "oneOf": [
                    {
                      "default": "none",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "default": "none",
                        "type": "string"
                      }
                    }
                  ]
                },
                "shadowsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `shadow`.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 1
                          }
                        ]
                      }
                    }
                  ]
                },
                "sizesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `size`.",
                  "type": "string"
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "italic"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "stylesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `style`.",
                  "type": "string"
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "word caps",
                              "upper",
                              "lower"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "textcasesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `textcase`.",
                  "type": "string"
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "small-caps",
                              "all-small-caps",
                              "all-petite-caps",
                              "petite-caps",
                              "unicase"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "variantsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `variant`.",
                  "type": "string"
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 1000,
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "weightsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `weight`.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "namelength": {
              "description": "Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": -1,
                      "default": 15
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "integer",
                        "minimum": -1,
                        "default": 15
                      }
                    ]
                  }
                }
              ]
            },
            "namelengthsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `namelength`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "hoveron": {
          "description": "Do the hover effects highlight individual points (markers or line points) or do they highlight filled regions? If the fill is *toself* or *tonext* and there are no markers or text, then the default is *fills*, otherwise it is *points*.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "pattern": "^(points|fills)(\\+(points|fills))*$"
            }
          ]
        },
        "hovertemplate": {
          "description": "Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". <https://github.com/d3/d3-format/tree/v1.4.5#d3-format> for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format> for details on the date formatting syntax. The variables available in `hovertemplate` are the ones emitted as event data described at this link <https://plotly.com/javascript/plotlyjs-events/#event-data>. Additionally, every attributes that can be specified per-point (the ones that are `arrayOk: true`) are available.  Anything contained in tag `<extra>` is displayed in the secondary box, for example \"<extra>{fullData.name}</extra>\". To hide the secondary box completely, use an empty tag `<extra></extra>`.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "hovertemplatesrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.",
          "type": "string"
        },
        "hovertext": {
          "description": "Sets hover text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "hovertextsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.",
          "type": "string"
        },
        "ids": {
          "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "idssrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `ids`.",
          "type": "string"
        },
        "legend": {
          "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "legend",
              "pattern": "^legend([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "legendgroup": {
          "default": "",
          "description": "Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items.",
          "type": "string"
        },
        "legendgrouptitle": {
          "type": "object",
          "properties": {
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "family": {
                  "pattern": ".*\\S.*$",
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                "shadow": {
                  "default": "none",
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "text": {
              "default": "",
              "description": "Sets the title of the legend group.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "legendrank": {
          "description": "Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": 1000
            }
          ]
        },
        "legendwidth": {
          "description": "Sets the width (in px or fraction) of the legend for this trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0
            }
          ]
        },
        "line": {
          "type": "object",
          "properties": {
            "backoff": {
              "description": "Sets the line back off from the end point of the nth line segment (in px). This option is useful e.g. to avoid overlap with arrowhead markers. With *auto* the lines would trim before markers if `marker.angleref` is set to *previous*.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": "auto"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 0,
                        "default": "auto"
                      }
                    ]
                  }
                }
              ]
            },
            "backoffsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `backoff`.",
              "type": "string"
            },
            "color": {
              "description": "Sets the line color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "dash": {
              "default": "solid",
              "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).",
              "type": "string"
            },
            "shape": {
              "description": "Determines the line shape. With *spline* the lines are drawn using spline interpolation. The other available values correspond to step-wise line shapes.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "linear",
                    "spline"
                  ],
                  "default": "linear"
                }
              ]
            },
            "smoothing": {
              "description": "Has an effect only if `shape` is set to *spline* Sets the amount of smoothing. *0* corresponds to no smoothing (equivalent to a *linear* shape).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 1.3,
                  "default": 1
                }
              ]
            },
            "width": {
              "description": "Sets the line width (in px).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 2
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "marker": {
          "type": "object",
          "properties": {
            "angle": {
              "description": "Sets the marker angle in respect to `angleref`.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": -180,
                      "maximum": 180,
                      "default": 0
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": -180,
                        "maximum": 180,
                        "default": 0
                      }
                    ]
                  }
                }
              ]
            },
            "angleref": {
              "description": "Sets the reference for marker angle. With *previous*, angle 0 points along the line from the previous point to this one. With *up*, angle 0 points toward the top of the screen.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "previous",
                    "up"
                  ],
                  "default": "up"
                }
              ]
            },
            "anglesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `angle`.",
              "type": "string"
            },
            "autocolorscale": {
              "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": true
                }
              ]
            },
            "cauto": {
              "description": "Determines whether or not the color domain is computed with respect to the input data (here in `marker.color`) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if in `marker.color` is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": true
                }
              ]
            },
            "cmax": {
              "description": "Sets the upper bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmin` must be set as well.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": null
                }
              ]
            },
            "cmid": {
              "description": "Sets the mid-point of the color domain by scaling `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color`. Has no effect when `marker.cauto` is `false`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": null
                }
              ]
            },
            "cmin": {
              "description": "Sets the lower bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmax` must be set as well.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": null
                }
              ]
            },
            "color": {
              "description": "Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.cmin` and `marker.cmax` if set.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "coloraxis": {
              "description": "Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "string",
                  "default": null,
                  "pattern": "/^coloraxis([2-9]|[1-9][0-9]+)?$/"
                }
              ]
            },
            "colorbar": {
              "type": "object",
              "properties": {
                "bgcolor": {
                  "description": "Sets the color of padded area.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "bordercolor": {
                  "description": "Sets the axis line color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "borderwidth": {
                  "description": "Sets the width (in px) or the border enclosing this color bar.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 0
                    }
                  ]
                },
                "dtick": {
                  "description": "Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L<f>*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M<n>* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48*"
                },
                "exponentformat": {
                  "description": "Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "none",
                        "e",
                        "E",
                        "power",
                        "SI",
                        "B"
                      ],
                      "default": "B"
                    }
                  ]
                },
                "labelalias": {
                  "default": false,
                  "description": "Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax."
                },
                "len": {
                  "description": "Sets the length of the color bar This measure excludes the padding of both ends. That is, the color bar length is this length minus the padding on both ends.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "lenmode": {
                  "description": "Determines whether this color bar's length (i.e. the measure in the color variation direction) is set in units of plot *fraction* or in *pixels. Use `len` to set the value.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "fraction",
                        "pixels"
                      ],
                      "default": "fraction"
                    }
                  ]
                },
                "minexponent": {
                  "description": "Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 3
                    }
                  ]
                },
                "nticks": {
                  "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 0,
                      "default": 0
                    }
                  ]
                },
                "orientation": {
                  "description": "Sets the orientation of the colorbar.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "h",
                        "v"
                      ],
                      "default": "v"
                    }
                  ]
                },
                "outlinecolor": {
                  "description": "Sets the axis line color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "outlinewidth": {
                  "description": "Sets the width (in px) of the axis line.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "separatethousands": {
                  "description": "If \"true\", even 4-digit integers are separated",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": false
                    }
                  ]
                },
                "showexponent": {
                  "description": "If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "showticklabels": {
                  "description": "Determines whether or not the tick labels are drawn.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                },
                "showtickprefix": {
                  "description": "If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "showticksuffix": {
                  "description": "Same as `showtickprefix` but for tick suffixes.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "thickness": {
                  "description": "Sets the thickness of the color bar This measure excludes the size of the padding, ticks and labels.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 30
                    }
                  ]
                },
                "thicknessmode": {
                  "description": "Determines whether this color bar's thickness (i.e. the measure in the constant color direction) is set in units of plot *fraction* or in *pixels*. Use `thickness` to set the value.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "fraction",
                        "pixels"
                      ],
                      "default": "pixels"
                    }
                  ]
                },
                "tick0": {
                  "description": "Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L<f>* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears."
                },
                "tickangle": {
                  "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": -180,
                      "maximum": 180,
                      "default": "auto"
                    }
                  ]
                },
                "tickcolor": {
                  "description": "Sets the tick color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "tickfont": {
                  "type": "object",
                  "properties": {
                    "color": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    "family": {
                      "pattern": ".*\\S.*$",
                      "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                      "type": "string"
                    },
                    "lineposition": {
                      "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    "shadow": {
                      "default": "none",
                      "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                      "type": "string"
                    },
                    "size": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    "style": {
                      "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "textcase": {
                      "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "variant": {
                      "description": "Sets the variant of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "weight": {
                      "description": "Sets the weight (or boldness) of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    }
                  },
                  "additionalProperties": false
                },
                "tickformat": {
                  "default": "",
                  "description": "Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*",
                  "type": "string"
                },
                "tickformatstops": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "dtickrange": {
                        "description": "range [*min*, *max*], where *min*, *max* - dtick values which describe some zoom level, it is possible to omit *min* or *max* value by passing *null*",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "array",
                            "items": {},
                            "minItems": 2,
                            "maxItems": 2
                          }
                        ]
                      },
                      "enabled": {
                        "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "boolean",
                            "default": true
                          }
                        ]
                      },
                      "name": {
                        "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.",
                        "type": "string"
                      },
                      "templateitemname": {
                        "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.",
                        "type": "string"
                      },
                      "value": {
                        "default": "",
                        "description": "string - dtickformat for described zoom level, the same as *tickformat*",
                        "type": "string"
                      }
                    },
                    "additionalProperties": false
                  },
                  "minItems": 1
                },
                "ticklabeloverflow": {
                  "description": "Determines how we handle tick labels that would overflow either the graph div or the domain of the axis. The default value for inside tick labels is *hide past domain*. In other cases the default is *hide past div*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "allow",
                        "hide past div",
                        "hide past domain"
                      ]
                    }
                  ]
                },
                "ticklabelposition": {
                  "description": "Determines where tick labels are drawn relative to the ticks. Left and right options are used when `orientation` is *h*, top and bottom when `orientation` is *v*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "outside",
                        "inside",
                        "outside top",
                        "inside top",
                        "outside left",
                        "inside left",
                        "outside right",
                        "inside right",
                        "outside bottom",
                        "inside bottom"
                      ],
                      "default": "outside"
                    }
                  ]
                },
                "ticklabelstep": {
                  "description": "Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "default": 1
                    }
                  ]
                },
                "ticklen": {
                  "description": "Sets the tick length (in px).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 5
                    }
                  ]
                },
                "tickmode": {
                  "description": "Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "auto",
                        "linear",
                        "array"
                      ]
                    }
                  ]
                },
                "tickprefix": {
                  "default": "",
                  "description": "Sets a tick label prefix.",
                  "type": "string"
                },
                "ticks": {
                  "description": "Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "outside",
                        "inside",
                        ""
                      ],
                      "default": ""
                    }
                  ]
                },
                "ticksuffix": {
                  "default": "",
                  "description": "Sets a tick label suffix.",
                  "type": "string"
                },
                "ticktext": {
                  "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "string"
                          }
                        ]
                      }
                    }
                  ]
                },
                "ticktextsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.",
                  "type": "string"
                },
                "tickvals": {
                  "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "string"
                          }
                        ]
                      }
                    }
                  ]
                },
                "tickvalssrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.",
                  "type": "string"
                },
                "tickwidth": {
                  "description": "Sets the tick width (in px).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "title": {
                  "type": "object",
                  "properties": {
                    "font": {
                      "type": "object",
                      "properties": {
                        "color": {
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "$ref": "#/$defs/color"
                            }
                          ]
                        },
                        "family": {
                          "pattern": ".*\\S.*$",
                          "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                          "type": "string"
                        },
                        "lineposition": {
                          "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "oneOf": [
                                {
                                  "type": "string",
                                  "enum": [
                                    "none"
                                  ]
                                },
                                {
                                  "type": "string",
                                  "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                                }
                              ],
                              "default": "none"
                            }
                          ]
                        },
                        "shadow": {
                          "default": "none",
                          "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                          "type": "string"
                        },
                        "size": {
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "type": "number",
                              "minimum": 1
                            }
                          ]
                        },
                        "style": {
                          "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "italic"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "textcase": {
                          "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "word caps",
                                "upper",
                                "lower"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "variant": {
                          "description": "Sets the variant of the font.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "small-caps",
                                "all-small-caps",
                                "all-petite-caps",
                                "petite-caps",
                                "unicase"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "weight": {
                          "description": "Sets the weight (or boldness) of the font.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "type": "integer",
                              "minimum": 1,
                              "maximum": 1000,
                              "default": "normal"
                            }
                          ]
                        }
                      },
                      "additionalProperties": false
                    },
                    "side": {
                      "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and  defaults to *right* when `orientation` if *h*.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "right",
                            "top",
                            "bottom"
                          ]
                        }
                      ]
                    },
                    "text": {
                      "description": "Sets the title of the color bar.",
                      "type": "string"
                    }
                  },
                  "additionalProperties": false
                },
                "x": {
                  "description": "Sets the x position with respect to `xref` of the color bar (in plot fraction). When `xref` is *paper*, defaults to 1.02 when `orientation` is *v* and 0.5 when `orientation` is *h*. When `xref` is *container*, defaults to *1* when `orientation` is *v* and 0.5 when `orientation` is *h*. Must be between *0* and *1* if `xref` is *container* and between *-2* and *3* if `xref` is *paper*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number"
                    }
                  ]
                },
                "xanchor": {
                  "description": "Sets this color bar's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the color bar. Defaults to *left* when `orientation` is *v* and *center* when `orientation` is *h*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "left",
                        "center",
                        "right"
                      ]
                    }
                  ]
                },
                "xpad": {
                  "description": "Sets the amount of padding (in px) along the x direction.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 10
                    }
                  ]
                },
                "xref": {
                  "description": "Sets the container `x` refers to. *container* spans the entire `width` of the plot. *paper* refers to the width of the plotting area only.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "container",
                        "paper"
                      ],
                      "default": "paper"
                    }
                  ]
                },
                "y": {
                  "description": "Sets the y position with respect to `yref` of the color bar (in plot fraction). When `yref` is *paper*, defaults to 0.5 when `orientation` is *v* and 1.02 when `orientation` is *h*. When `yref` is *container*, defaults to 0.5 when `orientation` is *v* and 1 when `orientation` is *h*. Must be between *0* and *1* if `yref` is *container* and between *-2* and *3* if `yref` is *paper*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number"
                    }
                  ]
                },
                "yanchor": {
                  "description": "Sets this color bar's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the color bar. Defaults to *middle* when `orientation` is *v* and *bottom* when `orientation` is *h*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "top",
                        "middle",
                        "bottom"
                      ]
                    }
                  ]
                },
                "ypad": {
                  "description": "Sets the amount of padding (in px) along the y direction.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 10
                    }
                  ]
                },
                "yref": {
                  "description": "Sets the container `y` refers to. *container* spans the entire `height` of the plot. *paper* refers to the height of the plotting area only.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "container",
                        "paper"
                      ],
                      "default": "paper"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "colorscale": {
              "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/colorscale",
                  "default": null
                }
              ]
            },
            "colorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `color`.",
              "type": "string"
            },
            "gradient": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the final color of the gradient fill: the center color for radial, the right for horizontal, or the bottom for vertical.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "colorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `color`.",
                  "type": "string"
                },
                "type": {
                  "description": "Sets the type of gradient used to fill the markers",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "radial",
                            "horizontal",
                            "vertical",
                            "none"
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "radial",
                              "horizontal",
                              "vertical",
                              "none"
                            ],
                            "default": "none"
                          }
                        ]
                      }
                    }
                  ]
                },
                "typesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `type`.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "line": {
              "type": "object",
              "properties": {
                "autocolorscale": {
                  "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.line.colorscale`. Has an effect only if in `marker.line.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                },
                "cauto": {
                  "description": "Determines whether or not the color domain is computed with respect to the input data (here in `marker.line.color`) or the bounds set in `marker.line.cmin` and `marker.line.cmax` Has an effect only if in `marker.line.color` is set to a numerical array. Defaults to `false` when `marker.line.cmin` and `marker.line.cmax` are set by the user.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                },
                "cmax": {
                  "description": "Sets the upper bound of the color domain. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color` and if set, `marker.line.cmin` must be set as well.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "default": null
                    }
                  ]
                },
                "cmid": {
                  "description": "Sets the mid-point of the color domain by scaling `marker.line.cmin` and/or `marker.line.cmax` to be equidistant to this point. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color`. Has no effect when `marker.line.cauto` is `false`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "default": null
                    }
                  ]
                },
                "cmin": {
                  "description": "Sets the lower bound of the color domain. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color` and if set, `marker.line.cmax` must be set as well.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "default": null
                    }
                  ]
                },
                "color": {
                  "description": "Sets the marker.line color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.line.cmin` and `marker.line.cmax` if set.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "coloraxis": {
                  "description": "Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "string",
                      "default": null,
                      "pattern": "/^coloraxis([2-9]|[1-9][0-9]+)?$/"
                    }
                  ]
                },
                "colorscale": {
                  "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/colorscale",
                      "default": null
                    }
                  ]
                },
                "colorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `color`.",
                  "type": "string"
                },
                "reversescale": {
                  "description": "Reverses the color mapping if true. Has an effect only if in `marker.line.color` is set to a numerical array. If true, `marker.line.cmin` will correspond to the last color in the array and `marker.line.cmax` will correspond to the first color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": false
                    }
                  ]
                },
                "width": {
                  "description": "Sets the width (in px) of the lines bounding the marker points.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 0
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 0
                          }
                        ]
                      }
                    }
                  ]
                },
                "widthsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `width`.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "maxdisplayed": {
              "description": "Sets a maximum number of points to be drawn on the graph. *0* corresponds to no limit.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "opacity": {
              "description": "Sets the marker opacity.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 1
                      }
                    ]
                  }
                }
              ]
            },
            "opacitysrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `opacity`.",
              "type": "string"
            },
            "reversescale": {
              "description": "Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            },
            "showscale": {
              "description": "Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            },
            "size": {
              "description": "Sets the marker size (in px).",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 6
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 0,
                        "default": 6
                      }
                    ]
                  }
                }
              ]
            },
            "sizemin": {
              "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the minimum size (in px) of the rendered marker points.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "sizemode": {
              "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the rule for which the data in `size` is converted to pixels.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "diameter",
                    "area"
                  ],
                  "default": "diameter"
                }
              ]
            },
            "sizeref": {
              "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the scale factor used to determine the rendered size of marker points. Use with `sizemin` and `sizemode`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": 1
                }
              ]
            },
            "sizesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `size`.",
              "type": "string"
            },
            "standoff": {
              "description": "Moves the marker away from the data point in the direction of `angle` (in px). This can be useful for example if you have another marker at this location and you want to point an arrowhead marker at it.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 0
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 0,
                        "default": 0
                      }
                    ]
                  }
                }
              ]
            },
            "standoffsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `standoff`.",
              "type": "string"
            },
            "symbol": {
              "description": "Sets the marker symbol type. Adding 100 is equivalent to appending *-open* to a symbol name. Adding 200 is equivalent to appending *-dot* to a symbol name. Adding 300 is equivalent to appending *-open-dot* or *dot-open* to a symbol name.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        0,
                        "0",
                        "circle",
                        100,
                        "100",
                        "circle-open",
                        200,
                        "200",
                        "circle-dot",
                        300,
                        "300",
                        "circle-open-dot",
                        1,
                        "1",
                        "square",
                        101,
                        "101",
                        "square-open",
                        201,
                        "201",
                        "square-dot",
                        301,
                        "301",
                        "square-open-dot",
                        2,
                        "2",
                        "diamond",
                        102,
                        "102",
                        "diamond-open",
                        202,
                        "202",
                        "diamond-dot",
                        302,
                        "302",
                        "diamond-open-dot",
                        3,
                        "3",
                        "cross",
                        103,
                        "103",
                        "cross-open",
                        203,
                        "203",
                        "cross-dot",
                        303,
                        "303",
                        "cross-open-dot",
                        4,
                        "4",
                        "x",
                        104,
                        "104",
                        "x-open",
                        204,
                        "204",
                        "x-dot",
                        304,
                        "304",
                        "x-open-dot",
                        5,
                        "5",
                        "triangle-up",
                        105,
                        "105",
                        "triangle-up-open",
                        205,
                        "205",
                        "triangle-up-dot",
                        305,
                        "305",
                        "triangle-up-open-dot",
                        6,
                        "6",
                        "triangle-down",
                        106,
                        "106",
                        "triangle-down-open",
                        206,
                        "206",
                        "triangle-down-dot",
                        306,
                        "306",
                        "triangle-down-open-dot",
                        7,
                        "7",
                        "triangle-left",
                        107,
                        "107",
                        "triangle-left-open",
                        207,
                        "207",
                        "triangle-left-dot",
                        307,
                        "307",
                        "triangle-left-open-dot",
                        8,
                        "8",
                        "triangle-right",
                        108,
                        "108",
                        "triangle-right-open",
                        208,
                        "208",
                        "triangle-right-dot",
                        308,
                        "308",
                        "triangle-right-open-dot",
                        9,
                        "9",
                        "triangle-ne",
                        109,
                        "109",
                        "triangle-ne-open",
                        209,
                        "209",
                        "triangle-ne-dot",
                        309,
                        "309",
                        "triangle-ne-open-dot",
                        10,
                        "10",
                        "triangle-se",
                        110,
                        "110",
                        "triangle-se-open",
                        210,
                        "210",
                        "triangle-se-dot",
                        310,
                        "310",
                        "triangle-se-open-dot",
                        11,
                        "11",
                        "triangle-sw",
                        111,
                        "111",
                        "triangle-sw-open",
                        211,
                        "211",
                        "triangle-sw-dot",
                        311,
                        "311",
                        "triangle-sw-open-dot",
                        12,
                        "12",
                        "triangle-nw",
                        112,
                        "112",
                        "triangle-nw-open",
                        212,
                        "212",
                        "triangle-nw-dot",
                        312,
                        "312",
                        "triangle-nw-open-dot",
                        13,
                        "13",
                        "pentagon",
                        113,
                        "113",
                        "pentagon-open",
                        213,
                        "213",
                        "pentagon-dot",
                        313,
                        "313",
                        "pentagon-open-dot",
                        14,
                        "14",
                        "hexagon",
                        114,
                        "114",
                        "hexagon-open",
                        214,
                        "214",
                        "hexagon-dot",
                        314,
                        "314",
                        "hexagon-open-dot",
                        15,
                        "15",
                        "hexagon2",
                        115,
                        "115",
                        "hexagon2-open",
                        215,
                        "215",
                        "hexagon2-dot",
                        315,
                        "315",
                        "hexagon2-open-dot",
                        16,
                        "16",
                        "octagon",
                        116,
                        "116",
                        "octagon-open",
                        216,
                        "216",
                        "octagon-dot",
                        316,
                        "316",
                        "octagon-open-dot",
                        17,
                        "17",
                        "star",
                        117,
                        "117",
                        "star-open",
                        217,
                        "217",
                        "star-dot",
                        317,
                        "317",
                        "star-open-dot",
                        18,
                        "18",
                        "hexagram",
                        118,
                        "118",
                        "hexagram-open",
                        218,
                        "218",
                        "hexagram-dot",
                        318,
                        "318",
                        "hexagram-open-dot",
                        19,
                        "19",
                        "star-triangle-up",
                        119,
                        "119",
                        "star-triangle-up-open",
                        219,
                        "219",
                        "star-triangle-up-dot",
                        319,
                        "319",
                        "star-triangle-up-open-dot",
                        20,
                        "20",
                        "star-triangle-down",
                        120,
                        "120",
                        "star-triangle-down-open",
                        220,
                        "220",
                        "star-triangle-down-dot",
                        320,
                        "320",
                        "star-triangle-down-open-dot",
                        21,
                        "21",
                        "star-square",
                        121,
                        "121",
                        "star-square-open",
                        221,
                        "221",
                        "star-square-dot",
                        321,
                        "321",
                        "star-square-open-dot",
                        22,
                        "22",
                        "star-diamond",
                        122,
                        "122",
                        "star-diamond-open",
                        222,
                        "222",
                        "star-diamond-dot",
                        322,
                        "322",
                        "star-diamond-open-dot",
                        23,
                        "23",
                        "diamond-tall",
                        123,
                        "123",
                        "diamond-tall-open",
                        223,
                        "223",
                        "diamond-tall-dot",
                        323,
                        "323",
                        "diamond-tall-open-dot",
                        24,
                        "24",
                        "diamond-wide",
                        124,
                        "124",
                        "diamond-wide-open",
                        224,
                        "224",
                        "diamond-wide-dot",
                        324,
                        "324",
                        "diamond-wide-open-dot",
                        25,
                        "25",
                        "hourglass",
                        125,
                        "125",
                        "hourglass-open",
                        26,
                        "26",
                        "bowtie",
                        126,
                        "126",
                        "bowtie-open",
                        27,
                        "27",
                        "circle-cross",
                        127,
                        "127",
                        "circle-cross-open",
                        28,
                        "28",
                        "circle-x",
                        128,
                        "128",
                        "circle-x-open",
                        29,
                        "29",
                        "square-cross",
                        129,
                        "129",
                        "square-cross-open",
                        30,
                        "30",
                        "square-x",
                        130,
                        "130",
                        "square-x-open",
                        31,
                        "31",
                        "diamond-cross",
                        131,
                        "131",
                        "diamond-cross-open",
                        32,
                        "32",
                        "diamond-x",
                        132,
                        "132",
                        "diamond-x-open",
                        33,
                        "33",
                        "cross-thin",
                        133,
                        "133",
                        "cross-thin-open",
                        34,
                        "34",
                        "x-thin",
                        134,
                        "134",
                        "x-thin-open",
                        35,
                        "35",
                        "asterisk",
                        135,
                        "135",
                        "asterisk-open",
                        36,
                        "36",
                        "hash",
                        136,
                        "136",
                        "hash-open",
                        236,
                        "236",
                        "hash-dot",
                        336,
                        "336",
                        "hash-open-dot",
                        37,
                        "37",
                        "y-up",
                        137,
                        "137",
                        "y-up-open",
                        38,
                        "38",
                        "y-down",
                        138,
                        "138",
                        "y-down-open",
                        39,
                        "39",
                        "y-left",
                        139,
                        "139",
                        "y-left-open",
                        40,
                        "40",
                        "y-right",
                        140,
                        "140",
                        "y-right-open",
                        41,
                        "41",
                        "line-ew",
                        141,
                        "141",
                        "line-ew-open",
                        42,
                        "42",
                        "line-ns",
                        142,
                        "142",
                        "line-ns-open",
                        43,
                        "43",
                        "line-ne",
                        143,
                        "143",
                        "line-ne-open",
                        44,
                        "44",
                        "line-nw",
                        144,
                        "144",
                        "line-nw-open",
                        45,
                        "45",
                        "arrow-up",
                        145,
                        "145",
                        "arrow-up-open",
                        46,
                        "46",
                        "arrow-down",
                        146,
                        "146",
                        "arrow-down-open",
                        47,
                        "47",
                        "arrow-left",
                        147,
                        "147",
                        "arrow-left-open",
                        48,
                        "48",
                        "arrow-right",
                        148,
                        "148",
                        "arrow-right-open",
                        49,
                        "49",
                        "arrow-bar-up",
                        149,
                        "149",
                        "arrow-bar-up-open",
                        50,
                        "50",
                        "arrow-bar-down",
                        150,
                        "150",
                        "arrow-bar-down-open",
                        51,
                        "51",
                        "arrow-bar-left",
                        151,
                        "151",
                        "arrow-bar-left-open",
                        52,
                        "52",
                        "arrow-bar-right",
                        152,
                        "152",
                        "arrow-bar-right-open",
                        53,
                        "53",
                        "arrow",
                        153,
                        "153",
                        "arrow-open",
                        54,
                        "54",
                        "arrow-wide",
                        154,
                        "154",
                        "arrow-wide-open"
                      ],
                      "default": "circle"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          0,
                          "0",
                          "circle",
                          100,
                          "100",
                          "circle-open",
                          200,
                          "200",
                          "circle-dot",
                          300,
                          "300",
                          "circle-open-dot",
                          1,
                          "1",
                          "square",
                          101,
                          "101",
                          "square-open",
                          201,
                          "201",
                          "square-dot",
                          301,
                          "301",
                          "square-open-dot",
                          2,
                          "2",
                          "diamond",
                          102,
                          "102",
                          "diamond-open",
                          202,
                          "202",
                          "diamond-dot",
                          302,
                          "302",
                          "diamond-open-dot",
                          3,
                          "3",
                          "cross",
                          103,
                          "103",
                          "cross-open",
                          203,
                          "203",
                          "cross-dot",
                          303,
                          "303",
                          "cross-open-dot",
                          4,
                          "4",
                          "x",
                          104,
                          "104",
                          "x-open",
                          204,
                          "204",
                          "x-dot",
                          304,
                          "304",
                          "x-open-dot",
                          5,
                          "5",
                          "triangle-up",
                          105,
                          "105",
                          "triangle-up-open",
                          205,
                          "205",
                          "triangle-up-dot",
                          305,
                          "305",
                          "triangle-up-open-dot",
                          6,
                          "6",
                          "triangle-down",
                          106,
                          "106",
                          "triangle-down-open",
                          206,
                          "206",
                          "triangle-down-dot",
                          306,
                          "306",
                          "triangle-down-open-dot",
                          7,
                          "7",
                          "triangle-left",
                          107,
                          "107",
                          "triangle-left-open",
                          207,
                          "207",
                          "triangle-left-dot",
                          307,
                          "307",
                          "triangle-left-open-dot",
                          8,
                          "8",
                          "triangle-right",
                          108,
                          "108",
                          "triangle-right-open",
                          208,
                          "208",
                          "triangle-right-dot",
                          308,
                          "308",
                          "triangle-right-open-dot",
                          9,
                          "9",
                          "triangle-ne",
                          109,
                          "109",
                          "triangle-ne-open",
                          209,
                          "209",
                          "triangle-ne-dot",
                          309,
                          "309",
                          "triangle-ne-open-dot",
                          10,
                          "10",
                          "triangle-se",
                          110,
                          "110",
                          "triangle-se-open",
                          210,
                          "210",
                          "triangle-se-dot",
                          310,
                          "310",
                          "triangle-se-open-dot",
                          11,
                          "11",
                          "triangle-sw",
                          111,
                          "111",
                          "triangle-sw-open",
                          211,
                          "211",
                          "triangle-sw-dot",
                          311,
                          "311",
                          "triangle-sw-open-dot",
                          12,
                          "12",
                          "triangle-nw",
                          112,
                          "112",
                          "triangle-nw-open",
                          212,
                          "212",
                          "triangle-nw-dot",
                          312,
                          "312",
                          "triangle-nw-open-dot",
                          13,
                          "13",
                          "pentagon",
                          113,
                          "113",
                          "pentagon-open",
                          213,
                          "213",
                          "pentagon-dot",
                          313,
                          "313",
                          "pentagon-open-dot",
                          14,
                          "14",
                          "hexagon",
                          114,
                          "114",
                          "hexagon-open",
                          214,
                          "214",
                          "hexagon-dot",
                          314,
                          "314",
                          "hexagon-open-dot",
                          15,
                          "15",
                          "hexagon2",
                          115,
                          "115",
                          "hexagon2-open",
                          215,
                          "215",
                          "hexagon2-dot",
                          315,
                          "315",
                          "hexagon2-open-dot",
                          16,
                          "16",
                          "octagon",
                          116,
                          "116",
                          "octagon-open",
                          216,
                          "216",
                          "octagon-dot",
                          316,
                          "316",
                          "octagon-open-dot",
                          17,
                          "17",
                          "star",
                          117,
                          "117",
                          "star-open",
                          217,
                          "217",
                          "star-dot",
                          317,
                          "317",
                          "star-open-dot",
                          18,
                          "18",
                          "hexagram",
                          118,
                          "118",
                          "hexagram-open",
                          218,
                          "218",
                          "hexagram-dot",
                          318,
                          "318",
                          "hexagram-open-dot",
                          19,
                          "19",
                          "star-triangle-up",
                          119,
                          "119",
                          "star-triangle-up-open",
                          219,
                          "219",
                          "star-triangle-up-dot",
                          319,
                          "319",
                          "star-triangle-up-open-dot",
                          20,
                          "20",
                          "star-triangle-down",
                          120,
                          "120",
                          "star-triangle-down-open",
                          220,
                          "220",
                          "star-triangle-down-dot",
                          320,
                          "320",
                          "star-triangle-down-open-dot",
                          21,
                          "21",
                          "star-square",
                          121,
                          "121",
                          "star-square-open",
                          221,
                          "221",
                          "star-square-dot",
                          321,
                          "321",
                          "star-square-open-dot",
                          22,
                          "22",
                          "star-diamond",
                          122,
                          "122",
                          "star-diamond-open",
                          222,
                          "222",
                          "star-diamond-dot",
                          322,
                          "322",
                          "star-diamond-open-dot",
                          23,
                          "23",
                          "diamond-tall",
                          123,
                          "123",
                          "diamond-tall-open",
                          223,
                          "223",
                          "diamond-tall-dot",
                          323,
                          "323",
                          "diamond-tall-open-dot",
                          24,
                          "24",
                          "diamond-wide",
                          124,
                          "124",
                          "diamond-wide-open",
                          224,
                          "224",
                          "diamond-wide-dot",
                          324,
                          "324",
                          "diamond-wide-open-dot",
                          25,
                          "25",
                          "hourglass",
                          125,
                          "125",
                          "hourglass-open",
                          26,
                          "26",
                          "bowtie",
                          126,
                          "126",
                          "bowtie-open",
                          27,
                          "27",
                          "circle-cross",
                          127,
                          "127",
                          "circle-cross-open",
                          28,
                          "28",
                          "circle-x",
                          128,
                          "128",
                          "circle-x-open",
                          29,
                          "29",
                          "square-cross",
                          129,
                          "129",
                          "square-cross-open",
                          30,
                          "30",
                          "square-x",
                          130,
                          "130",
                          "square-x-open",
                          31,
                          "31",
                          "diamond-cross",
                          131,
                          "131",
                          "diamond-cross-open",
                          32,
                          "32",
                          "diamond-x",
                          132,
                          "132",
                          "diamond-x-open",
                          33,
                          "33",
                          "cross-thin",
                          133,
                          "133",
                          "cross-thin-open",
                          34,
                          "34",
                          "x-thin",
                          134,
                          "134",
                          "x-thin-open",
                          35,
                          "35",
                          "asterisk",
                          135,
                          "135",
                          "asterisk-open",
                          36,
                          "36",
                          "hash",
                          136,
                          "136",
                          "hash-open",
                          236,
                          "236",
                          "hash-dot",
                          336,
                          "336",
                          "hash-open-dot",
                          37,
                          "37",
                          "y-up",
                          137,
                          "137",
                          "y-up-open",
                          38,
                          "38",
                          "y-down",
                          138,
                          "138",
                          "y-down-open",
                          39,
                          "39",
                          "y-left",
                          139,
                          "139",
                          "y-left-open",
                          40,
                          "40",
                          "y-right",
                          140,
                          "140",
                          "y-right-open",
                          41,
                          "41",
                          "line-ew",
                          141,
                          "141",
                          "line-ew-open",
                          42,
                          "42",
                          "line-ns",
                          142,
                          "142",
                          "line-ns-open",
                          43,
                          "43",
                          "line-ne",
                          143,
                          "143",
                          "line-ne-open",
                          44,
                          "44",
                          "line-nw",
                          144,
                          "144",
                          "line-nw-open",
                          45,
                          "45",
                          "arrow-up",
                          145,
                          "145",
                          "arrow-up-open",
                          46,
                          "46",
                          "arrow-down",
                          146,
                          "146",
                          "arrow-down-open",
                          47,
                          "47",
                          "arrow-left",
                          147,
                          "147",
                          "arrow-left-open",
                          48,
                          "48",
                          "arrow-right",
                          148,
                          "148",
                          "arrow-right-open",
                          49,
                          "49",
                          "arrow-bar-up",
                          149,
                          "149",
                          "arrow-bar-up-open",
                          50,
                          "50",
                          "arrow-bar-down",
                          150,
                          "150",
                          "arrow-bar-down-open",
                          51,
                          "51",
                          "arrow-bar-left",
                          151,
                          "151",
                          "arrow-bar-left-open",
                          52,
                          "52",
                          "arrow-bar-right",
                          152,
                          "152",
                          "arrow-bar-right-open",
                          53,
                          "53",
                          "arrow",
                          153,
                          "153",
                          "arrow-open",
                          54,
                          "54",
                          "arrow-wide",
                          154,
                          "154",
                          "arrow-wide-open"
                        ],
                        "default": "circle"
                      }
                    ]
                  }
                }
              ]
            },
            "symbolsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `symbol`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "metasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `meta`.",
          "type": "string"
        },
        "mode": {
          "description": "Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover. If there are less than 20 points and the trace is not stacked then the default is *lines+markers*. Otherwise, *lines*.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "oneOf": [
                {
                  "type": "string",
                  "enum": [
                    "none"
                  ]
                },
                {
                  "type": "string",
                  "pattern": "^(lines|markers|text)(\\+(lines|markers|text))*$"
                }
              ]
            }
          ]
        },
        "name": {
          "description": "Sets the trace name. The trace name appears as the legend item and on hover.",
          "type": "string"
        },
        "opacity": {
          "description": "Sets the opacity of the trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0,
              "maximum": 1,
              "default": 1
            }
          ]
        },
        "r": {
          "description": "Sets the radial coordinates",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "r0": {
          "default": 0,
          "description": "Alternate to `r`. Builds a linear space of r coordinates. Use with `dr` where `r0` is the starting coordinate and `dr` the step."
        },
        "rsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `r`.",
          "type": "string"
        },
        "selected": {
          "type": "object",
          "properties": {
            "marker": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the marker color of selected points.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "opacity": {
                  "description": "Sets the marker opacity of selected points.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1
                    }
                  ]
                },
                "size": {
                  "description": "Sets the marker size of selected points.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "textfont": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the text font color of selected points.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                }
              },
              "additionalProperties": false
            }
          },
          "additionalProperties": false
        },
        "selectedpoints": {
          "description": "Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect."
        },
        "showlegend": {
          "description": "Determines whether or not an item corresponding to this trace is shown in the legend.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "stream": {
          "type": "object",
          "properties": {
            "maxpoints": {
              "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 10000,
                  "default": 500
                }
              ]
            },
            "token": {
              "pattern": ".*\\S.*$",
              "description": "The stream id number links a data trace on a plot with a stream. See <https://chart-studio.plotly.com/settings> for more details.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "subplot": {
          "description": "Sets a reference between this trace's data coordinates and a polar subplot. If *polar* (the default value), the data refer to `layout.polar`. If *polar2*, the data refer to `layout.polar2`, and so on.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "polar",
              "pattern": "^polar([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "text": {
          "description": "Sets text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "textfont": {
          "type": "object",
          "properties": {
            "color": {
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "colorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `color`.",
              "type": "string"
            },
            "family": {
              "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
              "oneOf": [
                {
                  "pattern": ".*\\S.*$",
                  "type": "string"
                },
                {
                  "type": "array",
                  "items": {
                    "pattern": ".*\\S.*$",
                    "type": "string"
                  }
                },
                {
                  "$ref": "#/$defs/query-string"
                }
              ]
            },
            "familysrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `family`.",
              "type": "string"
            },
            "lineposition": {
              "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "oneOf": [
                          {
                            "type": "string",
                            "enum": [
                              "none"
                            ]
                          },
                          {
                            "type": "string",
                            "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                          }
                        ],
                        "default": "none"
                      }
                    ]
                  }
                }
              ]
            },
            "linepositionsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.",
              "type": "string"
            },
            "shadow": {
              "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
              "oneOf": [
                {
                  "default": "none",
                  "type": "string"
                },
                {
                  "type": "array",
                  "items": {
                    "default": "none",
                    "type": "string"
                  }
                }
              ]
            },
            "shadowsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `shadow`.",
              "type": "string"
            },
            "size": {
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 1
                      }
                    ]
                  }
                }
              ]
            },
            "sizesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `size`.",
              "type": "string"
            },
            "style": {
              "description": "Sets whether a font should be styled with a normal or italic face from its family.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "italic"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "stylesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `style`.",
              "type": "string"
            },
            "textcase": {
              "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "word caps",
                          "upper",
                          "lower"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "textcasesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `textcase`.",
              "type": "string"
            },
            "variant": {
              "description": "Sets the variant of the font.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "small-caps",
                          "all-small-caps",
                          "all-petite-caps",
                          "petite-caps",
                          "unicase"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "variantsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `variant`.",
              "type": "string"
            },
            "weight": {
              "description": "Sets the weight (or boldness) of the font.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 1000,
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "weightsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `weight`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "textposition": {
          "description": "Sets the positions of the `text` elements with respects to the (x,y) coordinates.",
          "oneOf": [
            {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "top left",
                    "top center",
                    "top right",
                    "middle left",
                    "middle center",
                    "middle right",
                    "bottom left",
                    "bottom center",
                    "bottom right"
                  ],
                  "default": "middle center"
                }
              ]
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "enum": [
                      "top left",
                      "top center",
                      "top right",
                      "middle left",
                      "middle center",
                      "middle right",
                      "bottom left",
                      "bottom center",
                      "bottom right"
                    ],
                    "default": "middle center"
                  }
                ]
              }
            }
          ]
        },
        "textpositionsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `textposition`.",
          "type": "string"
        },
        "textsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `text`.",
          "type": "string"
        },
        "texttemplate": {
          "description": "Template string used for rendering the information text that appear on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". <https://github.com/d3/d3-format/tree/v1.4.5#d3-format> for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format> for details on the date formatting syntax. Every attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `r`, `theta` and `text`.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "texttemplatesrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.",
          "type": "string"
        },
        "theta": {
          "description": "Sets the angular coordinates",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "theta0": {
          "default": 0,
          "description": "Alternate to `theta`. Builds a linear space of theta coordinates. Use with `dtheta` where `theta0` is the starting coordinate and `dtheta` the step."
        },
        "thetasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `theta`.",
          "type": "string"
        },
        "thetaunit": {
          "description": "Sets the unit of input *theta* values. Has an effect only when on *linear* angular axes.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "radians",
                "degrees",
                "gradians"
              ],
              "default": "degrees"
            }
          ]
        },
        "uid": {
          "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.",
          "type": "string"
        },
        "uirevision": {
          "description": "Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves."
        },
        "unselected": {
          "type": "object",
          "properties": {
            "marker": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the marker color of unselected points, applied only when a selection exists.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "opacity": {
                  "description": "Sets the marker opacity of unselected points, applied only when a selection exists.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1
                    }
                  ]
                },
                "size": {
                  "description": "Sets the marker size of unselected points, applied only when a selection exists.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "textfont": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the text font color of unselected points, applied only when a selection exists.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                }
              },
              "additionalProperties": false
            }
          },
          "additionalProperties": false
        },
        "visible": {
          "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                true,
                false,
                "legendonly"
              ],
              "default": true
            }
          ]
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false
    },
    "Scatterpolargl": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "$id": "https://visivo.io/trace-properties/schema",
      "description": "A schema to validate plotly trace properties",
      "type": "object",
      "properties": {
        "type": {
          "const": "scatterpolargl"
        },
        "connectgaps": {
          "description": "Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": false
            }
          ]
        },
        "customdata": {
          "description": "Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "customdatasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `customdata`.",
          "type": "string"
        },
        "dr": {
          "description": "Sets the r coordinate step.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": 1
            }
          ]
        },
        "dtheta": {
          "description": "Sets the theta coordinate step. By default, the `dtheta` step equals the subplot's period divided by the length of the `r` coordinates.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number"
            }
          ]
        },
        "fill": {
          "description": "Sets the area to fill with a solid color. Defaults to *none* unless this trace is stacked, then it gets *tonexty* (*tonextx*) if `orientation` is *v* (*h*) Use with `fillcolor` if not *none*. *tozerox* and *tozeroy* fill to x=0 and y=0 respectively. *tonextx* and *tonexty* fill between the endpoints of this trace and the endpoints of the trace before it, connecting those endpoints with straight lines (to make a stacked area graph); if there is no trace before it, they behave like *tozerox* and *tozeroy*. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape. *tonext* fills the space between two traces if one completely encloses the other (eg consecutive contour lines), and behaves like *toself* if there is no trace before it. *tonext* should not be used if one trace does not enclose the other. Traces in a `stackgroup` will only fill to (or be filled to) other traces in the same group. With multiple `stackgroup`s or some traces stacked and some not, if fill-linked traces are not already consecutive, the later ones will be pushed down in the drawing order.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "none",
                "tozeroy",
                "tozerox",
                "tonexty",
                "tonextx",
                "toself",
                "tonext"
              ],
              "default": "none"
            }
          ]
        },
        "fillcolor": {
          "description": "Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "$ref": "#/$defs/color"
            }
          ]
        },
        "hoverinfo": {
          "description": "Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired.",
          "oneOf": [
            {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "oneOf": [
                    {
                      "type": "string",
                      "enum": [
                        "all",
                        "none",
                        "skip"
                      ]
                    },
                    {
                      "type": "string",
                      "pattern": "^(r|theta|text|name)(\\+(r|theta|text|name))*$"
                    }
                  ],
                  "default": "all"
                }
              ]
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "oneOf": [
                      {
                        "type": "string",
                        "enum": [
                          "all",
                          "none",
                          "skip"
                        ]
                      },
                      {
                        "type": "string",
                        "pattern": "^(r|theta|text|name)(\\+(r|theta|text|name))*$"
                      }
                    ],
                    "default": "all"
                  }
                ]
              }
            }
          ]
        },
        "hoverinfosrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.",
          "type": "string"
        },
        "hoverlabel": {
          "type": "object",
          "properties": {
            "align": {
              "description": "Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "left",
                        "right",
                        "auto"
                      ],
                      "default": "auto"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "left",
                          "right",
                          "auto"
                        ],
                        "default": "auto"
                      }
                    ]
                  }
                }
              ]
            },
            "alignsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `align`.",
              "type": "string"
            },
            "bgcolor": {
              "description": "Sets the background color of the hover labels for this trace",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "bgcolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.",
              "type": "string"
            },
            "bordercolor": {
              "description": "Sets the border color of the hover labels for this trace.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "bordercolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.",
              "type": "string"
            },
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "colorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `color`.",
                  "type": "string"
                },
                "family": {
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "oneOf": [
                    {
                      "pattern": ".*\\S.*$",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "pattern": ".*\\S.*$",
                        "type": "string"
                      }
                    },
                    {
                      "$ref": "#/$defs/query-string"
                    }
                  ]
                },
                "familysrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `family`.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "oneOf": [
                              {
                                "type": "string",
                                "enum": [
                                  "none"
                                ]
                              },
                              {
                                "type": "string",
                                "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                              }
                            ],
                            "default": "none"
                          }
                        ]
                      }
                    }
                  ]
                },
                "linepositionsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.",
                  "type": "string"
                },
                "shadow": {
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "oneOf": [
                    {
                      "default": "none",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "default": "none",
                        "type": "string"
                      }
                    }
                  ]
                },
                "shadowsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `shadow`.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 1
                          }
                        ]
                      }
                    }
                  ]
                },
                "sizesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `size`.",
                  "type": "string"
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "italic"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "stylesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `style`.",
                  "type": "string"
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "word caps",
                              "upper",
                              "lower"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "textcasesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `textcase`.",
                  "type": "string"
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "small-caps",
                              "all-small-caps",
                              "all-petite-caps",
                              "petite-caps",
                              "unicase"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "variantsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `variant`.",
                  "type": "string"
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 1000,
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "weightsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `weight`.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "namelength": {
              "description": "Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": -1,
                      "default": 15
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "integer",
                        "minimum": -1,
                        "default": 15
                      }
                    ]
                  }
                }
              ]
            },
            "namelengthsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `namelength`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "hovertemplate": {
          "description": "Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". <https://github.com/d3/d3-format/tree/v1.4.5#d3-format> for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format> for details on the date formatting syntax. The variables available in `hovertemplate` are the ones emitted as event data described at this link <https://plotly.com/javascript/plotlyjs-events/#event-data>. Additionally, every attributes that can be specified per-point (the ones that are `arrayOk: true`) are available.  Anything contained in tag `<extra>` is displayed in the secondary box, for example \"<extra>{fullData.name}</extra>\". To hide the secondary box completely, use an empty tag `<extra></extra>`.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "hovertemplatesrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.",
          "type": "string"
        },
        "hovertext": {
          "description": "Sets hover text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "hovertextsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.",
          "type": "string"
        },
        "ids": {
          "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "idssrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `ids`.",
          "type": "string"
        },
        "legend": {
          "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "legend",
              "pattern": "^legend([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "legendgroup": {
          "default": "",
          "description": "Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items.",
          "type": "string"
        },
        "legendgrouptitle": {
          "type": "object",
          "properties": {
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "family": {
                  "pattern": ".*\\S.*$",
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                "shadow": {
                  "default": "none",
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "text": {
              "default": "",
              "description": "Sets the title of the legend group.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "legendrank": {
          "description": "Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": 1000
            }
          ]
        },
        "legendwidth": {
          "description": "Sets the width (in px or fraction) of the legend for this trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0
            }
          ]
        },
        "line": {
          "type": "object",
          "properties": {
            "color": {
              "description": "Sets the line color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "dash": {
              "description": "Sets the style of the lines.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "dash",
                    "dashdot",
                    "dot",
                    "longdash",
                    "longdashdot",
                    "solid"
                  ],
                  "default": "solid"
                }
              ]
            },
            "width": {
              "description": "Sets the line width (in px).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 2
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "marker": {
          "type": "object",
          "properties": {
            "angle": {
              "description": "Sets the marker angle in respect to `angleref`.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": -180,
                      "maximum": 180,
                      "default": 0
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": -180,
                        "maximum": 180,
                        "default": 0
                      }
                    ]
                  }
                }
              ]
            },
            "anglesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `angle`.",
              "type": "string"
            },
            "autocolorscale": {
              "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": true
                }
              ]
            },
            "cauto": {
              "description": "Determines whether or not the color domain is computed with respect to the input data (here in `marker.color`) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if in `marker.color` is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": true
                }
              ]
            },
            "cmax": {
              "description": "Sets the upper bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmin` must be set as well.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": null
                }
              ]
            },
            "cmid": {
              "description": "Sets the mid-point of the color domain by scaling `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color`. Has no effect when `marker.cauto` is `false`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": null
                }
              ]
            },
            "cmin": {
              "description": "Sets the lower bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmax` must be set as well.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": null
                }
              ]
            },
            "color": {
              "description": "Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.cmin` and `marker.cmax` if set.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "coloraxis": {
              "description": "Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "string",
                  "default": null,
                  "pattern": "/^coloraxis([2-9]|[1-9][0-9]+)?$/"
                }
              ]
            },
            "colorbar": {
              "type": "object",
              "properties": {
                "bgcolor": {
                  "description": "Sets the color of padded area.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "bordercolor": {
                  "description": "Sets the axis line color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "borderwidth": {
                  "description": "Sets the width (in px) or the border enclosing this color bar.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 0
                    }
                  ]
                },
                "dtick": {
                  "description": "Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L<f>*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M<n>* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48*"
                },
                "exponentformat": {
                  "description": "Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "none",
                        "e",
                        "E",
                        "power",
                        "SI",
                        "B"
                      ],
                      "default": "B"
                    }
                  ]
                },
                "labelalias": {
                  "default": false,
                  "description": "Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax."
                },
                "len": {
                  "description": "Sets the length of the color bar This measure excludes the padding of both ends. That is, the color bar length is this length minus the padding on both ends.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "lenmode": {
                  "description": "Determines whether this color bar's length (i.e. the measure in the color variation direction) is set in units of plot *fraction* or in *pixels. Use `len` to set the value.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "fraction",
                        "pixels"
                      ],
                      "default": "fraction"
                    }
                  ]
                },
                "minexponent": {
                  "description": "Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 3
                    }
                  ]
                },
                "nticks": {
                  "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 0,
                      "default": 0
                    }
                  ]
                },
                "orientation": {
                  "description": "Sets the orientation of the colorbar.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "h",
                        "v"
                      ],
                      "default": "v"
                    }
                  ]
                },
                "outlinecolor": {
                  "description": "Sets the axis line color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "outlinewidth": {
                  "description": "Sets the width (in px) of the axis line.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "separatethousands": {
                  "description": "If \"true\", even 4-digit integers are separated",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": false
                    }
                  ]
                },
                "showexponent": {
                  "description": "If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "showticklabels": {
                  "description": "Determines whether or not the tick labels are drawn.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                },
                "showtickprefix": {
                  "description": "If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "showticksuffix": {
                  "description": "Same as `showtickprefix` but for tick suffixes.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "thickness": {
                  "description": "Sets the thickness of the color bar This measure excludes the size of the padding, ticks and labels.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 30
                    }
                  ]
                },
                "thicknessmode": {
                  "description": "Determines whether this color bar's thickness (i.e. the measure in the constant color direction) is set in units of plot *fraction* or in *pixels*. Use `thickness` to set the value.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "fraction",
                        "pixels"
                      ],
                      "default": "pixels"
                    }
                  ]
                },
                "tick0": {
                  "description": "Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L<f>* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears."
                },
                "tickangle": {
                  "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": -180,
                      "maximum": 180,
                      "default": "auto"
                    }
                  ]
                },
                "tickcolor": {
                  "description": "Sets the tick color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "tickfont": {
                  "type": "object",
                  "properties": {
                    "color": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    "family": {
                      "pattern": ".*\\S.*$",
                      "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                      "type": "string"
                    },
                    "lineposition": {
                      "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    "shadow": {
                      "default": "none",
                      "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                      "type": "string"
                    },
                    "size": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    "style": {
                      "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "textcase": {
                      "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "variant": {
                      "description": "Sets the variant of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "weight": {
                      "description": "Sets the weight (or boldness) of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    }
                  },
                  "additionalProperties": false
                },
                "tickformat": {
                  "default": "",
                  "description": "Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*",
                  "type": "string"
                },
                "tickformatstops": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "dtickrange": {
                        "description": "range [*min*, *max*], where *min*, *max* - dtick values which describe some zoom level, it is possible to omit *min* or *max* value by passing *null*",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "array",
                            "items": {},
                            "minItems": 2,
                            "maxItems": 2
                          }
                        ]
                      },
                      "enabled": {
                        "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "boolean",
                            "default": true
                          }
                        ]
                      },
                      "name": {
                        "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.",
                        "type": "string"
                      },
                      "templateitemname": {
                        "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.",
                        "type": "string"
                      },
                      "value": {
                        "default": "",
                        "description": "string - dtickformat for described zoom level, the same as *tickformat*",
                        "type": "string"
                      }
                    },
                    "additionalProperties": false
                  },
                  "minItems": 1
                },
                "ticklabeloverflow": {
                  "description": "Determines how we handle tick labels that would overflow either the graph div or the domain of the axis. The default value for inside tick labels is *hide past domain*. In other cases the default is *hide past div*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "allow",
                        "hide past div",
                        "hide past domain"
                      ]
                    }
                  ]
                },
                "ticklabelposition": {
                  "description": "Determines where tick labels are drawn relative to the ticks. Left and right options are used when `orientation` is *h*, top and bottom when `orientation` is *v*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "outside",
                        "inside",
                        "outside top",
                        "inside top",
                        "outside left",
                        "inside left",
                        "outside right",
                        "inside right",
                        "outside bottom",
                        "inside bottom"
                      ],
                      "default": "outside"
                    }
                  ]
                },
                "ticklabelstep": {
                  "description": "Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "default": 1
                    }
                  ]
                },
                "ticklen": {
                  "description": "Sets the tick length (in px).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 5
                    }
                  ]
                },
                "tickmode": {
                  "description": "Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "auto",
                        "linear",
                        "array"
                      ]
                    }
                  ]
                },
                "tickprefix": {
                  "default": "",
                  "description": "Sets a tick label prefix.",
                  "type": "string"
                },
                "ticks": {
                  "description": "Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "outside",
                        "inside",
                        ""
                      ],
                      "default": ""
                    }
                  ]
                },
                "ticksuffix": {
                  "default": "",
                  "description": "Sets a tick label suffix.",
                  "type": "string"
                },
                "ticktext": {
                  "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "string"
                          }
                        ]
                      }
                    }
                  ]
                },
                "ticktextsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.",
                  "type": "string"
                },
                "tickvals": {
                  "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "string"
                          }
                        ]
                      }
                    }
                  ]
                },
                "tickvalssrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.",
                  "type": "string"
                },
                "tickwidth": {
                  "description": "Sets the tick width (in px).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "title": {
                  "type": "object",
                  "properties": {
                    "font": {
                      "type": "object",
                      "properties": {
                        "color": {
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "$ref": "#/$defs/color"
                            }
                          ]
                        },
                        "family": {
                          "pattern": ".*\\S.*$",
                          "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                          "type": "string"
                        },
                        "lineposition": {
                          "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "oneOf": [
                                {
                                  "type": "string",
                                  "enum": [
                                    "none"
                                  ]
                                },
                                {
                                  "type": "string",
                                  "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                                }
                              ],
                              "default": "none"
                            }
                          ]
                        },
                        "shadow": {
                          "default": "none",
                          "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                          "type": "string"
                        },
                        "size": {
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "type": "number",
                              "minimum": 1
                            }
                          ]
                        },
                        "style": {
                          "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "italic"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "textcase": {
                          "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "word caps",
                                "upper",
                                "lower"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "variant": {
                          "description": "Sets the variant of the font.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "small-caps",
                                "all-small-caps",
                                "all-petite-caps",
                                "petite-caps",
                                "unicase"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "weight": {
                          "description": "Sets the weight (or boldness) of the font.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "type": "integer",
                              "minimum": 1,
                              "maximum": 1000,
                              "default": "normal"
                            }
                          ]
                        }
                      },
                      "additionalProperties": false
                    },
                    "side": {
                      "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and  defaults to *right* when `orientation` if *h*.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "right",
                            "top",
                            "bottom"
                          ]
                        }
                      ]
                    },
                    "text": {
                      "description": "Sets the title of the color bar.",
                      "type": "string"
                    }
                  },
                  "additionalProperties": false
                },
                "x": {
                  "description": "Sets the x position with respect to `xref` of the color bar (in plot fraction). When `xref` is *paper*, defaults to 1.02 when `orientation` is *v* and 0.5 when `orientation` is *h*. When `xref` is *container*, defaults to *1* when `orientation` is *v* and 0.5 when `orientation` is *h*. Must be between *0* and *1* if `xref` is *container* and between *-2* and *3* if `xref` is *paper*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number"
                    }
                  ]
                },
                "xanchor": {
                  "description": "Sets this color bar's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the color bar. Defaults to *left* when `orientation` is *v* and *center* when `orientation` is *h*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "left",
                        "center",
                        "right"
                      ]
                    }
                  ]
                },
                "xpad": {
                  "description": "Sets the amount of padding (in px) along the x direction.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 10
                    }
                  ]
                },
                "xref": {
                  "description": "Sets the container `x` refers to. *container* spans the entire `width` of the plot. *paper* refers to the width of the plotting area only.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "container",
                        "paper"
                      ],
                      "default": "paper"
                    }
                  ]
                },
                "y": {
                  "description": "Sets the y position with respect to `yref` of the color bar (in plot fraction). When `yref` is *paper*, defaults to 0.5 when `orientation` is *v* and 1.02 when `orientation` is *h*. When `yref` is *container*, defaults to 0.5 when `orientation` is *v* and 1 when `orientation` is *h*. Must be between *0* and *1* if `yref` is *container* and between *-2* and *3* if `yref` is *paper*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number"
                    }
                  ]
                },
                "yanchor": {
                  "description": "Sets this color bar's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the color bar. Defaults to *middle* when `orientation` is *v* and *bottom* when `orientation` is *h*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "top",
                        "middle",
                        "bottom"
                      ]
                    }
                  ]
                },
                "ypad": {
                  "description": "Sets the amount of padding (in px) along the y direction.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 10
                    }
                  ]
                },
                "yref": {
                  "description": "Sets the container `y` refers to. *container* spans the entire `height` of the plot. *paper* refers to the height of the plotting area only.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "container",
                        "paper"
                      ],
                      "default": "paper"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "colorscale": {
              "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/colorscale",
                  "default": null
                }
              ]
            },
            "colorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `color`.",
              "type": "string"
            },
            "line": {
              "type": "object",
              "properties": {
                "autocolorscale": {
                  "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.line.colorscale`. Has an effect only if in `marker.line.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                },
                "cauto": {
                  "description": "Determines whether or not the color domain is computed with respect to the input data (here in `marker.line.color`) or the bounds set in `marker.line.cmin` and `marker.line.cmax` Has an effect only if in `marker.line.color` is set to a numerical array. Defaults to `false` when `marker.line.cmin` and `marker.line.cmax` are set by the user.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                },
                "cmax": {
                  "description": "Sets the upper bound of the color domain. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color` and if set, `marker.line.cmin` must be set as well.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "default": null
                    }
                  ]
                },
                "cmid": {
                  "description": "Sets the mid-point of the color domain by scaling `marker.line.cmin` and/or `marker.line.cmax` to be equidistant to this point. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color`. Has no effect when `marker.line.cauto` is `false`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "default": null
                    }
                  ]
                },
                "cmin": {
                  "description": "Sets the lower bound of the color domain. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color` and if set, `marker.line.cmax` must be set as well.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "default": null
                    }
                  ]
                },
                "color": {
                  "description": "Sets the marker.line color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.line.cmin` and `marker.line.cmax` if set.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "coloraxis": {
                  "description": "Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "string",
                      "default": null,
                      "pattern": "/^coloraxis([2-9]|[1-9][0-9]+)?$/"
                    }
                  ]
                },
                "colorscale": {
                  "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/colorscale",
                      "default": null
                    }
                  ]
                },
                "colorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `color`.",
                  "type": "string"
                },
                "reversescale": {
                  "description": "Reverses the color mapping if true. Has an effect only if in `marker.line.color` is set to a numerical array. If true, `marker.line.cmin` will correspond to the last color in the array and `marker.line.cmax` will correspond to the first color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": false
                    }
                  ]
                },
                "width": {
                  "description": "Sets the width (in px) of the lines bounding the marker points.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 0
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 0
                          }
                        ]
                      }
                    }
                  ]
                },
                "widthsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `width`.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "opacity": {
              "description": "Sets the marker opacity.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 1
                      }
                    ]
                  }
                }
              ]
            },
            "opacitysrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `opacity`.",
              "type": "string"
            },
            "reversescale": {
              "description": "Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            },
            "showscale": {
              "description": "Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            },
            "size": {
              "description": "Sets the marker size (in px).",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 6
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 0,
                        "default": 6
                      }
                    ]
                  }
                }
              ]
            },
            "sizemin": {
              "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the minimum size (in px) of the rendered marker points.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "sizemode": {
              "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the rule for which the data in `size` is converted to pixels.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "diameter",
                    "area"
                  ],
                  "default": "diameter"
                }
              ]
            },
            "sizeref": {
              "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the scale factor used to determine the rendered size of marker points. Use with `sizemin` and `sizemode`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": 1
                }
              ]
            },
            "sizesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `size`.",
              "type": "string"
            },
            "symbol": {
              "description": "Sets the marker symbol type. Adding 100 is equivalent to appending *-open* to a symbol name. Adding 200 is equivalent to appending *-dot* to a symbol name. Adding 300 is equivalent to appending *-open-dot* or *dot-open* to a symbol name.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        0,
                        "0",
                        "circle",
                        100,
                        "100",
                        "circle-open",
                        200,
                        "200",
                        "circle-dot",
                        300,
                        "300",
                        "circle-open-dot",
                        1,
                        "1",
                        "square",
                        101,
                        "101",
                        "square-open",
                        201,
                        "201",
                        "square-dot",
                        301,
                        "301",
                        "square-open-dot",
                        2,
                        "2",
                        "diamond",
                        102,
                        "102",
                        "diamond-open",
                        202,
                        "202",
                        "diamond-dot",
                        302,
                        "302",
                        "diamond-open-dot",
                        3,
                        "3",
                        "cross",
                        103,
                        "103",
                        "cross-open",
                        203,
                        "203",
                        "cross-dot",
                        303,
                        "303",
                        "cross-open-dot",
                        4,
                        "4",
                        "x",
                        104,
                        "104",
                        "x-open",
                        204,
                        "204",
                        "x-dot",
                        304,
                        "304",
                        "x-open-dot",
                        5,
                        "5",
                        "triangle-up",
                        105,
                        "105",
                        "triangle-up-open",
                        205,
                        "205",
                        "triangle-up-dot",
                        305,
                        "305",
                        "triangle-up-open-dot",
                        6,
                        "6",
                        "triangle-down",
                        106,
                        "106",
                        "triangle-down-open",
                        206,
                        "206",
                        "triangle-down-dot",
                        306,
                        "306",
                        "triangle-down-open-dot",
                        7,
                        "7",
                        "triangle-left",
                        107,
                        "107",
                        "triangle-left-open",
                        207,
                        "207",
                        "triangle-left-dot",
                        307,
                        "307",
                        "triangle-left-open-dot",
                        8,
                        "8",
                        "triangle-right",
                        108,
                        "108",
                        "triangle-right-open",
                        208,
                        "208",
                        "triangle-right-dot",
                        308,
                        "308",
                        "triangle-right-open-dot",
                        9,
                        "9",
                        "triangle-ne",
                        109,
                        "109",
                        "triangle-ne-open",
                        209,
                        "209",
                        "triangle-ne-dot",
                        309,
                        "309",
                        "triangle-ne-open-dot",
                        10,
                        "10",
                        "triangle-se",
                        110,
                        "110",
                        "triangle-se-open",
                        210,
                        "210",
                        "triangle-se-dot",
                        310,
                        "310",
                        "triangle-se-open-dot",
                        11,
                        "11",
                        "triangle-sw",
                        111,
                        "111",
                        "triangle-sw-open",
                        211,
                        "211",
                        "triangle-sw-dot",
                        311,
                        "311",
                        "triangle-sw-open-dot",
                        12,
                        "12",
                        "triangle-nw",
                        112,
                        "112",
                        "triangle-nw-open",
                        212,
                        "212",
                        "triangle-nw-dot",
                        312,
                        "312",
                        "triangle-nw-open-dot",
                        13,
                        "13",
                        "pentagon",
                        113,
                        "113",
                        "pentagon-open",
                        213,
                        "213",
                        "pentagon-dot",
                        313,
                        "313",
                        "pentagon-open-dot",
                        14,
                        "14",
                        "hexagon",
                        114,
                        "114",
                        "hexagon-open",
                        214,
                        "214",
                        "hexagon-dot",
                        314,
                        "314",
                        "hexagon-open-dot",
                        15,
                        "15",
                        "hexagon2",
                        115,
                        "115",
                        "hexagon2-open",
                        215,
                        "215",
                        "hexagon2-dot",
                        315,
                        "315",
                        "hexagon2-open-dot",
                        16,
                        "16",
                        "octagon",
                        116,
                        "116",
                        "octagon-open",
                        216,
                        "216",
                        "octagon-dot",
                        316,
                        "316",
                        "octagon-open-dot",
                        17,
                        "17",
                        "star",
                        117,
                        "117",
                        "star-open",
                        217,
                        "217",
                        "star-dot",
                        317,
                        "317",
                        "star-open-dot",
                        18,
                        "18",
                        "hexagram",
                        118,
                        "118",
                        "hexagram-open",
                        218,
                        "218",
                        "hexagram-dot",
                        318,
                        "318",
                        "hexagram-open-dot",
                        19,
                        "19",
                        "star-triangle-up",
                        119,
                        "119",
                        "star-triangle-up-open",
                        219,
                        "219",
                        "star-triangle-up-dot",
                        319,
                        "319",
                        "star-triangle-up-open-dot",
                        20,
                        "20",
                        "star-triangle-down",
                        120,
                        "120",
                        "star-triangle-down-open",
                        220,
                        "220",
                        "star-triangle-down-dot",
                        320,
                        "320",
                        "star-triangle-down-open-dot",
                        21,
                        "21",
                        "star-square",
                        121,
                        "121",
                        "star-square-open",
                        221,
                        "221",
                        "star-square-dot",
                        321,
                        "321",
                        "star-square-open-dot",
                        22,
                        "22",
                        "star-diamond",
                        122,
                        "122",
                        "star-diamond-open",
                        222,
                        "222",
                        "star-diamond-dot",
                        322,
                        "322",
                        "star-diamond-open-dot",
                        23,
                        "23",
                        "diamond-tall",
                        123,
                        "123",
                        "diamond-tall-open",
                        223,
                        "223",
                        "diamond-tall-dot",
                        323,
                        "323",
                        "diamond-tall-open-dot",
                        24,
                        "24",
                        "diamond-wide",
                        124,
                        "124",
                        "diamond-wide-open",
                        224,
                        "224",
                        "diamond-wide-dot",
                        324,
                        "324",
                        "diamond-wide-open-dot",
                        25,
                        "25",
                        "hourglass",
                        125,
                        "125",
                        "hourglass-open",
                        26,
                        "26",
                        "bowtie",
                        126,
                        "126",
                        "bowtie-open",
                        27,
                        "27",
                        "circle-cross",
                        127,
                        "127",
                        "circle-cross-open",
                        28,
                        "28",
                        "circle-x",
                        128,
                        "128",
                        "circle-x-open",
                        29,
                        "29",
                        "square-cross",
                        129,
                        "129",
                        "square-cross-open",
                        30,
                        "30",
                        "square-x",
                        130,
                        "130",
                        "square-x-open",
                        31,
                        "31",
                        "diamond-cross",
                        131,
                        "131",
                        "diamond-cross-open",
                        32,
                        "32",
                        "diamond-x",
                        132,
                        "132",
                        "diamond-x-open",
                        33,
                        "33",
                        "cross-thin",
                        133,
                        "133",
                        "cross-thin-open",
                        34,
                        "34",
                        "x-thin",
                        134,
                        "134",
                        "x-thin-open",
                        35,
                        "35",
                        "asterisk",
                        135,
                        "135",
                        "asterisk-open",
                        36,
                        "36",
                        "hash",
                        136,
                        "136",
                        "hash-open",
                        236,
                        "236",
                        "hash-dot",
                        336,
                        "336",
                        "hash-open-dot",
                        37,
                        "37",
                        "y-up",
                        137,
                        "137",
                        "y-up-open",
                        38,
                        "38",
                        "y-down",
                        138,
                        "138",
                        "y-down-open",
                        39,
                        "39",
                        "y-left",
                        139,
                        "139",
                        "y-left-open",
                        40,
                        "40",
                        "y-right",
                        140,
                        "140",
                        "y-right-open",
                        41,
                        "41",
                        "line-ew",
                        141,
                        "141",
                        "line-ew-open",
                        42,
                        "42",
                        "line-ns",
                        142,
                        "142",
                        "line-ns-open",
                        43,
                        "43",
                        "line-ne",
                        143,
                        "143",
                        "line-ne-open",
                        44,
                        "44",
                        "line-nw",
                        144,
                        "144",
                        "line-nw-open",
                        45,
                        "45",
                        "arrow-up",
                        145,
                        "145",
                        "arrow-up-open",
                        46,
                        "46",
                        "arrow-down",
                        146,
                        "146",
                        "arrow-down-open",
                        47,
                        "47",
                        "arrow-left",
                        147,
                        "147",
                        "arrow-left-open",
                        48,
                        "48",
                        "arrow-right",
                        148,
                        "148",
                        "arrow-right-open",
                        49,
                        "49",
                        "arrow-bar-up",
                        149,
                        "149",
                        "arrow-bar-up-open",
                        50,
                        "50",
                        "arrow-bar-down",
                        150,
                        "150",
                        "arrow-bar-down-open",
                        51,
                        "51",
                        "arrow-bar-left",
                        151,
                        "151",
                        "arrow-bar-left-open",
                        52,
                        "52",
                        "arrow-bar-right",
                        152,
                        "152",
                        "arrow-bar-right-open",
                        53,
                        "53",
                        "arrow",
                        153,
                        "153",
                        "arrow-open",
                        54,
                        "54",
                        "arrow-wide",
                        154,
                        "154",
                        "arrow-wide-open"
                      ],
                      "default": "circle"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          0,
                          "0",
                          "circle",
                          100,
                          "100",
                          "circle-open",
                          200,
                          "200",
                          "circle-dot",
                          300,
                          "300",
                          "circle-open-dot",
                          1,
                          "1",
                          "square",
                          101,
                          "101",
                          "square-open",
                          201,
                          "201",
                          "square-dot",
                          301,
                          "301",
                          "square-open-dot",
                          2,
                          "2",
                          "diamond",
                          102,
                          "102",
                          "diamond-open",
                          202,
                          "202",
                          "diamond-dot",
                          302,
                          "302",
                          "diamond-open-dot",
                          3,
                          "3",
                          "cross",
                          103,
                          "103",
                          "cross-open",
                          203,
                          "203",
                          "cross-dot",
                          303,
                          "303",
                          "cross-open-dot",
                          4,
                          "4",
                          "x",
                          104,
                          "104",
                          "x-open",
                          204,
                          "204",
                          "x-dot",
                          304,
                          "304",
                          "x-open-dot",
                          5,
                          "5",
                          "triangle-up",
                          105,
                          "105",
                          "triangle-up-open",
                          205,
                          "205",
                          "triangle-up-dot",
                          305,
                          "305",
                          "triangle-up-open-dot",
                          6,
                          "6",
                          "triangle-down",
                          106,
                          "106",
                          "triangle-down-open",
                          206,
                          "206",
                          "triangle-down-dot",
                          306,
                          "306",
                          "triangle-down-open-dot",
                          7,
                          "7",
                          "triangle-left",
                          107,
                          "107",
                          "triangle-left-open",
                          207,
                          "207",
                          "triangle-left-dot",
                          307,
                          "307",
                          "triangle-left-open-dot",
                          8,
                          "8",
                          "triangle-right",
                          108,
                          "108",
                          "triangle-right-open",
                          208,
                          "208",
                          "triangle-right-dot",
                          308,
                          "308",
                          "triangle-right-open-dot",
                          9,
                          "9",
                          "triangle-ne",
                          109,
                          "109",
                          "triangle-ne-open",
                          209,
                          "209",
                          "triangle-ne-dot",
                          309,
                          "309",
                          "triangle-ne-open-dot",
                          10,
                          "10",
                          "triangle-se",
                          110,
                          "110",
                          "triangle-se-open",
                          210,
                          "210",
                          "triangle-se-dot",
                          310,
                          "310",
                          "triangle-se-open-dot",
                          11,
                          "11",
                          "triangle-sw",
                          111,
                          "111",
                          "triangle-sw-open",
                          211,
                          "211",
                          "triangle-sw-dot",
                          311,
                          "311",
                          "triangle-sw-open-dot",
                          12,
                          "12",
                          "triangle-nw",
                          112,
                          "112",
                          "triangle-nw-open",
                          212,
                          "212",
                          "triangle-nw-dot",
                          312,
                          "312",
                          "triangle-nw-open-dot",
                          13,
                          "13",
                          "pentagon",
                          113,
                          "113",
                          "pentagon-open",
                          213,
                          "213",
                          "pentagon-dot",
                          313,
                          "313",
                          "pentagon-open-dot",
                          14,
                          "14",
                          "hexagon",
                          114,
                          "114",
                          "hexagon-open",
                          214,
                          "214",
                          "hexagon-dot",
                          314,
                          "314",
                          "hexagon-open-dot",
                          15,
                          "15",
                          "hexagon2",
                          115,
                          "115",
                          "hexagon2-open",
                          215,
                          "215",
                          "hexagon2-dot",
                          315,
                          "315",
                          "hexagon2-open-dot",
                          16,
                          "16",
                          "octagon",
                          116,
                          "116",
                          "octagon-open",
                          216,
                          "216",
                          "octagon-dot",
                          316,
                          "316",
                          "octagon-open-dot",
                          17,
                          "17",
                          "star",
                          117,
                          "117",
                          "star-open",
                          217,
                          "217",
                          "star-dot",
                          317,
                          "317",
                          "star-open-dot",
                          18,
                          "18",
                          "hexagram",
                          118,
                          "118",
                          "hexagram-open",
                          218,
                          "218",
                          "hexagram-dot",
                          318,
                          "318",
                          "hexagram-open-dot",
                          19,
                          "19",
                          "star-triangle-up",
                          119,
                          "119",
                          "star-triangle-up-open",
                          219,
                          "219",
                          "star-triangle-up-dot",
                          319,
                          "319",
                          "star-triangle-up-open-dot",
                          20,
                          "20",
                          "star-triangle-down",
                          120,
                          "120",
                          "star-triangle-down-open",
                          220,
                          "220",
                          "star-triangle-down-dot",
                          320,
                          "320",
                          "star-triangle-down-open-dot",
                          21,
                          "21",
                          "star-square",
                          121,
                          "121",
                          "star-square-open",
                          221,
                          "221",
                          "star-square-dot",
                          321,
                          "321",
                          "star-square-open-dot",
                          22,
                          "22",
                          "star-diamond",
                          122,
                          "122",
                          "star-diamond-open",
                          222,
                          "222",
                          "star-diamond-dot",
                          322,
                          "322",
                          "star-diamond-open-dot",
                          23,
                          "23",
                          "diamond-tall",
                          123,
                          "123",
                          "diamond-tall-open",
                          223,
                          "223",
                          "diamond-tall-dot",
                          323,
                          "323",
                          "diamond-tall-open-dot",
                          24,
                          "24",
                          "diamond-wide",
                          124,
                          "124",
                          "diamond-wide-open",
                          224,
                          "224",
                          "diamond-wide-dot",
                          324,
                          "324",
                          "diamond-wide-open-dot",
                          25,
                          "25",
                          "hourglass",
                          125,
                          "125",
                          "hourglass-open",
                          26,
                          "26",
                          "bowtie",
                          126,
                          "126",
                          "bowtie-open",
                          27,
                          "27",
                          "circle-cross",
                          127,
                          "127",
                          "circle-cross-open",
                          28,
                          "28",
                          "circle-x",
                          128,
                          "128",
                          "circle-x-open",
                          29,
                          "29",
                          "square-cross",
                          129,
                          "129",
                          "square-cross-open",
                          30,
                          "30",
                          "square-x",
                          130,
                          "130",
                          "square-x-open",
                          31,
                          "31",
                          "diamond-cross",
                          131,
                          "131",
                          "diamond-cross-open",
                          32,
                          "32",
                          "diamond-x",
                          132,
                          "132",
                          "diamond-x-open",
                          33,
                          "33",
                          "cross-thin",
                          133,
                          "133",
                          "cross-thin-open",
                          34,
                          "34",
                          "x-thin",
                          134,
                          "134",
                          "x-thin-open",
                          35,
                          "35",
                          "asterisk",
                          135,
                          "135",
                          "asterisk-open",
                          36,
                          "36",
                          "hash",
                          136,
                          "136",
                          "hash-open",
                          236,
                          "236",
                          "hash-dot",
                          336,
                          "336",
                          "hash-open-dot",
                          37,
                          "37",
                          "y-up",
                          137,
                          "137",
                          "y-up-open",
                          38,
                          "38",
                          "y-down",
                          138,
                          "138",
                          "y-down-open",
                          39,
                          "39",
                          "y-left",
                          139,
                          "139",
                          "y-left-open",
                          40,
                          "40",
                          "y-right",
                          140,
                          "140",
                          "y-right-open",
                          41,
                          "41",
                          "line-ew",
                          141,
                          "141",
                          "line-ew-open",
                          42,
                          "42",
                          "line-ns",
                          142,
                          "142",
                          "line-ns-open",
                          43,
                          "43",
                          "line-ne",
                          143,
                          "143",
                          "line-ne-open",
                          44,
                          "44",
                          "line-nw",
                          144,
                          "144",
                          "line-nw-open",
                          45,
                          "45",
                          "arrow-up",
                          145,
                          "145",
                          "arrow-up-open",
                          46,
                          "46",
                          "arrow-down",
                          146,
                          "146",
                          "arrow-down-open",
                          47,
                          "47",
                          "arrow-left",
                          147,
                          "147",
                          "arrow-left-open",
                          48,
                          "48",
                          "arrow-right",
                          148,
                          "148",
                          "arrow-right-open",
                          49,
                          "49",
                          "arrow-bar-up",
                          149,
                          "149",
                          "arrow-bar-up-open",
                          50,
                          "50",
                          "arrow-bar-down",
                          150,
                          "150",
                          "arrow-bar-down-open",
                          51,
                          "51",
                          "arrow-bar-left",
                          151,
                          "151",
                          "arrow-bar-left-open",
                          52,
                          "52",
                          "arrow-bar-right",
                          152,
                          "152",
                          "arrow-bar-right-open",
                          53,
                          "53",
                          "arrow",
                          153,
                          "153",
                          "arrow-open",
                          54,
                          "54",
                          "arrow-wide",
                          154,
                          "154",
                          "arrow-wide-open"
                        ],
                        "default": "circle"
                      }
                    ]
                  }
                }
              ]
            },
            "symbolsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `symbol`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "metasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `meta`.",
          "type": "string"
        },
        "mode": {
          "description": "Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover. If there are less than 20 points and the trace is not stacked then the default is *lines+markers*. Otherwise, *lines*.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "oneOf": [
                {
                  "type": "string",
                  "enum": [
                    "none"
                  ]
                },
                {
                  "type": "string",
                  "pattern": "^(lines|markers|text)(\\+(lines|markers|text))*$"
                }
              ]
            }
          ]
        },
        "name": {
          "description": "Sets the trace name. The trace name appears as the legend item and on hover.",
          "type": "string"
        },
        "opacity": {
          "description": "Sets the opacity of the trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0,
              "maximum": 1,
              "default": 1
            }
          ]
        },
        "r": {
          "description": "Sets the radial coordinates",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "r0": {
          "default": 0,
          "description": "Alternate to `r`. Builds a linear space of r coordinates. Use with `dr` where `r0` is the starting coordinate and `dr` the step."
        },
        "rsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `r`.",
          "type": "string"
        },
        "selected": {
          "type": "object",
          "properties": {
            "marker": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the marker color of selected points.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "opacity": {
                  "description": "Sets the marker opacity of selected points.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1
                    }
                  ]
                },
                "size": {
                  "description": "Sets the marker size of selected points.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "textfont": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the text font color of selected points.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                }
              },
              "additionalProperties": false
            }
          },
          "additionalProperties": false
        },
        "selectedpoints": {
          "description": "Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect."
        },
        "showlegend": {
          "description": "Determines whether or not an item corresponding to this trace is shown in the legend.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "stream": {
          "type": "object",
          "properties": {
            "maxpoints": {
              "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 10000,
                  "default": 500
                }
              ]
            },
            "token": {
              "pattern": ".*\\S.*$",
              "description": "The stream id number links a data trace on a plot with a stream. See <https://chart-studio.plotly.com/settings> for more details.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "subplot": {
          "description": "Sets a reference between this trace's data coordinates and a polar subplot. If *polar* (the default value), the data refer to `layout.polar`. If *polar2*, the data refer to `layout.polar2`, and so on.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "polar",
              "pattern": "^polar([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "text": {
          "description": "Sets text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "textfont": {
          "type": "object",
          "properties": {
            "color": {
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "colorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `color`.",
              "type": "string"
            },
            "family": {
              "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
              "oneOf": [
                {
                  "pattern": ".*\\S.*$",
                  "type": "string"
                },
                {
                  "type": "array",
                  "items": {
                    "pattern": ".*\\S.*$",
                    "type": "string"
                  }
                },
                {
                  "$ref": "#/$defs/query-string"
                }
              ]
            },
            "familysrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `family`.",
              "type": "string"
            },
            "size": {
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 1
                      }
                    ]
                  }
                }
              ]
            },
            "sizesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `size`.",
              "type": "string"
            },
            "style": {
              "description": "Sets whether a font should be styled with a normal or italic face from its family.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "italic"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "stylesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `style`.",
              "type": "string"
            },
            "variant": {
              "description": "Sets the variant of the font.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "small-caps"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "variantsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `variant`.",
              "type": "string"
            },
            "weight": {
              "description": "Sets the weight (or boldness) of the font.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "bold"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "bold"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "weightsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `weight`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "textposition": {
          "description": "Sets the positions of the `text` elements with respects to the (x,y) coordinates.",
          "oneOf": [
            {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "top left",
                    "top center",
                    "top right",
                    "middle left",
                    "middle center",
                    "middle right",
                    "bottom left",
                    "bottom center",
                    "bottom right"
                  ],
                  "default": "middle center"
                }
              ]
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "enum": [
                      "top left",
                      "top center",
                      "top right",
                      "middle left",
                      "middle center",
                      "middle right",
                      "bottom left",
                      "bottom center",
                      "bottom right"
                    ],
                    "default": "middle center"
                  }
                ]
              }
            }
          ]
        },
        "textpositionsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `textposition`.",
          "type": "string"
        },
        "textsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `text`.",
          "type": "string"
        },
        "texttemplate": {
          "description": "Template string used for rendering the information text that appear on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". <https://github.com/d3/d3-format/tree/v1.4.5#d3-format> for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format> for details on the date formatting syntax. Every attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `r`, `theta` and `text`.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "texttemplatesrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.",
          "type": "string"
        },
        "theta": {
          "description": "Sets the angular coordinates",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "theta0": {
          "default": 0,
          "description": "Alternate to `theta`. Builds a linear space of theta coordinates. Use with `dtheta` where `theta0` is the starting coordinate and `dtheta` the step."
        },
        "thetasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `theta`.",
          "type": "string"
        },
        "thetaunit": {
          "description": "Sets the unit of input *theta* values. Has an effect only when on *linear* angular axes.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "radians",
                "degrees",
                "gradians"
              ],
              "default": "degrees"
            }
          ]
        },
        "uid": {
          "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.",
          "type": "string"
        },
        "uirevision": {
          "description": "Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves."
        },
        "unselected": {
          "type": "object",
          "properties": {
            "marker": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the marker color of unselected points, applied only when a selection exists.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "opacity": {
                  "description": "Sets the marker opacity of unselected points, applied only when a selection exists.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1
                    }
                  ]
                },
                "size": {
                  "description": "Sets the marker size of unselected points, applied only when a selection exists.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "textfont": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the text font color of unselected points, applied only when a selection exists.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                }
              },
              "additionalProperties": false
            }
          },
          "additionalProperties": false
        },
        "visible": {
          "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                true,
                false,
                "legendonly"
              ],
              "default": true
            }
          ]
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false
    },
    "Scattersmith": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "$id": "https://visivo.io/trace-properties/schema",
      "description": "A schema to validate plotly trace properties",
      "type": "object",
      "properties": {
        "type": {
          "const": "scattersmith"
        },
        "cliponaxis": {
          "description": "Determines whether or not markers and text nodes are clipped about the subplot axes. To show markers and text nodes above axis lines and tick labels, make sure to set `xaxis.layer` and `yaxis.layer` to *below traces*.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": false
            }
          ]
        },
        "connectgaps": {
          "description": "Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": false
            }
          ]
        },
        "customdata": {
          "description": "Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "customdatasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `customdata`.",
          "type": "string"
        },
        "fill": {
          "description": "Sets the area to fill with a solid color. Use with `fillcolor` if not *none*. scattersmith has a subset of the options available to scatter. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape. *tonext* fills the space between two traces if one completely encloses the other (eg consecutive contour lines), and behaves like *toself* if there is no trace before it. *tonext* should not be used if one trace does not enclose the other.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "none",
                "toself",
                "tonext"
              ],
              "default": "none"
            }
          ]
        },
        "fillcolor": {
          "description": "Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "$ref": "#/$defs/color"
            }
          ]
        },
        "hoverinfo": {
          "description": "Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired.",
          "oneOf": [
            {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "oneOf": [
                    {
                      "type": "string",
                      "enum": [
                        "all",
                        "none",
                        "skip"
                      ]
                    },
                    {
                      "type": "string",
                      "pattern": "^(real|imag|text|name)(\\+(real|imag|text|name))*$"
                    }
                  ],
                  "default": "all"
                }
              ]
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "oneOf": [
                      {
                        "type": "string",
                        "enum": [
                          "all",
                          "none",
                          "skip"
                        ]
                      },
                      {
                        "type": "string",
                        "pattern": "^(real|imag|text|name)(\\+(real|imag|text|name))*$"
                      }
                    ],
                    "default": "all"
                  }
                ]
              }
            }
          ]
        },
        "hoverinfosrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.",
          "type": "string"
        },
        "hoverlabel": {
          "type": "object",
          "properties": {
            "align": {
              "description": "Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "left",
                        "right",
                        "auto"
                      ],
                      "default": "auto"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "left",
                          "right",
                          "auto"
                        ],
                        "default": "auto"
                      }
                    ]
                  }
                }
              ]
            },
            "alignsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `align`.",
              "type": "string"
            },
            "bgcolor": {
              "description": "Sets the background color of the hover labels for this trace",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "bgcolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.",
              "type": "string"
            },
            "bordercolor": {
              "description": "Sets the border color of the hover labels for this trace.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "bordercolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.",
              "type": "string"
            },
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "colorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `color`.",
                  "type": "string"
                },
                "family": {
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "oneOf": [
                    {
                      "pattern": ".*\\S.*$",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "pattern": ".*\\S.*$",
                        "type": "string"
                      }
                    },
                    {
                      "$ref": "#/$defs/query-string"
                    }
                  ]
                },
                "familysrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `family`.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "oneOf": [
                              {
                                "type": "string",
                                "enum": [
                                  "none"
                                ]
                              },
                              {
                                "type": "string",
                                "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                              }
                            ],
                            "default": "none"
                          }
                        ]
                      }
                    }
                  ]
                },
                "linepositionsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.",
                  "type": "string"
                },
                "shadow": {
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "oneOf": [
                    {
                      "default": "none",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "default": "none",
                        "type": "string"
                      }
                    }
                  ]
                },
                "shadowsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `shadow`.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 1
                          }
                        ]
                      }
                    }
                  ]
                },
                "sizesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `size`.",
                  "type": "string"
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "italic"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "stylesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `style`.",
                  "type": "string"
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "word caps",
                              "upper",
                              "lower"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "textcasesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `textcase`.",
                  "type": "string"
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "small-caps",
                              "all-small-caps",
                              "all-petite-caps",
                              "petite-caps",
                              "unicase"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "variantsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `variant`.",
                  "type": "string"
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 1000,
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "weightsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `weight`.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "namelength": {
              "description": "Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": -1,
                      "default": 15
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "integer",
                        "minimum": -1,
                        "default": 15
                      }
                    ]
                  }
                }
              ]
            },
            "namelengthsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `namelength`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "hoveron": {
          "description": "Do the hover effects highlight individual points (markers or line points) or do they highlight filled regions? If the fill is *toself* or *tonext* and there are no markers or text, then the default is *fills*, otherwise it is *points*.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "pattern": "^(points|fills)(\\+(points|fills))*$"
            }
          ]
        },
        "hovertemplate": {
          "description": "Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". <https://github.com/d3/d3-format/tree/v1.4.5#d3-format> for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format> for details on the date formatting syntax. The variables available in `hovertemplate` are the ones emitted as event data described at this link <https://plotly.com/javascript/plotlyjs-events/#event-data>. Additionally, every attributes that can be specified per-point (the ones that are `arrayOk: true`) are available.  Anything contained in tag `<extra>` is displayed in the secondary box, for example \"<extra>{fullData.name}</extra>\". To hide the secondary box completely, use an empty tag `<extra></extra>`.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "hovertemplatesrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.",
          "type": "string"
        },
        "hovertext": {
          "description": "Sets hover text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "hovertextsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.",
          "type": "string"
        },
        "ids": {
          "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "idssrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `ids`.",
          "type": "string"
        },
        "imag": {
          "description": "Sets the imaginary component of the data, in units of normalized impedance such that real=1, imag=0 is the center of the chart.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "imagsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `imag`.",
          "type": "string"
        },
        "legend": {
          "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "legend",
              "pattern": "^legend([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "legendgroup": {
          "default": "",
          "description": "Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items.",
          "type": "string"
        },
        "legendgrouptitle": {
          "type": "object",
          "properties": {
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "family": {
                  "pattern": ".*\\S.*$",
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                "shadow": {
                  "default": "none",
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "text": {
              "default": "",
              "description": "Sets the title of the legend group.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "legendrank": {
          "description": "Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": 1000
            }
          ]
        },
        "legendwidth": {
          "description": "Sets the width (in px or fraction) of the legend for this trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0
            }
          ]
        },
        "line": {
          "type": "object",
          "properties": {
            "backoff": {
              "description": "Sets the line back off from the end point of the nth line segment (in px). This option is useful e.g. to avoid overlap with arrowhead markers. With *auto* the lines would trim before markers if `marker.angleref` is set to *previous*.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": "auto"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 0,
                        "default": "auto"
                      }
                    ]
                  }
                }
              ]
            },
            "backoffsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `backoff`.",
              "type": "string"
            },
            "color": {
              "description": "Sets the line color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "dash": {
              "default": "solid",
              "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).",
              "type": "string"
            },
            "shape": {
              "description": "Determines the line shape. With *spline* the lines are drawn using spline interpolation. The other available values correspond to step-wise line shapes.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "linear",
                    "spline"
                  ],
                  "default": "linear"
                }
              ]
            },
            "smoothing": {
              "description": "Has an effect only if `shape` is set to *spline* Sets the amount of smoothing. *0* corresponds to no smoothing (equivalent to a *linear* shape).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 1.3,
                  "default": 1
                }
              ]
            },
            "width": {
              "description": "Sets the line width (in px).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 2
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "marker": {
          "type": "object",
          "properties": {
            "angle": {
              "description": "Sets the marker angle in respect to `angleref`.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": -180,
                      "maximum": 180,
                      "default": 0
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": -180,
                        "maximum": 180,
                        "default": 0
                      }
                    ]
                  }
                }
              ]
            },
            "angleref": {
              "description": "Sets the reference for marker angle. With *previous*, angle 0 points along the line from the previous point to this one. With *up*, angle 0 points toward the top of the screen.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "previous",
                    "up"
                  ],
                  "default": "up"
                }
              ]
            },
            "anglesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `angle`.",
              "type": "string"
            },
            "autocolorscale": {
              "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": true
                }
              ]
            },
            "cauto": {
              "description": "Determines whether or not the color domain is computed with respect to the input data (here in `marker.color`) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if in `marker.color` is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": true
                }
              ]
            },
            "cmax": {
              "description": "Sets the upper bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmin` must be set as well.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": null
                }
              ]
            },
            "cmid": {
              "description": "Sets the mid-point of the color domain by scaling `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color`. Has no effect when `marker.cauto` is `false`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": null
                }
              ]
            },
            "cmin": {
              "description": "Sets the lower bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmax` must be set as well.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": null
                }
              ]
            },
            "color": {
              "description": "Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.cmin` and `marker.cmax` if set.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "coloraxis": {
              "description": "Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "string",
                  "default": null,
                  "pattern": "/^coloraxis([2-9]|[1-9][0-9]+)?$/"
                }
              ]
            },
            "colorbar": {
              "type": "object",
              "properties": {
                "bgcolor": {
                  "description": "Sets the color of padded area.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "bordercolor": {
                  "description": "Sets the axis line color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "borderwidth": {
                  "description": "Sets the width (in px) or the border enclosing this color bar.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 0
                    }
                  ]
                },
                "dtick": {
                  "description": "Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L<f>*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M<n>* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48*"
                },
                "exponentformat": {
                  "description": "Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "none",
                        "e",
                        "E",
                        "power",
                        "SI",
                        "B"
                      ],
                      "default": "B"
                    }
                  ]
                },
                "labelalias": {
                  "default": false,
                  "description": "Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax."
                },
                "len": {
                  "description": "Sets the length of the color bar This measure excludes the padding of both ends. That is, the color bar length is this length minus the padding on both ends.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "lenmode": {
                  "description": "Determines whether this color bar's length (i.e. the measure in the color variation direction) is set in units of plot *fraction* or in *pixels. Use `len` to set the value.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "fraction",
                        "pixels"
                      ],
                      "default": "fraction"
                    }
                  ]
                },
                "minexponent": {
                  "description": "Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 3
                    }
                  ]
                },
                "nticks": {
                  "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 0,
                      "default": 0
                    }
                  ]
                },
                "orientation": {
                  "description": "Sets the orientation of the colorbar.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "h",
                        "v"
                      ],
                      "default": "v"
                    }
                  ]
                },
                "outlinecolor": {
                  "description": "Sets the axis line color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "outlinewidth": {
                  "description": "Sets the width (in px) of the axis line.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "separatethousands": {
                  "description": "If \"true\", even 4-digit integers are separated",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": false
                    }
                  ]
                },
                "showexponent": {
                  "description": "If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "showticklabels": {
                  "description": "Determines whether or not the tick labels are drawn.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                },
                "showtickprefix": {
                  "description": "If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "showticksuffix": {
                  "description": "Same as `showtickprefix` but for tick suffixes.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "thickness": {
                  "description": "Sets the thickness of the color bar This measure excludes the size of the padding, ticks and labels.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 30
                    }
                  ]
                },
                "thicknessmode": {
                  "description": "Determines whether this color bar's thickness (i.e. the measure in the constant color direction) is set in units of plot *fraction* or in *pixels*. Use `thickness` to set the value.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "fraction",
                        "pixels"
                      ],
                      "default": "pixels"
                    }
                  ]
                },
                "tick0": {
                  "description": "Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L<f>* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears."
                },
                "tickangle": {
                  "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": -180,
                      "maximum": 180,
                      "default": "auto"
                    }
                  ]
                },
                "tickcolor": {
                  "description": "Sets the tick color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "tickfont": {
                  "type": "object",
                  "properties": {
                    "color": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    "family": {
                      "pattern": ".*\\S.*$",
                      "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                      "type": "string"
                    },
                    "lineposition": {
                      "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    "shadow": {
                      "default": "none",
                      "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                      "type": "string"
                    },
                    "size": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    "style": {
                      "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "textcase": {
                      "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "variant": {
                      "description": "Sets the variant of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "weight": {
                      "description": "Sets the weight (or boldness) of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    }
                  },
                  "additionalProperties": false
                },
                "tickformat": {
                  "default": "",
                  "description": "Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*",
                  "type": "string"
                },
                "tickformatstops": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "dtickrange": {
                        "description": "range [*min*, *max*], where *min*, *max* - dtick values which describe some zoom level, it is possible to omit *min* or *max* value by passing *null*",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "array",
                            "items": {},
                            "minItems": 2,
                            "maxItems": 2
                          }
                        ]
                      },
                      "enabled": {
                        "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "boolean",
                            "default": true
                          }
                        ]
                      },
                      "name": {
                        "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.",
                        "type": "string"
                      },
                      "templateitemname": {
                        "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.",
                        "type": "string"
                      },
                      "value": {
                        "default": "",
                        "description": "string - dtickformat for described zoom level, the same as *tickformat*",
                        "type": "string"
                      }
                    },
                    "additionalProperties": false
                  },
                  "minItems": 1
                },
                "ticklabeloverflow": {
                  "description": "Determines how we handle tick labels that would overflow either the graph div or the domain of the axis. The default value for inside tick labels is *hide past domain*. In other cases the default is *hide past div*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "allow",
                        "hide past div",
                        "hide past domain"
                      ]
                    }
                  ]
                },
                "ticklabelposition": {
                  "description": "Determines where tick labels are drawn relative to the ticks. Left and right options are used when `orientation` is *h*, top and bottom when `orientation` is *v*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "outside",
                        "inside",
                        "outside top",
                        "inside top",
                        "outside left",
                        "inside left",
                        "outside right",
                        "inside right",
                        "outside bottom",
                        "inside bottom"
                      ],
                      "default": "outside"
                    }
                  ]
                },
                "ticklabelstep": {
                  "description": "Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "default": 1
                    }
                  ]
                },
                "ticklen": {
                  "description": "Sets the tick length (in px).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 5
                    }
                  ]
                },
                "tickmode": {
                  "description": "Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "auto",
                        "linear",
                        "array"
                      ]
                    }
                  ]
                },
                "tickprefix": {
                  "default": "",
                  "description": "Sets a tick label prefix.",
                  "type": "string"
                },
                "ticks": {
                  "description": "Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "outside",
                        "inside",
                        ""
                      ],
                      "default": ""
                    }
                  ]
                },
                "ticksuffix": {
                  "default": "",
                  "description": "Sets a tick label suffix.",
                  "type": "string"
                },
                "ticktext": {
                  "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "string"
                          }
                        ]
                      }
                    }
                  ]
                },
                "ticktextsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.",
                  "type": "string"
                },
                "tickvals": {
                  "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "string"
                          }
                        ]
                      }
                    }
                  ]
                },
                "tickvalssrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.",
                  "type": "string"
                },
                "tickwidth": {
                  "description": "Sets the tick width (in px).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "title": {
                  "type": "object",
                  "properties": {
                    "font": {
                      "type": "object",
                      "properties": {
                        "color": {
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "$ref": "#/$defs/color"
                            }
                          ]
                        },
                        "family": {
                          "pattern": ".*\\S.*$",
                          "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                          "type": "string"
                        },
                        "lineposition": {
                          "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "oneOf": [
                                {
                                  "type": "string",
                                  "enum": [
                                    "none"
                                  ]
                                },
                                {
                                  "type": "string",
                                  "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                                }
                              ],
                              "default": "none"
                            }
                          ]
                        },
                        "shadow": {
                          "default": "none",
                          "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                          "type": "string"
                        },
                        "size": {
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "type": "number",
                              "minimum": 1
                            }
                          ]
                        },
                        "style": {
                          "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "italic"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "textcase": {
                          "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "word caps",
                                "upper",
                                "lower"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "variant": {
                          "description": "Sets the variant of the font.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "small-caps",
                                "all-small-caps",
                                "all-petite-caps",
                                "petite-caps",
                                "unicase"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "weight": {
                          "description": "Sets the weight (or boldness) of the font.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "type": "integer",
                              "minimum": 1,
                              "maximum": 1000,
                              "default": "normal"
                            }
                          ]
                        }
                      },
                      "additionalProperties": false
                    },
                    "side": {
                      "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and  defaults to *right* when `orientation` if *h*.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "right",
                            "top",
                            "bottom"
                          ]
                        }
                      ]
                    },
                    "text": {
                      "description": "Sets the title of the color bar.",
                      "type": "string"
                    }
                  },
                  "additionalProperties": false
                },
                "x": {
                  "description": "Sets the x position with respect to `xref` of the color bar (in plot fraction). When `xref` is *paper*, defaults to 1.02 when `orientation` is *v* and 0.5 when `orientation` is *h*. When `xref` is *container*, defaults to *1* when `orientation` is *v* and 0.5 when `orientation` is *h*. Must be between *0* and *1* if `xref` is *container* and between *-2* and *3* if `xref` is *paper*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number"
                    }
                  ]
                },
                "xanchor": {
                  "description": "Sets this color bar's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the color bar. Defaults to *left* when `orientation` is *v* and *center* when `orientation` is *h*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "left",
                        "center",
                        "right"
                      ]
                    }
                  ]
                },
                "xpad": {
                  "description": "Sets the amount of padding (in px) along the x direction.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 10
                    }
                  ]
                },
                "xref": {
                  "description": "Sets the container `x` refers to. *container* spans the entire `width` of the plot. *paper* refers to the width of the plotting area only.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "container",
                        "paper"
                      ],
                      "default": "paper"
                    }
                  ]
                },
                "y": {
                  "description": "Sets the y position with respect to `yref` of the color bar (in plot fraction). When `yref` is *paper*, defaults to 0.5 when `orientation` is *v* and 1.02 when `orientation` is *h*. When `yref` is *container*, defaults to 0.5 when `orientation` is *v* and 1 when `orientation` is *h*. Must be between *0* and *1* if `yref` is *container* and between *-2* and *3* if `yref` is *paper*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number"
                    }
                  ]
                },
                "yanchor": {
                  "description": "Sets this color bar's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the color bar. Defaults to *middle* when `orientation` is *v* and *bottom* when `orientation` is *h*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "top",
                        "middle",
                        "bottom"
                      ]
                    }
                  ]
                },
                "ypad": {
                  "description": "Sets the amount of padding (in px) along the y direction.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 10
                    }
                  ]
                },
                "yref": {
                  "description": "Sets the container `y` refers to. *container* spans the entire `height` of the plot. *paper* refers to the height of the plotting area only.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "container",
                        "paper"
                      ],
                      "default": "paper"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "colorscale": {
              "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/colorscale",
                  "default": null
                }
              ]
            },
            "colorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `color`.",
              "type": "string"
            },
            "gradient": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the final color of the gradient fill: the center color for radial, the right for horizontal, or the bottom for vertical.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "colorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `color`.",
                  "type": "string"
                },
                "type": {
                  "description": "Sets the type of gradient used to fill the markers",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "radial",
                            "horizontal",
                            "vertical",
                            "none"
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "radial",
                              "horizontal",
                              "vertical",
                              "none"
                            ],
                            "default": "none"
                          }
                        ]
                      }
                    }
                  ]
                },
                "typesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `type`.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "line": {
              "type": "object",
              "properties": {
                "autocolorscale": {
                  "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.line.colorscale`. Has an effect only if in `marker.line.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                },
                "cauto": {
                  "description": "Determines whether or not the color domain is computed with respect to the input data (here in `marker.line.color`) or the bounds set in `marker.line.cmin` and `marker.line.cmax` Has an effect only if in `marker.line.color` is set to a numerical array. Defaults to `false` when `marker.line.cmin` and `marker.line.cmax` are set by the user.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                },
                "cmax": {
                  "description": "Sets the upper bound of the color domain. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color` and if set, `marker.line.cmin` must be set as well.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "default": null
                    }
                  ]
                },
                "cmid": {
                  "description": "Sets the mid-point of the color domain by scaling `marker.line.cmin` and/or `marker.line.cmax` to be equidistant to this point. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color`. Has no effect when `marker.line.cauto` is `false`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "default": null
                    }
                  ]
                },
                "cmin": {
                  "description": "Sets the lower bound of the color domain. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color` and if set, `marker.line.cmax` must be set as well.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "default": null
                    }
                  ]
                },
                "color": {
                  "description": "Sets the marker.line color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.line.cmin` and `marker.line.cmax` if set.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "coloraxis": {
                  "description": "Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "string",
                      "default": null,
                      "pattern": "/^coloraxis([2-9]|[1-9][0-9]+)?$/"
                    }
                  ]
                },
                "colorscale": {
                  "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/colorscale",
                      "default": null
                    }
                  ]
                },
                "colorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `color`.",
                  "type": "string"
                },
                "reversescale": {
                  "description": "Reverses the color mapping if true. Has an effect only if in `marker.line.color` is set to a numerical array. If true, `marker.line.cmin` will correspond to the last color in the array and `marker.line.cmax` will correspond to the first color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": false
                    }
                  ]
                },
                "width": {
                  "description": "Sets the width (in px) of the lines bounding the marker points.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 0
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 0
                          }
                        ]
                      }
                    }
                  ]
                },
                "widthsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `width`.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "maxdisplayed": {
              "description": "Sets a maximum number of points to be drawn on the graph. *0* corresponds to no limit.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "opacity": {
              "description": "Sets the marker opacity.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 1
                      }
                    ]
                  }
                }
              ]
            },
            "opacitysrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `opacity`.",
              "type": "string"
            },
            "reversescale": {
              "description": "Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            },
            "showscale": {
              "description": "Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            },
            "size": {
              "description": "Sets the marker size (in px).",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 6
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 0,
                        "default": 6
                      }
                    ]
                  }
                }
              ]
            },
            "sizemin": {
              "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the minimum size (in px) of the rendered marker points.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "sizemode": {
              "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the rule for which the data in `size` is converted to pixels.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "diameter",
                    "area"
                  ],
                  "default": "diameter"
                }
              ]
            },
            "sizeref": {
              "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the scale factor used to determine the rendered size of marker points. Use with `sizemin` and `sizemode`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": 1
                }
              ]
            },
            "sizesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `size`.",
              "type": "string"
            },
            "standoff": {
              "description": "Moves the marker away from the data point in the direction of `angle` (in px). This can be useful for example if you have another marker at this location and you want to point an arrowhead marker at it.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 0
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 0,
                        "default": 0
                      }
                    ]
                  }
                }
              ]
            },
            "standoffsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `standoff`.",
              "type": "string"
            },
            "symbol": {
              "description": "Sets the marker symbol type. Adding 100 is equivalent to appending *-open* to a symbol name. Adding 200 is equivalent to appending *-dot* to a symbol name. Adding 300 is equivalent to appending *-open-dot* or *dot-open* to a symbol name.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        0,
                        "0",
                        "circle",
                        100,
                        "100",
                        "circle-open",
                        200,
                        "200",
                        "circle-dot",
                        300,
                        "300",
                        "circle-open-dot",
                        1,
                        "1",
                        "square",
                        101,
                        "101",
                        "square-open",
                        201,
                        "201",
                        "square-dot",
                        301,
                        "301",
                        "square-open-dot",
                        2,
                        "2",
                        "diamond",
                        102,
                        "102",
                        "diamond-open",
                        202,
                        "202",
                        "diamond-dot",
                        302,
                        "302",
                        "diamond-open-dot",
                        3,
                        "3",
                        "cross",
                        103,
                        "103",
                        "cross-open",
                        203,
                        "203",
                        "cross-dot",
                        303,
                        "303",
                        "cross-open-dot",
                        4,
                        "4",
                        "x",
                        104,
                        "104",
                        "x-open",
                        204,
                        "204",
                        "x-dot",
                        304,
                        "304",
                        "x-open-dot",
                        5,
                        "5",
                        "triangle-up",
                        105,
                        "105",
                        "triangle-up-open",
                        205,
                        "205",
                        "triangle-up-dot",
                        305,
                        "305",
                        "triangle-up-open-dot",
                        6,
                        "6",
                        "triangle-down",
                        106,
                        "106",
                        "triangle-down-open",
                        206,
                        "206",
                        "triangle-down-dot",
                        306,
                        "306",
                        "triangle-down-open-dot",
                        7,
                        "7",
                        "triangle-left",
                        107,
                        "107",
                        "triangle-left-open",
                        207,
                        "207",
                        "triangle-left-dot",
                        307,
                        "307",
                        "triangle-left-open-dot",
                        8,
                        "8",
                        "triangle-right",
                        108,
                        "108",
                        "triangle-right-open",
                        208,
                        "208",
                        "triangle-right-dot",
                        308,
                        "308",
                        "triangle-right-open-dot",
                        9,
                        "9",
                        "triangle-ne",
                        109,
                        "109",
                        "triangle-ne-open",
                        209,
                        "209",
                        "triangle-ne-dot",
                        309,
                        "309",
                        "triangle-ne-open-dot",
                        10,
                        "10",
                        "triangle-se",
                        110,
                        "110",
                        "triangle-se-open",
                        210,
                        "210",
                        "triangle-se-dot",
                        310,
                        "310",
                        "triangle-se-open-dot",
                        11,
                        "11",
                        "triangle-sw",
                        111,
                        "111",
                        "triangle-sw-open",
                        211,
                        "211",
                        "triangle-sw-dot",
                        311,
                        "311",
                        "triangle-sw-open-dot",
                        12,
                        "12",
                        "triangle-nw",
                        112,
                        "112",
                        "triangle-nw-open",
                        212,
                        "212",
                        "triangle-nw-dot",
                        312,
                        "312",
                        "triangle-nw-open-dot",
                        13,
                        "13",
                        "pentagon",
                        113,
                        "113",
                        "pentagon-open",
                        213,
                        "213",
                        "pentagon-dot",
                        313,
                        "313",
                        "pentagon-open-dot",
                        14,
                        "14",
                        "hexagon",
                        114,
                        "114",
                        "hexagon-open",
                        214,
                        "214",
                        "hexagon-dot",
                        314,
                        "314",
                        "hexagon-open-dot",
                        15,
                        "15",
                        "hexagon2",
                        115,
                        "115",
                        "hexagon2-open",
                        215,
                        "215",
                        "hexagon2-dot",
                        315,
                        "315",
                        "hexagon2-open-dot",
                        16,
                        "16",
                        "octagon",
                        116,
                        "116",
                        "octagon-open",
                        216,
                        "216",
                        "octagon-dot",
                        316,
                        "316",
                        "octagon-open-dot",
                        17,
                        "17",
                        "star",
                        117,
                        "117",
                        "star-open",
                        217,
                        "217",
                        "star-dot",
                        317,
                        "317",
                        "star-open-dot",
                        18,
                        "18",
                        "hexagram",
                        118,
                        "118",
                        "hexagram-open",
                        218,
                        "218",
                        "hexagram-dot",
                        318,
                        "318",
                        "hexagram-open-dot",
                        19,
                        "19",
                        "star-triangle-up",
                        119,
                        "119",
                        "star-triangle-up-open",
                        219,
                        "219",
                        "star-triangle-up-dot",
                        319,
                        "319",
                        "star-triangle-up-open-dot",
                        20,
                        "20",
                        "star-triangle-down",
                        120,
                        "120",
                        "star-triangle-down-open",
                        220,
                        "220",
                        "star-triangle-down-dot",
                        320,
                        "320",
                        "star-triangle-down-open-dot",
                        21,
                        "21",
                        "star-square",
                        121,
                        "121",
                        "star-square-open",
                        221,
                        "221",
                        "star-square-dot",
                        321,
                        "321",
                        "star-square-open-dot",
                        22,
                        "22",
                        "star-diamond",
                        122,
                        "122",
                        "star-diamond-open",
                        222,
                        "222",
                        "star-diamond-dot",
                        322,
                        "322",
                        "star-diamond-open-dot",
                        23,
                        "23",
                        "diamond-tall",
                        123,
                        "123",
                        "diamond-tall-open",
                        223,
                        "223",
                        "diamond-tall-dot",
                        323,
                        "323",
                        "diamond-tall-open-dot",
                        24,
                        "24",
                        "diamond-wide",
                        124,
                        "124",
                        "diamond-wide-open",
                        224,
                        "224",
                        "diamond-wide-dot",
                        324,
                        "324",
                        "diamond-wide-open-dot",
                        25,
                        "25",
                        "hourglass",
                        125,
                        "125",
                        "hourglass-open",
                        26,
                        "26",
                        "bowtie",
                        126,
                        "126",
                        "bowtie-open",
                        27,
                        "27",
                        "circle-cross",
                        127,
                        "127",
                        "circle-cross-open",
                        28,
                        "28",
                        "circle-x",
                        128,
                        "128",
                        "circle-x-open",
                        29,
                        "29",
                        "square-cross",
                        129,
                        "129",
                        "square-cross-open",
                        30,
                        "30",
                        "square-x",
                        130,
                        "130",
                        "square-x-open",
                        31,
                        "31",
                        "diamond-cross",
                        131,
                        "131",
                        "diamond-cross-open",
                        32,
                        "32",
                        "diamond-x",
                        132,
                        "132",
                        "diamond-x-open",
                        33,
                        "33",
                        "cross-thin",
                        133,
                        "133",
                        "cross-thin-open",
                        34,
                        "34",
                        "x-thin",
                        134,
                        "134",
                        "x-thin-open",
                        35,
                        "35",
                        "asterisk",
                        135,
                        "135",
                        "asterisk-open",
                        36,
                        "36",
                        "hash",
                        136,
                        "136",
                        "hash-open",
                        236,
                        "236",
                        "hash-dot",
                        336,
                        "336",
                        "hash-open-dot",
                        37,
                        "37",
                        "y-up",
                        137,
                        "137",
                        "y-up-open",
                        38,
                        "38",
                        "y-down",
                        138,
                        "138",
                        "y-down-open",
                        39,
                        "39",
                        "y-left",
                        139,
                        "139",
                        "y-left-open",
                        40,
                        "40",
                        "y-right",
                        140,
                        "140",
                        "y-right-open",
                        41,
                        "41",
                        "line-ew",
                        141,
                        "141",
                        "line-ew-open",
                        42,
                        "42",
                        "line-ns",
                        142,
                        "142",
                        "line-ns-open",
                        43,
                        "43",
                        "line-ne",
                        143,
                        "143",
                        "line-ne-open",
                        44,
                        "44",
                        "line-nw",
                        144,
                        "144",
                        "line-nw-open",
                        45,
                        "45",
                        "arrow-up",
                        145,
                        "145",
                        "arrow-up-open",
                        46,
                        "46",
                        "arrow-down",
                        146,
                        "146",
                        "arrow-down-open",
                        47,
                        "47",
                        "arrow-left",
                        147,
                        "147",
                        "arrow-left-open",
                        48,
                        "48",
                        "arrow-right",
                        148,
                        "148",
                        "arrow-right-open",
                        49,
                        "49",
                        "arrow-bar-up",
                        149,
                        "149",
                        "arrow-bar-up-open",
                        50,
                        "50",
                        "arrow-bar-down",
                        150,
                        "150",
                        "arrow-bar-down-open",
                        51,
                        "51",
                        "arrow-bar-left",
                        151,
                        "151",
                        "arrow-bar-left-open",
                        52,
                        "52",
                        "arrow-bar-right",
                        152,
                        "152",
                        "arrow-bar-right-open",
                        53,
                        "53",
                        "arrow",
                        153,
                        "153",
                        "arrow-open",
                        54,
                        "54",
                        "arrow-wide",
                        154,
                        "154",
                        "arrow-wide-open"
                      ],
                      "default": "circle"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          0,
                          "0",
                          "circle",
                          100,
                          "100",
                          "circle-open",
                          200,
                          "200",
                          "circle-dot",
                          300,
                          "300",
                          "circle-open-dot",
                          1,
                          "1",
                          "square",
                          101,
                          "101",
                          "square-open",
                          201,
                          "201",
                          "square-dot",
                          301,
                          "301",
                          "square-open-dot",
                          2,
                          "2",
                          "diamond",
                          102,
                          "102",
                          "diamond-open",
                          202,
                          "202",
                          "diamond-dot",
                          302,
                          "302",
                          "diamond-open-dot",
                          3,
                          "3",
                          "cross",
                          103,
                          "103",
                          "cross-open",
                          203,
                          "203",
                          "cross-dot",
                          303,
                          "303",
                          "cross-open-dot",
                          4,
                          "4",
                          "x",
                          104,
                          "104",
                          "x-open",
                          204,
                          "204",
                          "x-dot",
                          304,
                          "304",
                          "x-open-dot",
                          5,
                          "5",
                          "triangle-up",
                          105,
                          "105",
                          "triangle-up-open",
                          205,
                          "205",
                          "triangle-up-dot",
                          305,
                          "305",
                          "triangle-up-open-dot",
                          6,
                          "6",
                          "triangle-down",
                          106,
                          "106",
                          "triangle-down-open",
                          206,
                          "206",
                          "triangle-down-dot",
                          306,
                          "306",
                          "triangle-down-open-dot",
                          7,
                          "7",
                          "triangle-left",
                          107,
                          "107",
                          "triangle-left-open",
                          207,
                          "207",
                          "triangle-left-dot",
                          307,
                          "307",
                          "triangle-left-open-dot",
                          8,
                          "8",
                          "triangle-right",
                          108,
                          "108",
                          "triangle-right-open",
                          208,
                          "208",
                          "triangle-right-dot",
                          308,
                          "308",
                          "triangle-right-open-dot",
                          9,
                          "9",
                          "triangle-ne",
                          109,
                          "109",
                          "triangle-ne-open",
                          209,
                          "209",
                          "triangle-ne-dot",
                          309,
                          "309",
                          "triangle-ne-open-dot",
                          10,
                          "10",
                          "triangle-se",
                          110,
                          "110",
                          "triangle-se-open",
                          210,
                          "210",
                          "triangle-se-dot",
                          310,
                          "310",
                          "triangle-se-open-dot",
                          11,
                          "11",
                          "triangle-sw",
                          111,
                          "111",
                          "triangle-sw-open",
                          211,
                          "211",
                          "triangle-sw-dot",
                          311,
                          "311",
                          "triangle-sw-open-dot",
                          12,
                          "12",
                          "triangle-nw",
                          112,
                          "112",
                          "triangle-nw-open",
                          212,
                          "212",
                          "triangle-nw-dot",
                          312,
                          "312",
                          "triangle-nw-open-dot",
                          13,
                          "13",
                          "pentagon",
                          113,
                          "113",
                          "pentagon-open",
                          213,
                          "213",
                          "pentagon-dot",
                          313,
                          "313",
                          "pentagon-open-dot",
                          14,
                          "14",
                          "hexagon",
                          114,
                          "114",
                          "hexagon-open",
                          214,
                          "214",
                          "hexagon-dot",
                          314,
                          "314",
                          "hexagon-open-dot",
                          15,
                          "15",
                          "hexagon2",
                          115,
                          "115",
                          "hexagon2-open",
                          215,
                          "215",
                          "hexagon2-dot",
                          315,
                          "315",
                          "hexagon2-open-dot",
                          16,
                          "16",
                          "octagon",
                          116,
                          "116",
                          "octagon-open",
                          216,
                          "216",
                          "octagon-dot",
                          316,
                          "316",
                          "octagon-open-dot",
                          17,
                          "17",
                          "star",
                          117,
                          "117",
                          "star-open",
                          217,
                          "217",
                          "star-dot",
                          317,
                          "317",
                          "star-open-dot",
                          18,
                          "18",
                          "hexagram",
                          118,
                          "118",
                          "hexagram-open",
                          218,
                          "218",
                          "hexagram-dot",
                          318,
                          "318",
                          "hexagram-open-dot",
                          19,
                          "19",
                          "star-triangle-up",
                          119,
                          "119",
                          "star-triangle-up-open",
                          219,
                          "219",
                          "star-triangle-up-dot",
                          319,
                          "319",
                          "star-triangle-up-open-dot",
                          20,
                          "20",
                          "star-triangle-down",
                          120,
                          "120",
                          "star-triangle-down-open",
                          220,
                          "220",
                          "star-triangle-down-dot",
                          320,
                          "320",
                          "star-triangle-down-open-dot",
                          21,
                          "21",
                          "star-square",
                          121,
                          "121",
                          "star-square-open",
                          221,
                          "221",
                          "star-square-dot",
                          321,
                          "321",
                          "star-square-open-dot",
                          22,
                          "22",
                          "star-diamond",
                          122,
                          "122",
                          "star-diamond-open",
                          222,
                          "222",
                          "star-diamond-dot",
                          322,
                          "322",
                          "star-diamond-open-dot",
                          23,
                          "23",
                          "diamond-tall",
                          123,
                          "123",
                          "diamond-tall-open",
                          223,
                          "223",
                          "diamond-tall-dot",
                          323,
                          "323",
                          "diamond-tall-open-dot",
                          24,
                          "24",
                          "diamond-wide",
                          124,
                          "124",
                          "diamond-wide-open",
                          224,
                          "224",
                          "diamond-wide-dot",
                          324,
                          "324",
                          "diamond-wide-open-dot",
                          25,
                          "25",
                          "hourglass",
                          125,
                          "125",
                          "hourglass-open",
                          26,
                          "26",
                          "bowtie",
                          126,
                          "126",
                          "bowtie-open",
                          27,
                          "27",
                          "circle-cross",
                          127,
                          "127",
                          "circle-cross-open",
                          28,
                          "28",
                          "circle-x",
                          128,
                          "128",
                          "circle-x-open",
                          29,
                          "29",
                          "square-cross",
                          129,
                          "129",
                          "square-cross-open",
                          30,
                          "30",
                          "square-x",
                          130,
                          "130",
                          "square-x-open",
                          31,
                          "31",
                          "diamond-cross",
                          131,
                          "131",
                          "diamond-cross-open",
                          32,
                          "32",
                          "diamond-x",
                          132,
                          "132",
                          "diamond-x-open",
                          33,
                          "33",
                          "cross-thin",
                          133,
                          "133",
                          "cross-thin-open",
                          34,
                          "34",
                          "x-thin",
                          134,
                          "134",
                          "x-thin-open",
                          35,
                          "35",
                          "asterisk",
                          135,
                          "135",
                          "asterisk-open",
                          36,
                          "36",
                          "hash",
                          136,
                          "136",
                          "hash-open",
                          236,
                          "236",
                          "hash-dot",
                          336,
                          "336",
                          "hash-open-dot",
                          37,
                          "37",
                          "y-up",
                          137,
                          "137",
                          "y-up-open",
                          38,
                          "38",
                          "y-down",
                          138,
                          "138",
                          "y-down-open",
                          39,
                          "39",
                          "y-left",
                          139,
                          "139",
                          "y-left-open",
                          40,
                          "40",
                          "y-right",
                          140,
                          "140",
                          "y-right-open",
                          41,
                          "41",
                          "line-ew",
                          141,
                          "141",
                          "line-ew-open",
                          42,
                          "42",
                          "line-ns",
                          142,
                          "142",
                          "line-ns-open",
                          43,
                          "43",
                          "line-ne",
                          143,
                          "143",
                          "line-ne-open",
                          44,
                          "44",
                          "line-nw",
                          144,
                          "144",
                          "line-nw-open",
                          45,
                          "45",
                          "arrow-up",
                          145,
                          "145",
                          "arrow-up-open",
                          46,
                          "46",
                          "arrow-down",
                          146,
                          "146",
                          "arrow-down-open",
                          47,
                          "47",
                          "arrow-left",
                          147,
                          "147",
                          "arrow-left-open",
                          48,
                          "48",
                          "arrow-right",
                          148,
                          "148",
                          "arrow-right-open",
                          49,
                          "49",
                          "arrow-bar-up",
                          149,
                          "149",
                          "arrow-bar-up-open",
                          50,
                          "50",
                          "arrow-bar-down",
                          150,
                          "150",
                          "arrow-bar-down-open",
                          51,
                          "51",
                          "arrow-bar-left",
                          151,
                          "151",
                          "arrow-bar-left-open",
                          52,
                          "52",
                          "arrow-bar-right",
                          152,
                          "152",
                          "arrow-bar-right-open",
                          53,
                          "53",
                          "arrow",
                          153,
                          "153",
                          "arrow-open",
                          54,
                          "54",
                          "arrow-wide",
                          154,
                          "154",
                          "arrow-wide-open"
                        ],
                        "default": "circle"
                      }
                    ]
                  }
                }
              ]
            },
            "symbolsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `symbol`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "metasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `meta`.",
          "type": "string"
        },
        "mode": {
          "description": "Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover. If there are less than 20 points and the trace is not stacked then the default is *lines+markers*. Otherwise, *lines*.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "oneOf": [
                {
                  "type": "string",
                  "enum": [
                    "none"
                  ]
                },
                {
                  "type": "string",
                  "pattern": "^(lines|markers|text)(\\+(lines|markers|text))*$"
                }
              ]
            }
          ]
        },
        "name": {
          "description": "Sets the trace name. The trace name appears as the legend item and on hover.",
          "type": "string"
        },
        "opacity": {
          "description": "Sets the opacity of the trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0,
              "maximum": 1,
              "default": 1
            }
          ]
        },
        "real": {
          "description": "Sets the real component of the data, in units of normalized impedance such that real=1, imag=0 is the center of the chart.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "realsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `real`.",
          "type": "string"
        },
        "selected": {
          "type": "object",
          "properties": {
            "marker": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the marker color of selected points.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "opacity": {
                  "description": "Sets the marker opacity of selected points.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1
                    }
                  ]
                },
                "size": {
                  "description": "Sets the marker size of selected points.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "textfont": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the text font color of selected points.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                }
              },
              "additionalProperties": false
            }
          },
          "additionalProperties": false
        },
        "selectedpoints": {
          "description": "Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect."
        },
        "showlegend": {
          "description": "Determines whether or not an item corresponding to this trace is shown in the legend.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "stream": {
          "type": "object",
          "properties": {
            "maxpoints": {
              "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 10000,
                  "default": 500
                }
              ]
            },
            "token": {
              "pattern": ".*\\S.*$",
              "description": "The stream id number links a data trace on a plot with a stream. See <https://chart-studio.plotly.com/settings> for more details.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "subplot": {
          "description": "Sets a reference between this trace's data coordinates and a smith subplot. If *smith* (the default value), the data refer to `layout.smith`. If *smith2*, the data refer to `layout.smith2`, and so on.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "smith",
              "pattern": "^smith([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "text": {
          "description": "Sets text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "textfont": {
          "type": "object",
          "properties": {
            "color": {
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "colorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `color`.",
              "type": "string"
            },
            "family": {
              "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
              "oneOf": [
                {
                  "pattern": ".*\\S.*$",
                  "type": "string"
                },
                {
                  "type": "array",
                  "items": {
                    "pattern": ".*\\S.*$",
                    "type": "string"
                  }
                },
                {
                  "$ref": "#/$defs/query-string"
                }
              ]
            },
            "familysrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `family`.",
              "type": "string"
            },
            "lineposition": {
              "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "oneOf": [
                          {
                            "type": "string",
                            "enum": [
                              "none"
                            ]
                          },
                          {
                            "type": "string",
                            "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                          }
                        ],
                        "default": "none"
                      }
                    ]
                  }
                }
              ]
            },
            "linepositionsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.",
              "type": "string"
            },
            "shadow": {
              "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
              "oneOf": [
                {
                  "default": "none",
                  "type": "string"
                },
                {
                  "type": "array",
                  "items": {
                    "default": "none",
                    "type": "string"
                  }
                }
              ]
            },
            "shadowsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `shadow`.",
              "type": "string"
            },
            "size": {
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 1
                      }
                    ]
                  }
                }
              ]
            },
            "sizesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `size`.",
              "type": "string"
            },
            "style": {
              "description": "Sets whether a font should be styled with a normal or italic face from its family.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "italic"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "stylesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `style`.",
              "type": "string"
            },
            "textcase": {
              "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "word caps",
                          "upper",
                          "lower"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "textcasesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `textcase`.",
              "type": "string"
            },
            "variant": {
              "description": "Sets the variant of the font.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "small-caps",
                          "all-small-caps",
                          "all-petite-caps",
                          "petite-caps",
                          "unicase"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "variantsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `variant`.",
              "type": "string"
            },
            "weight": {
              "description": "Sets the weight (or boldness) of the font.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 1000,
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "weightsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `weight`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "textposition": {
          "description": "Sets the positions of the `text` elements with respects to the (x,y) coordinates.",
          "oneOf": [
            {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "top left",
                    "top center",
                    "top right",
                    "middle left",
                    "middle center",
                    "middle right",
                    "bottom left",
                    "bottom center",
                    "bottom right"
                  ],
                  "default": "middle center"
                }
              ]
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "enum": [
                      "top left",
                      "top center",
                      "top right",
                      "middle left",
                      "middle center",
                      "middle right",
                      "bottom left",
                      "bottom center",
                      "bottom right"
                    ],
                    "default": "middle center"
                  }
                ]
              }
            }
          ]
        },
        "textpositionsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `textposition`.",
          "type": "string"
        },
        "textsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `text`.",
          "type": "string"
        },
        "texttemplate": {
          "description": "Template string used for rendering the information text that appear on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". <https://github.com/d3/d3-format/tree/v1.4.5#d3-format> for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format> for details on the date formatting syntax. Every attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `real`, `imag` and `text`.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "texttemplatesrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.",
          "type": "string"
        },
        "uid": {
          "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.",
          "type": "string"
        },
        "uirevision": {
          "description": "Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves."
        },
        "unselected": {
          "type": "object",
          "properties": {
            "marker": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the marker color of unselected points, applied only when a selection exists.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "opacity": {
                  "description": "Sets the marker opacity of unselected points, applied only when a selection exists.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1
                    }
                  ]
                },
                "size": {
                  "description": "Sets the marker size of unselected points, applied only when a selection exists.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "textfont": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the text font color of unselected points, applied only when a selection exists.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                }
              },
              "additionalProperties": false
            }
          },
          "additionalProperties": false
        },
        "visible": {
          "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                true,
                false,
                "legendonly"
              ],
              "default": true
            }
          ]
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false
    },
    "Scatterternary": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "$id": "https://visivo.io/trace-properties/schema",
      "description": "A schema to validate plotly trace properties",
      "type": "object",
      "properties": {
        "type": {
          "const": "scatterternary"
        },
        "a": {
          "description": "Sets the quantity of component `a` in each data point. If `a`, `b`, and `c` are all provided, they need not be normalized, only the relative values matter. If only two arrays are provided they must be normalized to match `ternary<i>.sum`.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "asrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `a`.",
          "type": "string"
        },
        "b": {
          "description": "Sets the quantity of component `a` in each data point. If `a`, `b`, and `c` are all provided, they need not be normalized, only the relative values matter. If only two arrays are provided they must be normalized to match `ternary<i>.sum`.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "bsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `b`.",
          "type": "string"
        },
        "c": {
          "description": "Sets the quantity of component `a` in each data point. If `a`, `b`, and `c` are all provided, they need not be normalized, only the relative values matter. If only two arrays are provided they must be normalized to match `ternary<i>.sum`.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "cliponaxis": {
          "description": "Determines whether or not markers and text nodes are clipped about the subplot axes. To show markers and text nodes above axis lines and tick labels, make sure to set `xaxis.layer` and `yaxis.layer` to *below traces*.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "connectgaps": {
          "description": "Determines whether or not gaps (i.e. {nan} or missing values) in the provided data arrays are connected.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": false
            }
          ]
        },
        "csrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `c`.",
          "type": "string"
        },
        "customdata": {
          "description": "Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "customdatasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `customdata`.",
          "type": "string"
        },
        "fill": {
          "description": "Sets the area to fill with a solid color. Use with `fillcolor` if not *none*. scatterternary has a subset of the options available to scatter. *toself* connects the endpoints of the trace (or each segment of the trace if it has gaps) into a closed shape. *tonext* fills the space between two traces if one completely encloses the other (eg consecutive contour lines), and behaves like *toself* if there is no trace before it. *tonext* should not be used if one trace does not enclose the other.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "none",
                "toself",
                "tonext"
              ],
              "default": "none"
            }
          ]
        },
        "fillcolor": {
          "description": "Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "$ref": "#/$defs/color"
            }
          ]
        },
        "hoverinfo": {
          "description": "Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired.",
          "oneOf": [
            {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "oneOf": [
                    {
                      "type": "string",
                      "enum": [
                        "all",
                        "none",
                        "skip"
                      ]
                    },
                    {
                      "type": "string",
                      "pattern": "^(a|b|c|text|name)(\\+(a|b|c|text|name))*$"
                    }
                  ],
                  "default": "all"
                }
              ]
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "oneOf": [
                      {
                        "type": "string",
                        "enum": [
                          "all",
                          "none",
                          "skip"
                        ]
                      },
                      {
                        "type": "string",
                        "pattern": "^(a|b|c|text|name)(\\+(a|b|c|text|name))*$"
                      }
                    ],
                    "default": "all"
                  }
                ]
              }
            }
          ]
        },
        "hoverinfosrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.",
          "type": "string"
        },
        "hoverlabel": {
          "type": "object",
          "properties": {
            "align": {
              "description": "Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "left",
                        "right",
                        "auto"
                      ],
                      "default": "auto"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "left",
                          "right",
                          "auto"
                        ],
                        "default": "auto"
                      }
                    ]
                  }
                }
              ]
            },
            "alignsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `align`.",
              "type": "string"
            },
            "bgcolor": {
              "description": "Sets the background color of the hover labels for this trace",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "bgcolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.",
              "type": "string"
            },
            "bordercolor": {
              "description": "Sets the border color of the hover labels for this trace.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "bordercolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.",
              "type": "string"
            },
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "colorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `color`.",
                  "type": "string"
                },
                "family": {
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "oneOf": [
                    {
                      "pattern": ".*\\S.*$",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "pattern": ".*\\S.*$",
                        "type": "string"
                      }
                    },
                    {
                      "$ref": "#/$defs/query-string"
                    }
                  ]
                },
                "familysrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `family`.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "oneOf": [
                              {
                                "type": "string",
                                "enum": [
                                  "none"
                                ]
                              },
                              {
                                "type": "string",
                                "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                              }
                            ],
                            "default": "none"
                          }
                        ]
                      }
                    }
                  ]
                },
                "linepositionsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.",
                  "type": "string"
                },
                "shadow": {
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "oneOf": [
                    {
                      "default": "none",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "default": "none",
                        "type": "string"
                      }
                    }
                  ]
                },
                "shadowsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `shadow`.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 1
                          }
                        ]
                      }
                    }
                  ]
                },
                "sizesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `size`.",
                  "type": "string"
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "italic"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "stylesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `style`.",
                  "type": "string"
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "word caps",
                              "upper",
                              "lower"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "textcasesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `textcase`.",
                  "type": "string"
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "small-caps",
                              "all-small-caps",
                              "all-petite-caps",
                              "petite-caps",
                              "unicase"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "variantsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `variant`.",
                  "type": "string"
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 1000,
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "weightsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `weight`.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "namelength": {
              "description": "Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": -1,
                      "default": 15
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "integer",
                        "minimum": -1,
                        "default": 15
                      }
                    ]
                  }
                }
              ]
            },
            "namelengthsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `namelength`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "hoveron": {
          "description": "Do the hover effects highlight individual points (markers or line points) or do they highlight filled regions? If the fill is *toself* or *tonext* and there are no markers or text, then the default is *fills*, otherwise it is *points*.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "pattern": "^(points|fills)(\\+(points|fills))*$"
            }
          ]
        },
        "hovertemplate": {
          "description": "Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". <https://github.com/d3/d3-format/tree/v1.4.5#d3-format> for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format> for details on the date formatting syntax. The variables available in `hovertemplate` are the ones emitted as event data described at this link <https://plotly.com/javascript/plotlyjs-events/#event-data>. Additionally, every attributes that can be specified per-point (the ones that are `arrayOk: true`) are available.  Anything contained in tag `<extra>` is displayed in the secondary box, for example \"<extra>{fullData.name}</extra>\". To hide the secondary box completely, use an empty tag `<extra></extra>`.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "hovertemplatesrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.",
          "type": "string"
        },
        "hovertext": {
          "description": "Sets hover text elements associated with each (a,b,c) point. If a single string, the same string appears over all the data points. If an array of strings, the items are mapped in order to the the data points in (a,b,c). To be seen, trace `hoverinfo` must contain a *text* flag.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "hovertextsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.",
          "type": "string"
        },
        "ids": {
          "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "idssrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `ids`.",
          "type": "string"
        },
        "legend": {
          "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "legend",
              "pattern": "^legend([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "legendgroup": {
          "default": "",
          "description": "Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items.",
          "type": "string"
        },
        "legendgrouptitle": {
          "type": "object",
          "properties": {
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "family": {
                  "pattern": ".*\\S.*$",
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                "shadow": {
                  "default": "none",
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "text": {
              "default": "",
              "description": "Sets the title of the legend group.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "legendrank": {
          "description": "Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": 1000
            }
          ]
        },
        "legendwidth": {
          "description": "Sets the width (in px or fraction) of the legend for this trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0
            }
          ]
        },
        "line": {
          "type": "object",
          "properties": {
            "backoff": {
              "description": "Sets the line back off from the end point of the nth line segment (in px). This option is useful e.g. to avoid overlap with arrowhead markers. With *auto* the lines would trim before markers if `marker.angleref` is set to *previous*.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": "auto"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 0,
                        "default": "auto"
                      }
                    ]
                  }
                }
              ]
            },
            "backoffsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `backoff`.",
              "type": "string"
            },
            "color": {
              "description": "Sets the line color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "dash": {
              "default": "solid",
              "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).",
              "type": "string"
            },
            "shape": {
              "description": "Determines the line shape. With *spline* the lines are drawn using spline interpolation. The other available values correspond to step-wise line shapes.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "linear",
                    "spline"
                  ],
                  "default": "linear"
                }
              ]
            },
            "smoothing": {
              "description": "Has an effect only if `shape` is set to *spline* Sets the amount of smoothing. *0* corresponds to no smoothing (equivalent to a *linear* shape).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 1.3,
                  "default": 1
                }
              ]
            },
            "width": {
              "description": "Sets the line width (in px).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 2
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "marker": {
          "type": "object",
          "properties": {
            "angle": {
              "description": "Sets the marker angle in respect to `angleref`.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": -180,
                      "maximum": 180,
                      "default": 0
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": -180,
                        "maximum": 180,
                        "default": 0
                      }
                    ]
                  }
                }
              ]
            },
            "angleref": {
              "description": "Sets the reference for marker angle. With *previous*, angle 0 points along the line from the previous point to this one. With *up*, angle 0 points toward the top of the screen.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "previous",
                    "up"
                  ],
                  "default": "up"
                }
              ]
            },
            "anglesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `angle`.",
              "type": "string"
            },
            "autocolorscale": {
              "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": true
                }
              ]
            },
            "cauto": {
              "description": "Determines whether or not the color domain is computed with respect to the input data (here in `marker.color`) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if in `marker.color` is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": true
                }
              ]
            },
            "cmax": {
              "description": "Sets the upper bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmin` must be set as well.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": null
                }
              ]
            },
            "cmid": {
              "description": "Sets the mid-point of the color domain by scaling `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color`. Has no effect when `marker.cauto` is `false`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": null
                }
              ]
            },
            "cmin": {
              "description": "Sets the lower bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmax` must be set as well.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": null
                }
              ]
            },
            "color": {
              "description": "Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.cmin` and `marker.cmax` if set.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "coloraxis": {
              "description": "Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "string",
                  "default": null,
                  "pattern": "/^coloraxis([2-9]|[1-9][0-9]+)?$/"
                }
              ]
            },
            "colorbar": {
              "type": "object",
              "properties": {
                "bgcolor": {
                  "description": "Sets the color of padded area.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "bordercolor": {
                  "description": "Sets the axis line color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "borderwidth": {
                  "description": "Sets the width (in px) or the border enclosing this color bar.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 0
                    }
                  ]
                },
                "dtick": {
                  "description": "Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L<f>*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M<n>* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48*"
                },
                "exponentformat": {
                  "description": "Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "none",
                        "e",
                        "E",
                        "power",
                        "SI",
                        "B"
                      ],
                      "default": "B"
                    }
                  ]
                },
                "labelalias": {
                  "default": false,
                  "description": "Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax."
                },
                "len": {
                  "description": "Sets the length of the color bar This measure excludes the padding of both ends. That is, the color bar length is this length minus the padding on both ends.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "lenmode": {
                  "description": "Determines whether this color bar's length (i.e. the measure in the color variation direction) is set in units of plot *fraction* or in *pixels. Use `len` to set the value.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "fraction",
                        "pixels"
                      ],
                      "default": "fraction"
                    }
                  ]
                },
                "minexponent": {
                  "description": "Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 3
                    }
                  ]
                },
                "nticks": {
                  "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 0,
                      "default": 0
                    }
                  ]
                },
                "orientation": {
                  "description": "Sets the orientation of the colorbar.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "h",
                        "v"
                      ],
                      "default": "v"
                    }
                  ]
                },
                "outlinecolor": {
                  "description": "Sets the axis line color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "outlinewidth": {
                  "description": "Sets the width (in px) of the axis line.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "separatethousands": {
                  "description": "If \"true\", even 4-digit integers are separated",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": false
                    }
                  ]
                },
                "showexponent": {
                  "description": "If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "showticklabels": {
                  "description": "Determines whether or not the tick labels are drawn.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                },
                "showtickprefix": {
                  "description": "If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "showticksuffix": {
                  "description": "Same as `showtickprefix` but for tick suffixes.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "thickness": {
                  "description": "Sets the thickness of the color bar This measure excludes the size of the padding, ticks and labels.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 30
                    }
                  ]
                },
                "thicknessmode": {
                  "description": "Determines whether this color bar's thickness (i.e. the measure in the constant color direction) is set in units of plot *fraction* or in *pixels*. Use `thickness` to set the value.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "fraction",
                        "pixels"
                      ],
                      "default": "pixels"
                    }
                  ]
                },
                "tick0": {
                  "description": "Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L<f>* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears."
                },
                "tickangle": {
                  "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": -180,
                      "maximum": 180,
                      "default": "auto"
                    }
                  ]
                },
                "tickcolor": {
                  "description": "Sets the tick color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "tickfont": {
                  "type": "object",
                  "properties": {
                    "color": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    "family": {
                      "pattern": ".*\\S.*$",
                      "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                      "type": "string"
                    },
                    "lineposition": {
                      "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    "shadow": {
                      "default": "none",
                      "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                      "type": "string"
                    },
                    "size": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    "style": {
                      "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "textcase": {
                      "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "variant": {
                      "description": "Sets the variant of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "weight": {
                      "description": "Sets the weight (or boldness) of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    }
                  },
                  "additionalProperties": false
                },
                "tickformat": {
                  "default": "",
                  "description": "Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*",
                  "type": "string"
                },
                "tickformatstops": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "dtickrange": {
                        "description": "range [*min*, *max*], where *min*, *max* - dtick values which describe some zoom level, it is possible to omit *min* or *max* value by passing *null*",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "array",
                            "items": {},
                            "minItems": 2,
                            "maxItems": 2
                          }
                        ]
                      },
                      "enabled": {
                        "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "boolean",
                            "default": true
                          }
                        ]
                      },
                      "name": {
                        "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.",
                        "type": "string"
                      },
                      "templateitemname": {
                        "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.",
                        "type": "string"
                      },
                      "value": {
                        "default": "",
                        "description": "string - dtickformat for described zoom level, the same as *tickformat*",
                        "type": "string"
                      }
                    },
                    "additionalProperties": false
                  },
                  "minItems": 1
                },
                "ticklabeloverflow": {
                  "description": "Determines how we handle tick labels that would overflow either the graph div or the domain of the axis. The default value for inside tick labels is *hide past domain*. In other cases the default is *hide past div*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "allow",
                        "hide past div",
                        "hide past domain"
                      ]
                    }
                  ]
                },
                "ticklabelposition": {
                  "description": "Determines where tick labels are drawn relative to the ticks. Left and right options are used when `orientation` is *h*, top and bottom when `orientation` is *v*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "outside",
                        "inside",
                        "outside top",
                        "inside top",
                        "outside left",
                        "inside left",
                        "outside right",
                        "inside right",
                        "outside bottom",
                        "inside bottom"
                      ],
                      "default": "outside"
                    }
                  ]
                },
                "ticklabelstep": {
                  "description": "Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "default": 1
                    }
                  ]
                },
                "ticklen": {
                  "description": "Sets the tick length (in px).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 5
                    }
                  ]
                },
                "tickmode": {
                  "description": "Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "auto",
                        "linear",
                        "array"
                      ]
                    }
                  ]
                },
                "tickprefix": {
                  "default": "",
                  "description": "Sets a tick label prefix.",
                  "type": "string"
                },
                "ticks": {
                  "description": "Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "outside",
                        "inside",
                        ""
                      ],
                      "default": ""
                    }
                  ]
                },
                "ticksuffix": {
                  "default": "",
                  "description": "Sets a tick label suffix.",
                  "type": "string"
                },
                "ticktext": {
                  "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "string"
                          }
                        ]
                      }
                    }
                  ]
                },
                "ticktextsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.",
                  "type": "string"
                },
                "tickvals": {
                  "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "string"
                          }
                        ]
                      }
                    }
                  ]
                },
                "tickvalssrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.",
                  "type": "string"
                },
                "tickwidth": {
                  "description": "Sets the tick width (in px).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "title": {
                  "type": "object",
                  "properties": {
                    "font": {
                      "type": "object",
                      "properties": {
                        "color": {
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "$ref": "#/$defs/color"
                            }
                          ]
                        },
                        "family": {
                          "pattern": ".*\\S.*$",
                          "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                          "type": "string"
                        },
                        "lineposition": {
                          "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "oneOf": [
                                {
                                  "type": "string",
                                  "enum": [
                                    "none"
                                  ]
                                },
                                {
                                  "type": "string",
                                  "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                                }
                              ],
                              "default": "none"
                            }
                          ]
                        },
                        "shadow": {
                          "default": "none",
                          "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                          "type": "string"
                        },
                        "size": {
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "type": "number",
                              "minimum": 1
                            }
                          ]
                        },
                        "style": {
                          "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "italic"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "textcase": {
                          "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "word caps",
                                "upper",
                                "lower"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "variant": {
                          "description": "Sets the variant of the font.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "small-caps",
                                "all-small-caps",
                                "all-petite-caps",
                                "petite-caps",
                                "unicase"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "weight": {
                          "description": "Sets the weight (or boldness) of the font.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "type": "integer",
                              "minimum": 1,
                              "maximum": 1000,
                              "default": "normal"
                            }
                          ]
                        }
                      },
                      "additionalProperties": false
                    },
                    "side": {
                      "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and  defaults to *right* when `orientation` if *h*.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "right",
                            "top",
                            "bottom"
                          ]
                        }
                      ]
                    },
                    "text": {
                      "description": "Sets the title of the color bar.",
                      "type": "string"
                    }
                  },
                  "additionalProperties": false
                },
                "x": {
                  "description": "Sets the x position with respect to `xref` of the color bar (in plot fraction). When `xref` is *paper*, defaults to 1.02 when `orientation` is *v* and 0.5 when `orientation` is *h*. When `xref` is *container*, defaults to *1* when `orientation` is *v* and 0.5 when `orientation` is *h*. Must be between *0* and *1* if `xref` is *container* and between *-2* and *3* if `xref` is *paper*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number"
                    }
                  ]
                },
                "xanchor": {
                  "description": "Sets this color bar's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the color bar. Defaults to *left* when `orientation` is *v* and *center* when `orientation` is *h*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "left",
                        "center",
                        "right"
                      ]
                    }
                  ]
                },
                "xpad": {
                  "description": "Sets the amount of padding (in px) along the x direction.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 10
                    }
                  ]
                },
                "xref": {
                  "description": "Sets the container `x` refers to. *container* spans the entire `width` of the plot. *paper* refers to the width of the plotting area only.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "container",
                        "paper"
                      ],
                      "default": "paper"
                    }
                  ]
                },
                "y": {
                  "description": "Sets the y position with respect to `yref` of the color bar (in plot fraction). When `yref` is *paper*, defaults to 0.5 when `orientation` is *v* and 1.02 when `orientation` is *h*. When `yref` is *container*, defaults to 0.5 when `orientation` is *v* and 1 when `orientation` is *h*. Must be between *0* and *1* if `yref` is *container* and between *-2* and *3* if `yref` is *paper*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number"
                    }
                  ]
                },
                "yanchor": {
                  "description": "Sets this color bar's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the color bar. Defaults to *middle* when `orientation` is *v* and *bottom* when `orientation` is *h*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "top",
                        "middle",
                        "bottom"
                      ]
                    }
                  ]
                },
                "ypad": {
                  "description": "Sets the amount of padding (in px) along the y direction.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 10
                    }
                  ]
                },
                "yref": {
                  "description": "Sets the container `y` refers to. *container* spans the entire `height` of the plot. *paper* refers to the height of the plotting area only.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "container",
                        "paper"
                      ],
                      "default": "paper"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "colorscale": {
              "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/colorscale",
                  "default": null
                }
              ]
            },
            "colorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `color`.",
              "type": "string"
            },
            "gradient": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the final color of the gradient fill: the center color for radial, the right for horizontal, or the bottom for vertical.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "colorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `color`.",
                  "type": "string"
                },
                "type": {
                  "description": "Sets the type of gradient used to fill the markers",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "radial",
                            "horizontal",
                            "vertical",
                            "none"
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "radial",
                              "horizontal",
                              "vertical",
                              "none"
                            ],
                            "default": "none"
                          }
                        ]
                      }
                    }
                  ]
                },
                "typesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `type`.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "line": {
              "type": "object",
              "properties": {
                "autocolorscale": {
                  "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.line.colorscale`. Has an effect only if in `marker.line.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                },
                "cauto": {
                  "description": "Determines whether or not the color domain is computed with respect to the input data (here in `marker.line.color`) or the bounds set in `marker.line.cmin` and `marker.line.cmax` Has an effect only if in `marker.line.color` is set to a numerical array. Defaults to `false` when `marker.line.cmin` and `marker.line.cmax` are set by the user.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                },
                "cmax": {
                  "description": "Sets the upper bound of the color domain. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color` and if set, `marker.line.cmin` must be set as well.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "default": null
                    }
                  ]
                },
                "cmid": {
                  "description": "Sets the mid-point of the color domain by scaling `marker.line.cmin` and/or `marker.line.cmax` to be equidistant to this point. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color`. Has no effect when `marker.line.cauto` is `false`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "default": null
                    }
                  ]
                },
                "cmin": {
                  "description": "Sets the lower bound of the color domain. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color` and if set, `marker.line.cmax` must be set as well.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "default": null
                    }
                  ]
                },
                "color": {
                  "description": "Sets the marker.line color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.line.cmin` and `marker.line.cmax` if set.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "coloraxis": {
                  "description": "Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "string",
                      "default": null,
                      "pattern": "/^coloraxis([2-9]|[1-9][0-9]+)?$/"
                    }
                  ]
                },
                "colorscale": {
                  "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/colorscale",
                      "default": null
                    }
                  ]
                },
                "colorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `color`.",
                  "type": "string"
                },
                "reversescale": {
                  "description": "Reverses the color mapping if true. Has an effect only if in `marker.line.color` is set to a numerical array. If true, `marker.line.cmin` will correspond to the last color in the array and `marker.line.cmax` will correspond to the first color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": false
                    }
                  ]
                },
                "width": {
                  "description": "Sets the width (in px) of the lines bounding the marker points.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 0
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 0
                          }
                        ]
                      }
                    }
                  ]
                },
                "widthsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `width`.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "maxdisplayed": {
              "description": "Sets a maximum number of points to be drawn on the graph. *0* corresponds to no limit.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "opacity": {
              "description": "Sets the marker opacity.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 1
                      }
                    ]
                  }
                }
              ]
            },
            "opacitysrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `opacity`.",
              "type": "string"
            },
            "reversescale": {
              "description": "Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            },
            "showscale": {
              "description": "Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            },
            "size": {
              "description": "Sets the marker size (in px).",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 6
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 0,
                        "default": 6
                      }
                    ]
                  }
                }
              ]
            },
            "sizemin": {
              "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the minimum size (in px) of the rendered marker points.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "sizemode": {
              "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the rule for which the data in `size` is converted to pixels.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "diameter",
                    "area"
                  ],
                  "default": "diameter"
                }
              ]
            },
            "sizeref": {
              "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the scale factor used to determine the rendered size of marker points. Use with `sizemin` and `sizemode`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": 1
                }
              ]
            },
            "sizesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `size`.",
              "type": "string"
            },
            "standoff": {
              "description": "Moves the marker away from the data point in the direction of `angle` (in px). This can be useful for example if you have another marker at this location and you want to point an arrowhead marker at it.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 0
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 0,
                        "default": 0
                      }
                    ]
                  }
                }
              ]
            },
            "standoffsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `standoff`.",
              "type": "string"
            },
            "symbol": {
              "description": "Sets the marker symbol type. Adding 100 is equivalent to appending *-open* to a symbol name. Adding 200 is equivalent to appending *-dot* to a symbol name. Adding 300 is equivalent to appending *-open-dot* or *dot-open* to a symbol name.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        0,
                        "0",
                        "circle",
                        100,
                        "100",
                        "circle-open",
                        200,
                        "200",
                        "circle-dot",
                        300,
                        "300",
                        "circle-open-dot",
                        1,
                        "1",
                        "square",
                        101,
                        "101",
                        "square-open",
                        201,
                        "201",
                        "square-dot",
                        301,
                        "301",
                        "square-open-dot",
                        2,
                        "2",
                        "diamond",
                        102,
                        "102",
                        "diamond-open",
                        202,
                        "202",
                        "diamond-dot",
                        302,
                        "302",
                        "diamond-open-dot",
                        3,
                        "3",
                        "cross",
                        103,
                        "103",
                        "cross-open",
                        203,
                        "203",
                        "cross-dot",
                        303,
                        "303",
                        "cross-open-dot",
                        4,
                        "4",
                        "x",
                        104,
                        "104",
                        "x-open",
                        204,
                        "204",
                        "x-dot",
                        304,
                        "304",
                        "x-open-dot",
                        5,
                        "5",
                        "triangle-up",
                        105,
                        "105",
                        "triangle-up-open",
                        205,
                        "205",
                        "triangle-up-dot",
                        305,
                        "305",
                        "triangle-up-open-dot",
                        6,
                        "6",
                        "triangle-down",
                        106,
                        "106",
                        "triangle-down-open",
                        206,
                        "206",
                        "triangle-down-dot",
                        306,
                        "306",
                        "triangle-down-open-dot",
                        7,
                        "7",
                        "triangle-left",
                        107,
                        "107",
                        "triangle-left-open",
                        207,
                        "207",
                        "triangle-left-dot",
                        307,
                        "307",
                        "triangle-left-open-dot",
                        8,
                        "8",
                        "triangle-right",
                        108,
                        "108",
                        "triangle-right-open",
                        208,
                        "208",
                        "triangle-right-dot",
                        308,
                        "308",
                        "triangle-right-open-dot",
                        9,
                        "9",
                        "triangle-ne",
                        109,
                        "109",
                        "triangle-ne-open",
                        209,
                        "209",
                        "triangle-ne-dot",
                        309,
                        "309",
                        "triangle-ne-open-dot",
                        10,
                        "10",
                        "triangle-se",
                        110,
                        "110",
                        "triangle-se-open",
                        210,
                        "210",
                        "triangle-se-dot",
                        310,
                        "310",
                        "triangle-se-open-dot",
                        11,
                        "11",
                        "triangle-sw",
                        111,
                        "111",
                        "triangle-sw-open",
                        211,
                        "211",
                        "triangle-sw-dot",
                        311,
                        "311",
                        "triangle-sw-open-dot",
                        12,
                        "12",
                        "triangle-nw",
                        112,
                        "112",
                        "triangle-nw-open",
                        212,
                        "212",
                        "triangle-nw-dot",
                        312,
                        "312",
                        "triangle-nw-open-dot",
                        13,
                        "13",
                        "pentagon",
                        113,
                        "113",
                        "pentagon-open",
                        213,
                        "213",
                        "pentagon-dot",
                        313,
                        "313",
                        "pentagon-open-dot",
                        14,
                        "14",
                        "hexagon",
                        114,
                        "114",
                        "hexagon-open",
                        214,
                        "214",
                        "hexagon-dot",
                        314,
                        "314",
                        "hexagon-open-dot",
                        15,
                        "15",
                        "hexagon2",
                        115,
                        "115",
                        "hexagon2-open",
                        215,
                        "215",
                        "hexagon2-dot",
                        315,
                        "315",
                        "hexagon2-open-dot",
                        16,
                        "16",
                        "octagon",
                        116,
                        "116",
                        "octagon-open",
                        216,
                        "216",
                        "octagon-dot",
                        316,
                        "316",
                        "octagon-open-dot",
                        17,
                        "17",
                        "star",
                        117,
                        "117",
                        "star-open",
                        217,
                        "217",
                        "star-dot",
                        317,
                        "317",
                        "star-open-dot",
                        18,
                        "18",
                        "hexagram",
                        118,
                        "118",
                        "hexagram-open",
                        218,
                        "218",
                        "hexagram-dot",
                        318,
                        "318",
                        "hexagram-open-dot",
                        19,
                        "19",
                        "star-triangle-up",
                        119,
                        "119",
                        "star-triangle-up-open",
                        219,
                        "219",
                        "star-triangle-up-dot",
                        319,
                        "319",
                        "star-triangle-up-open-dot",
                        20,
                        "20",
                        "star-triangle-down",
                        120,
                        "120",
                        "star-triangle-down-open",
                        220,
                        "220",
                        "star-triangle-down-dot",
                        320,
                        "320",
                        "star-triangle-down-open-dot",
                        21,
                        "21",
                        "star-square",
                        121,
                        "121",
                        "star-square-open",
                        221,
                        "221",
                        "star-square-dot",
                        321,
                        "321",
                        "star-square-open-dot",
                        22,
                        "22",
                        "star-diamond",
                        122,
                        "122",
                        "star-diamond-open",
                        222,
                        "222",
                        "star-diamond-dot",
                        322,
                        "322",
                        "star-diamond-open-dot",
                        23,
                        "23",
                        "diamond-tall",
                        123,
                        "123",
                        "diamond-tall-open",
                        223,
                        "223",
                        "diamond-tall-dot",
                        323,
                        "323",
                        "diamond-tall-open-dot",
                        24,
                        "24",
                        "diamond-wide",
                        124,
                        "124",
                        "diamond-wide-open",
                        224,
                        "224",
                        "diamond-wide-dot",
                        324,
                        "324",
                        "diamond-wide-open-dot",
                        25,
                        "25",
                        "hourglass",
                        125,
                        "125",
                        "hourglass-open",
                        26,
                        "26",
                        "bowtie",
                        126,
                        "126",
                        "bowtie-open",
                        27,
                        "27",
                        "circle-cross",
                        127,
                        "127",
                        "circle-cross-open",
                        28,
                        "28",
                        "circle-x",
                        128,
                        "128",
                        "circle-x-open",
                        29,
                        "29",
                        "square-cross",
                        129,
                        "129",
                        "square-cross-open",
                        30,
                        "30",
                        "square-x",
                        130,
                        "130",
                        "square-x-open",
                        31,
                        "31",
                        "diamond-cross",
                        131,
                        "131",
                        "diamond-cross-open",
                        32,
                        "32",
                        "diamond-x",
                        132,
                        "132",
                        "diamond-x-open",
                        33,
                        "33",
                        "cross-thin",
                        133,
                        "133",
                        "cross-thin-open",
                        34,
                        "34",
                        "x-thin",
                        134,
                        "134",
                        "x-thin-open",
                        35,
                        "35",
                        "asterisk",
                        135,
                        "135",
                        "asterisk-open",
                        36,
                        "36",
                        "hash",
                        136,
                        "136",
                        "hash-open",
                        236,
                        "236",
                        "hash-dot",
                        336,
                        "336",
                        "hash-open-dot",
                        37,
                        "37",
                        "y-up",
                        137,
                        "137",
                        "y-up-open",
                        38,
                        "38",
                        "y-down",
                        138,
                        "138",
                        "y-down-open",
                        39,
                        "39",
                        "y-left",
                        139,
                        "139",
                        "y-left-open",
                        40,
                        "40",
                        "y-right",
                        140,
                        "140",
                        "y-right-open",
                        41,
                        "41",
                        "line-ew",
                        141,
                        "141",
                        "line-ew-open",
                        42,
                        "42",
                        "line-ns",
                        142,
                        "142",
                        "line-ns-open",
                        43,
                        "43",
                        "line-ne",
                        143,
                        "143",
                        "line-ne-open",
                        44,
                        "44",
                        "line-nw",
                        144,
                        "144",
                        "line-nw-open",
                        45,
                        "45",
                        "arrow-up",
                        145,
                        "145",
                        "arrow-up-open",
                        46,
                        "46",
                        "arrow-down",
                        146,
                        "146",
                        "arrow-down-open",
                        47,
                        "47",
                        "arrow-left",
                        147,
                        "147",
                        "arrow-left-open",
                        48,
                        "48",
                        "arrow-right",
                        148,
                        "148",
                        "arrow-right-open",
                        49,
                        "49",
                        "arrow-bar-up",
                        149,
                        "149",
                        "arrow-bar-up-open",
                        50,
                        "50",
                        "arrow-bar-down",
                        150,
                        "150",
                        "arrow-bar-down-open",
                        51,
                        "51",
                        "arrow-bar-left",
                        151,
                        "151",
                        "arrow-bar-left-open",
                        52,
                        "52",
                        "arrow-bar-right",
                        152,
                        "152",
                        "arrow-bar-right-open",
                        53,
                        "53",
                        "arrow",
                        153,
                        "153",
                        "arrow-open",
                        54,
                        "54",
                        "arrow-wide",
                        154,
                        "154",
                        "arrow-wide-open"
                      ],
                      "default": "circle"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          0,
                          "0",
                          "circle",
                          100,
                          "100",
                          "circle-open",
                          200,
                          "200",
                          "circle-dot",
                          300,
                          "300",
                          "circle-open-dot",
                          1,
                          "1",
                          "square",
                          101,
                          "101",
                          "square-open",
                          201,
                          "201",
                          "square-dot",
                          301,
                          "301",
                          "square-open-dot",
                          2,
                          "2",
                          "diamond",
                          102,
                          "102",
                          "diamond-open",
                          202,
                          "202",
                          "diamond-dot",
                          302,
                          "302",
                          "diamond-open-dot",
                          3,
                          "3",
                          "cross",
                          103,
                          "103",
                          "cross-open",
                          203,
                          "203",
                          "cross-dot",
                          303,
                          "303",
                          "cross-open-dot",
                          4,
                          "4",
                          "x",
                          104,
                          "104",
                          "x-open",
                          204,
                          "204",
                          "x-dot",
                          304,
                          "304",
                          "x-open-dot",
                          5,
                          "5",
                          "triangle-up",
                          105,
                          "105",
                          "triangle-up-open",
                          205,
                          "205",
                          "triangle-up-dot",
                          305,
                          "305",
                          "triangle-up-open-dot",
                          6,
                          "6",
                          "triangle-down",
                          106,
                          "106",
                          "triangle-down-open",
                          206,
                          "206",
                          "triangle-down-dot",
                          306,
                          "306",
                          "triangle-down-open-dot",
                          7,
                          "7",
                          "triangle-left",
                          107,
                          "107",
                          "triangle-left-open",
                          207,
                          "207",
                          "triangle-left-dot",
                          307,
                          "307",
                          "triangle-left-open-dot",
                          8,
                          "8",
                          "triangle-right",
                          108,
                          "108",
                          "triangle-right-open",
                          208,
                          "208",
                          "triangle-right-dot",
                          308,
                          "308",
                          "triangle-right-open-dot",
                          9,
                          "9",
                          "triangle-ne",
                          109,
                          "109",
                          "triangle-ne-open",
                          209,
                          "209",
                          "triangle-ne-dot",
                          309,
                          "309",
                          "triangle-ne-open-dot",
                          10,
                          "10",
                          "triangle-se",
                          110,
                          "110",
                          "triangle-se-open",
                          210,
                          "210",
                          "triangle-se-dot",
                          310,
                          "310",
                          "triangle-se-open-dot",
                          11,
                          "11",
                          "triangle-sw",
                          111,
                          "111",
                          "triangle-sw-open",
                          211,
                          "211",
                          "triangle-sw-dot",
                          311,
                          "311",
                          "triangle-sw-open-dot",
                          12,
                          "12",
                          "triangle-nw",
                          112,
                          "112",
                          "triangle-nw-open",
                          212,
                          "212",
                          "triangle-nw-dot",
                          312,
                          "312",
                          "triangle-nw-open-dot",
                          13,
                          "13",
                          "pentagon",
                          113,
                          "113",
                          "pentagon-open",
                          213,
                          "213",
                          "pentagon-dot",
                          313,
                          "313",
                          "pentagon-open-dot",
                          14,
                          "14",
                          "hexagon",
                          114,
                          "114",
                          "hexagon-open",
                          214,
                          "214",
                          "hexagon-dot",
                          314,
                          "314",
                          "hexagon-open-dot",
                          15,
                          "15",
                          "hexagon2",
                          115,
                          "115",
                          "hexagon2-open",
                          215,
                          "215",
                          "hexagon2-dot",
                          315,
                          "315",
                          "hexagon2-open-dot",
                          16,
                          "16",
                          "octagon",
                          116,
                          "116",
                          "octagon-open",
                          216,
                          "216",
                          "octagon-dot",
                          316,
                          "316",
                          "octagon-open-dot",
                          17,
                          "17",
                          "star",
                          117,
                          "117",
                          "star-open",
                          217,
                          "217",
                          "star-dot",
                          317,
                          "317",
                          "star-open-dot",
                          18,
                          "18",
                          "hexagram",
                          118,
                          "118",
                          "hexagram-open",
                          218,
                          "218",
                          "hexagram-dot",
                          318,
                          "318",
                          "hexagram-open-dot",
                          19,
                          "19",
                          "star-triangle-up",
                          119,
                          "119",
                          "star-triangle-up-open",
                          219,
                          "219",
                          "star-triangle-up-dot",
                          319,
                          "319",
                          "star-triangle-up-open-dot",
                          20,
                          "20",
                          "star-triangle-down",
                          120,
                          "120",
                          "star-triangle-down-open",
                          220,
                          "220",
                          "star-triangle-down-dot",
                          320,
                          "320",
                          "star-triangle-down-open-dot",
                          21,
                          "21",
                          "star-square",
                          121,
                          "121",
                          "star-square-open",
                          221,
                          "221",
                          "star-square-dot",
                          321,
                          "321",
                          "star-square-open-dot",
                          22,
                          "22",
                          "star-diamond",
                          122,
                          "122",
                          "star-diamond-open",
                          222,
                          "222",
                          "star-diamond-dot",
                          322,
                          "322",
                          "star-diamond-open-dot",
                          23,
                          "23",
                          "diamond-tall",
                          123,
                          "123",
                          "diamond-tall-open",
                          223,
                          "223",
                          "diamond-tall-dot",
                          323,
                          "323",
                          "diamond-tall-open-dot",
                          24,
                          "24",
                          "diamond-wide",
                          124,
                          "124",
                          "diamond-wide-open",
                          224,
                          "224",
                          "diamond-wide-dot",
                          324,
                          "324",
                          "diamond-wide-open-dot",
                          25,
                          "25",
                          "hourglass",
                          125,
                          "125",
                          "hourglass-open",
                          26,
                          "26",
                          "bowtie",
                          126,
                          "126",
                          "bowtie-open",
                          27,
                          "27",
                          "circle-cross",
                          127,
                          "127",
                          "circle-cross-open",
                          28,
                          "28",
                          "circle-x",
                          128,
                          "128",
                          "circle-x-open",
                          29,
                          "29",
                          "square-cross",
                          129,
                          "129",
                          "square-cross-open",
                          30,
                          "30",
                          "square-x",
                          130,
                          "130",
                          "square-x-open",
                          31,
                          "31",
                          "diamond-cross",
                          131,
                          "131",
                          "diamond-cross-open",
                          32,
                          "32",
                          "diamond-x",
                          132,
                          "132",
                          "diamond-x-open",
                          33,
                          "33",
                          "cross-thin",
                          133,
                          "133",
                          "cross-thin-open",
                          34,
                          "34",
                          "x-thin",
                          134,
                          "134",
                          "x-thin-open",
                          35,
                          "35",
                          "asterisk",
                          135,
                          "135",
                          "asterisk-open",
                          36,
                          "36",
                          "hash",
                          136,
                          "136",
                          "hash-open",
                          236,
                          "236",
                          "hash-dot",
                          336,
                          "336",
                          "hash-open-dot",
                          37,
                          "37",
                          "y-up",
                          137,
                          "137",
                          "y-up-open",
                          38,
                          "38",
                          "y-down",
                          138,
                          "138",
                          "y-down-open",
                          39,
                          "39",
                          "y-left",
                          139,
                          "139",
                          "y-left-open",
                          40,
                          "40",
                          "y-right",
                          140,
                          "140",
                          "y-right-open",
                          41,
                          "41",
                          "line-ew",
                          141,
                          "141",
                          "line-ew-open",
                          42,
                          "42",
                          "line-ns",
                          142,
                          "142",
                          "line-ns-open",
                          43,
                          "43",
                          "line-ne",
                          143,
                          "143",
                          "line-ne-open",
                          44,
                          "44",
                          "line-nw",
                          144,
                          "144",
                          "line-nw-open",
                          45,
                          "45",
                          "arrow-up",
                          145,
                          "145",
                          "arrow-up-open",
                          46,
                          "46",
                          "arrow-down",
                          146,
                          "146",
                          "arrow-down-open",
                          47,
                          "47",
                          "arrow-left",
                          147,
                          "147",
                          "arrow-left-open",
                          48,
                          "48",
                          "arrow-right",
                          148,
                          "148",
                          "arrow-right-open",
                          49,
                          "49",
                          "arrow-bar-up",
                          149,
                          "149",
                          "arrow-bar-up-open",
                          50,
                          "50",
                          "arrow-bar-down",
                          150,
                          "150",
                          "arrow-bar-down-open",
                          51,
                          "51",
                          "arrow-bar-left",
                          151,
                          "151",
                          "arrow-bar-left-open",
                          52,
                          "52",
                          "arrow-bar-right",
                          152,
                          "152",
                          "arrow-bar-right-open",
                          53,
                          "53",
                          "arrow",
                          153,
                          "153",
                          "arrow-open",
                          54,
                          "54",
                          "arrow-wide",
                          154,
                          "154",
                          "arrow-wide-open"
                        ],
                        "default": "circle"
                      }
                    ]
                  }
                }
              ]
            },
            "symbolsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `symbol`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "metasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `meta`.",
          "type": "string"
        },
        "mode": {
          "description": "Determines the drawing mode for this scatter trace. If the provided `mode` includes *text* then the `text` elements appear at the coordinates. Otherwise, the `text` elements appear on hover. If there are less than 20 points and the trace is not stacked then the default is *lines+markers*. Otherwise, *lines*.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "oneOf": [
                {
                  "type": "string",
                  "enum": [
                    "none"
                  ]
                },
                {
                  "type": "string",
                  "pattern": "^(lines|markers|text)(\\+(lines|markers|text))*$"
                }
              ],
              "default": "markers"
            }
          ]
        },
        "name": {
          "description": "Sets the trace name. The trace name appears as the legend item and on hover.",
          "type": "string"
        },
        "opacity": {
          "description": "Sets the opacity of the trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0,
              "maximum": 1,
              "default": 1
            }
          ]
        },
        "selected": {
          "type": "object",
          "properties": {
            "marker": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the marker color of selected points.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "opacity": {
                  "description": "Sets the marker opacity of selected points.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1
                    }
                  ]
                },
                "size": {
                  "description": "Sets the marker size of selected points.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "textfont": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the text font color of selected points.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                }
              },
              "additionalProperties": false
            }
          },
          "additionalProperties": false
        },
        "selectedpoints": {
          "description": "Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect."
        },
        "showlegend": {
          "description": "Determines whether or not an item corresponding to this trace is shown in the legend.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "stream": {
          "type": "object",
          "properties": {
            "maxpoints": {
              "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 10000,
                  "default": 500
                }
              ]
            },
            "token": {
              "pattern": ".*\\S.*$",
              "description": "The stream id number links a data trace on a plot with a stream. See <https://chart-studio.plotly.com/settings> for more details.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "subplot": {
          "description": "Sets a reference between this trace's data coordinates and a ternary subplot. If *ternary* (the default value), the data refer to `layout.ternary`. If *ternary2*, the data refer to `layout.ternary2`, and so on.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "ternary",
              "pattern": "^ternary([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "sum": {
          "description": "The number each triplet should sum to, if only two of `a`, `b`, and `c` are provided. This overrides `ternary<i>.sum` to normalize this specific trace, but does not affect the values displayed on the axes. 0 (or missing) means to use ternary<i>.sum",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0,
              "default": 0
            }
          ]
        },
        "text": {
          "description": "Sets text elements associated with each (a,b,c) point. If a single string, the same string appears over all the data points. If an array of strings, the items are mapped in order to the the data points in (a,b,c). If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "textfont": {
          "type": "object",
          "properties": {
            "color": {
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "colorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `color`.",
              "type": "string"
            },
            "family": {
              "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
              "oneOf": [
                {
                  "pattern": ".*\\S.*$",
                  "type": "string"
                },
                {
                  "type": "array",
                  "items": {
                    "pattern": ".*\\S.*$",
                    "type": "string"
                  }
                },
                {
                  "$ref": "#/$defs/query-string"
                }
              ]
            },
            "familysrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `family`.",
              "type": "string"
            },
            "lineposition": {
              "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "oneOf": [
                          {
                            "type": "string",
                            "enum": [
                              "none"
                            ]
                          },
                          {
                            "type": "string",
                            "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                          }
                        ],
                        "default": "none"
                      }
                    ]
                  }
                }
              ]
            },
            "linepositionsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.",
              "type": "string"
            },
            "shadow": {
              "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
              "oneOf": [
                {
                  "default": "none",
                  "type": "string"
                },
                {
                  "type": "array",
                  "items": {
                    "default": "none",
                    "type": "string"
                  }
                }
              ]
            },
            "shadowsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `shadow`.",
              "type": "string"
            },
            "size": {
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 1
                      }
                    ]
                  }
                }
              ]
            },
            "sizesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `size`.",
              "type": "string"
            },
            "style": {
              "description": "Sets whether a font should be styled with a normal or italic face from its family.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "italic"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "stylesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `style`.",
              "type": "string"
            },
            "textcase": {
              "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "word caps",
                          "upper",
                          "lower"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "textcasesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `textcase`.",
              "type": "string"
            },
            "variant": {
              "description": "Sets the variant of the font.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "small-caps",
                          "all-small-caps",
                          "all-petite-caps",
                          "petite-caps",
                          "unicase"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "variantsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `variant`.",
              "type": "string"
            },
            "weight": {
              "description": "Sets the weight (or boldness) of the font.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 1000,
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "weightsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `weight`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "textposition": {
          "description": "Sets the positions of the `text` elements with respects to the (x,y) coordinates.",
          "oneOf": [
            {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "top left",
                    "top center",
                    "top right",
                    "middle left",
                    "middle center",
                    "middle right",
                    "bottom left",
                    "bottom center",
                    "bottom right"
                  ],
                  "default": "middle center"
                }
              ]
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "enum": [
                      "top left",
                      "top center",
                      "top right",
                      "middle left",
                      "middle center",
                      "middle right",
                      "bottom left",
                      "bottom center",
                      "bottom right"
                    ],
                    "default": "middle center"
                  }
                ]
              }
            }
          ]
        },
        "textpositionsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `textposition`.",
          "type": "string"
        },
        "textsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `text`.",
          "type": "string"
        },
        "texttemplate": {
          "description": "Template string used for rendering the information text that appear on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". <https://github.com/d3/d3-format/tree/v1.4.5#d3-format> for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format> for details on the date formatting syntax. Every attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `a`, `b`, `c` and `text`.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "texttemplatesrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.",
          "type": "string"
        },
        "uid": {
          "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.",
          "type": "string"
        },
        "uirevision": {
          "description": "Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves."
        },
        "unselected": {
          "type": "object",
          "properties": {
            "marker": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the marker color of unselected points, applied only when a selection exists.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "opacity": {
                  "description": "Sets the marker opacity of unselected points, applied only when a selection exists.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1
                    }
                  ]
                },
                "size": {
                  "description": "Sets the marker size of unselected points, applied only when a selection exists.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "textfont": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the text font color of unselected points, applied only when a selection exists.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                }
              },
              "additionalProperties": false
            }
          },
          "additionalProperties": false
        },
        "visible": {
          "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                true,
                false,
                "legendonly"
              ],
              "default": true
            }
          ]
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false
    },
    "Splom": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "$id": "https://visivo.io/trace-properties/schema",
      "description": "A schema to validate plotly trace properties",
      "type": "object",
      "properties": {
        "type": {
          "const": "splom"
        },
        "customdata": {
          "description": "Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "customdatasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `customdata`.",
          "type": "string"
        },
        "diagonal": {
          "type": "object",
          "properties": {
            "visible": {
              "description": "Determines whether or not subplots on the diagonal are displayed.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": true
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "dimensions": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "axis": {
                "type": "object",
                "properties": {
                  "matches": {
                    "description": "Determines whether or not the x & y axes generated by this dimension match. Equivalent to setting the `matches` axis attribute in the layout with the correct axis id.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "boolean",
                        "default": false
                      }
                    ]
                  },
                  "type": {
                    "description": "Sets the axis type for this dimension's generated x and y axes. Note that the axis `type` values set in layout take precedence over this attribute.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "linear",
                          "log",
                          "date",
                          "category"
                        ]
                      }
                    ]
                  }
                },
                "additionalProperties": false
              },
              "label": {
                "description": "Sets the label corresponding to this splom dimension.",
                "type": "string"
              },
              "name": {
                "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.",
                "type": "string"
              },
              "templateitemname": {
                "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.",
                "type": "string"
              },
              "values": {
                "description": "Sets the dimension values to be plotted.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "array",
                    "items": {
                      "oneOf": [
                        {
                          "type": "number"
                        },
                        {
                          "type": "string"
                        }
                      ]
                    }
                  }
                ]
              },
              "valuessrc": {
                "description": "Sets the source reference on Chart Studio Cloud for `values`.",
                "type": "string"
              },
              "visible": {
                "description": "Determines whether or not this dimension is shown on the graph. Note that even visible false dimension contribute to the default grid generate by this splom trace.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "boolean",
                    "default": true
                  }
                ]
              }
            },
            "additionalProperties": false
          },
          "minItems": 1
        },
        "hoverinfo": {
          "description": "Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired.",
          "oneOf": [
            {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "oneOf": [
                    {
                      "type": "string",
                      "enum": [
                        "all",
                        "none",
                        "skip"
                      ]
                    },
                    {
                      "type": "string",
                      "pattern": "^(x|y|z|text|name)(\\+(x|y|z|text|name))*$"
                    }
                  ],
                  "default": "all"
                }
              ]
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "oneOf": [
                      {
                        "type": "string",
                        "enum": [
                          "all",
                          "none",
                          "skip"
                        ]
                      },
                      {
                        "type": "string",
                        "pattern": "^(x|y|z|text|name)(\\+(x|y|z|text|name))*$"
                      }
                    ],
                    "default": "all"
                  }
                ]
              }
            }
          ]
        },
        "hoverinfosrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.",
          "type": "string"
        },
        "hoverlabel": {
          "type": "object",
          "properties": {
            "align": {
              "description": "Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "left",
                        "right",
                        "auto"
                      ],
                      "default": "auto"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "left",
                          "right",
                          "auto"
                        ],
                        "default": "auto"
                      }
                    ]
                  }
                }
              ]
            },
            "alignsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `align`.",
              "type": "string"
            },
            "bgcolor": {
              "description": "Sets the background color of the hover labels for this trace",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "bgcolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.",
              "type": "string"
            },
            "bordercolor": {
              "description": "Sets the border color of the hover labels for this trace.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "bordercolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.",
              "type": "string"
            },
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "colorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `color`.",
                  "type": "string"
                },
                "family": {
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "oneOf": [
                    {
                      "pattern": ".*\\S.*$",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "pattern": ".*\\S.*$",
                        "type": "string"
                      }
                    },
                    {
                      "$ref": "#/$defs/query-string"
                    }
                  ]
                },
                "familysrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `family`.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "oneOf": [
                              {
                                "type": "string",
                                "enum": [
                                  "none"
                                ]
                              },
                              {
                                "type": "string",
                                "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                              }
                            ],
                            "default": "none"
                          }
                        ]
                      }
                    }
                  ]
                },
                "linepositionsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.",
                  "type": "string"
                },
                "shadow": {
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "oneOf": [
                    {
                      "default": "none",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "default": "none",
                        "type": "string"
                      }
                    }
                  ]
                },
                "shadowsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `shadow`.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 1
                          }
                        ]
                      }
                    }
                  ]
                },
                "sizesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `size`.",
                  "type": "string"
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "italic"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "stylesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `style`.",
                  "type": "string"
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "word caps",
                              "upper",
                              "lower"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "textcasesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `textcase`.",
                  "type": "string"
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "small-caps",
                              "all-small-caps",
                              "all-petite-caps",
                              "petite-caps",
                              "unicase"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "variantsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `variant`.",
                  "type": "string"
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 1000,
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "weightsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `weight`.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "namelength": {
              "description": "Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": -1,
                      "default": 15
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "integer",
                        "minimum": -1,
                        "default": 15
                      }
                    ]
                  }
                }
              ]
            },
            "namelengthsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `namelength`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "hovertemplate": {
          "description": "Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". <https://github.com/d3/d3-format/tree/v1.4.5#d3-format> for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format> for details on the date formatting syntax. The variables available in `hovertemplate` are the ones emitted as event data described at this link <https://plotly.com/javascript/plotlyjs-events/#event-data>. Additionally, every attributes that can be specified per-point (the ones that are `arrayOk: true`) are available.  Anything contained in tag `<extra>` is displayed in the secondary box, for example \"<extra>{fullData.name}</extra>\". To hide the secondary box completely, use an empty tag `<extra></extra>`.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "hovertemplatesrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.",
          "type": "string"
        },
        "hovertext": {
          "description": "Same as `text`.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "hovertextsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.",
          "type": "string"
        },
        "ids": {
          "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "idssrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `ids`.",
          "type": "string"
        },
        "legend": {
          "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "legend",
              "pattern": "^legend([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "legendgroup": {
          "default": "",
          "description": "Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items.",
          "type": "string"
        },
        "legendgrouptitle": {
          "type": "object",
          "properties": {
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "family": {
                  "pattern": ".*\\S.*$",
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                "shadow": {
                  "default": "none",
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "text": {
              "default": "",
              "description": "Sets the title of the legend group.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "legendrank": {
          "description": "Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": 1000
            }
          ]
        },
        "legendwidth": {
          "description": "Sets the width (in px or fraction) of the legend for this trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0
            }
          ]
        },
        "marker": {
          "type": "object",
          "properties": {
            "angle": {
              "description": "Sets the marker angle in respect to `angleref`.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": -180,
                      "maximum": 180,
                      "default": 0
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": -180,
                        "maximum": 180,
                        "default": 0
                      }
                    ]
                  }
                }
              ]
            },
            "anglesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `angle`.",
              "type": "string"
            },
            "autocolorscale": {
              "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if in `marker.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": true
                }
              ]
            },
            "cauto": {
              "description": "Determines whether or not the color domain is computed with respect to the input data (here in `marker.color`) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if in `marker.color` is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": true
                }
              ]
            },
            "cmax": {
              "description": "Sets the upper bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmin` must be set as well.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": null
                }
              ]
            },
            "cmid": {
              "description": "Sets the mid-point of the color domain by scaling `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color`. Has no effect when `marker.cauto` is `false`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": null
                }
              ]
            },
            "cmin": {
              "description": "Sets the lower bound of the color domain. Has an effect only if in `marker.color` is set to a numerical array. Value should have the same units as in `marker.color` and if set, `marker.cmax` must be set as well.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": null
                }
              ]
            },
            "color": {
              "description": "Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.cmin` and `marker.cmax` if set.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "coloraxis": {
              "description": "Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "string",
                  "default": null,
                  "pattern": "/^coloraxis([2-9]|[1-9][0-9]+)?$/"
                }
              ]
            },
            "colorbar": {
              "type": "object",
              "properties": {
                "bgcolor": {
                  "description": "Sets the color of padded area.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "bordercolor": {
                  "description": "Sets the axis line color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "borderwidth": {
                  "description": "Sets the width (in px) or the border enclosing this color bar.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 0
                    }
                  ]
                },
                "dtick": {
                  "description": "Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L<f>*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M<n>* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48*"
                },
                "exponentformat": {
                  "description": "Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "none",
                        "e",
                        "E",
                        "power",
                        "SI",
                        "B"
                      ],
                      "default": "B"
                    }
                  ]
                },
                "labelalias": {
                  "default": false,
                  "description": "Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax."
                },
                "len": {
                  "description": "Sets the length of the color bar This measure excludes the padding of both ends. That is, the color bar length is this length minus the padding on both ends.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "lenmode": {
                  "description": "Determines whether this color bar's length (i.e. the measure in the color variation direction) is set in units of plot *fraction* or in *pixels. Use `len` to set the value.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "fraction",
                        "pixels"
                      ],
                      "default": "fraction"
                    }
                  ]
                },
                "minexponent": {
                  "description": "Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 3
                    }
                  ]
                },
                "nticks": {
                  "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 0,
                      "default": 0
                    }
                  ]
                },
                "orientation": {
                  "description": "Sets the orientation of the colorbar.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "h",
                        "v"
                      ],
                      "default": "v"
                    }
                  ]
                },
                "outlinecolor": {
                  "description": "Sets the axis line color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "outlinewidth": {
                  "description": "Sets the width (in px) of the axis line.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "separatethousands": {
                  "description": "If \"true\", even 4-digit integers are separated",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": false
                    }
                  ]
                },
                "showexponent": {
                  "description": "If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "showticklabels": {
                  "description": "Determines whether or not the tick labels are drawn.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                },
                "showtickprefix": {
                  "description": "If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "showticksuffix": {
                  "description": "Same as `showtickprefix` but for tick suffixes.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "thickness": {
                  "description": "Sets the thickness of the color bar This measure excludes the size of the padding, ticks and labels.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 30
                    }
                  ]
                },
                "thicknessmode": {
                  "description": "Determines whether this color bar's thickness (i.e. the measure in the constant color direction) is set in units of plot *fraction* or in *pixels*. Use `thickness` to set the value.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "fraction",
                        "pixels"
                      ],
                      "default": "pixels"
                    }
                  ]
                },
                "tick0": {
                  "description": "Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L<f>* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears."
                },
                "tickangle": {
                  "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": -180,
                      "maximum": 180,
                      "default": "auto"
                    }
                  ]
                },
                "tickcolor": {
                  "description": "Sets the tick color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "tickfont": {
                  "type": "object",
                  "properties": {
                    "color": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    "family": {
                      "pattern": ".*\\S.*$",
                      "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                      "type": "string"
                    },
                    "lineposition": {
                      "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    "shadow": {
                      "default": "none",
                      "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                      "type": "string"
                    },
                    "size": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    "style": {
                      "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "textcase": {
                      "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "variant": {
                      "description": "Sets the variant of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "weight": {
                      "description": "Sets the weight (or boldness) of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    }
                  },
                  "additionalProperties": false
                },
                "tickformat": {
                  "default": "",
                  "description": "Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*",
                  "type": "string"
                },
                "tickformatstops": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "dtickrange": {
                        "description": "range [*min*, *max*], where *min*, *max* - dtick values which describe some zoom level, it is possible to omit *min* or *max* value by passing *null*",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "array",
                            "items": {},
                            "minItems": 2,
                            "maxItems": 2
                          }
                        ]
                      },
                      "enabled": {
                        "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "boolean",
                            "default": true
                          }
                        ]
                      },
                      "name": {
                        "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.",
                        "type": "string"
                      },
                      "templateitemname": {
                        "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.",
                        "type": "string"
                      },
                      "value": {
                        "default": "",
                        "description": "string - dtickformat for described zoom level, the same as *tickformat*",
                        "type": "string"
                      }
                    },
                    "additionalProperties": false
                  },
                  "minItems": 1
                },
                "ticklabeloverflow": {
                  "description": "Determines how we handle tick labels that would overflow either the graph div or the domain of the axis. The default value for inside tick labels is *hide past domain*. In other cases the default is *hide past div*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "allow",
                        "hide past div",
                        "hide past domain"
                      ]
                    }
                  ]
                },
                "ticklabelposition": {
                  "description": "Determines where tick labels are drawn relative to the ticks. Left and right options are used when `orientation` is *h*, top and bottom when `orientation` is *v*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "outside",
                        "inside",
                        "outside top",
                        "inside top",
                        "outside left",
                        "inside left",
                        "outside right",
                        "inside right",
                        "outside bottom",
                        "inside bottom"
                      ],
                      "default": "outside"
                    }
                  ]
                },
                "ticklabelstep": {
                  "description": "Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "default": 1
                    }
                  ]
                },
                "ticklen": {
                  "description": "Sets the tick length (in px).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 5
                    }
                  ]
                },
                "tickmode": {
                  "description": "Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "auto",
                        "linear",
                        "array"
                      ]
                    }
                  ]
                },
                "tickprefix": {
                  "default": "",
                  "description": "Sets a tick label prefix.",
                  "type": "string"
                },
                "ticks": {
                  "description": "Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "outside",
                        "inside",
                        ""
                      ],
                      "default": ""
                    }
                  ]
                },
                "ticksuffix": {
                  "default": "",
                  "description": "Sets a tick label suffix.",
                  "type": "string"
                },
                "ticktext": {
                  "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "string"
                          }
                        ]
                      }
                    }
                  ]
                },
                "ticktextsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.",
                  "type": "string"
                },
                "tickvals": {
                  "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "string"
                          }
                        ]
                      }
                    }
                  ]
                },
                "tickvalssrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.",
                  "type": "string"
                },
                "tickwidth": {
                  "description": "Sets the tick width (in px).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "title": {
                  "type": "object",
                  "properties": {
                    "font": {
                      "type": "object",
                      "properties": {
                        "color": {
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "$ref": "#/$defs/color"
                            }
                          ]
                        },
                        "family": {
                          "pattern": ".*\\S.*$",
                          "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                          "type": "string"
                        },
                        "lineposition": {
                          "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "oneOf": [
                                {
                                  "type": "string",
                                  "enum": [
                                    "none"
                                  ]
                                },
                                {
                                  "type": "string",
                                  "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                                }
                              ],
                              "default": "none"
                            }
                          ]
                        },
                        "shadow": {
                          "default": "none",
                          "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                          "type": "string"
                        },
                        "size": {
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "type": "number",
                              "minimum": 1
                            }
                          ]
                        },
                        "style": {
                          "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "italic"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "textcase": {
                          "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "word caps",
                                "upper",
                                "lower"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "variant": {
                          "description": "Sets the variant of the font.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "small-caps",
                                "all-small-caps",
                                "all-petite-caps",
                                "petite-caps",
                                "unicase"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "weight": {
                          "description": "Sets the weight (or boldness) of the font.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "type": "integer",
                              "minimum": 1,
                              "maximum": 1000,
                              "default": "normal"
                            }
                          ]
                        }
                      },
                      "additionalProperties": false
                    },
                    "side": {
                      "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and  defaults to *right* when `orientation` if *h*.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "right",
                            "top",
                            "bottom"
                          ]
                        }
                      ]
                    },
                    "text": {
                      "description": "Sets the title of the color bar.",
                      "type": "string"
                    }
                  },
                  "additionalProperties": false
                },
                "x": {
                  "description": "Sets the x position with respect to `xref` of the color bar (in plot fraction). When `xref` is *paper*, defaults to 1.02 when `orientation` is *v* and 0.5 when `orientation` is *h*. When `xref` is *container*, defaults to *1* when `orientation` is *v* and 0.5 when `orientation` is *h*. Must be between *0* and *1* if `xref` is *container* and between *-2* and *3* if `xref` is *paper*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number"
                    }
                  ]
                },
                "xanchor": {
                  "description": "Sets this color bar's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the color bar. Defaults to *left* when `orientation` is *v* and *center* when `orientation` is *h*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "left",
                        "center",
                        "right"
                      ]
                    }
                  ]
                },
                "xpad": {
                  "description": "Sets the amount of padding (in px) along the x direction.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 10
                    }
                  ]
                },
                "xref": {
                  "description": "Sets the container `x` refers to. *container* spans the entire `width` of the plot. *paper* refers to the width of the plotting area only.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "container",
                        "paper"
                      ],
                      "default": "paper"
                    }
                  ]
                },
                "y": {
                  "description": "Sets the y position with respect to `yref` of the color bar (in plot fraction). When `yref` is *paper*, defaults to 0.5 when `orientation` is *v* and 1.02 when `orientation` is *h*. When `yref` is *container*, defaults to 0.5 when `orientation` is *v* and 1 when `orientation` is *h*. Must be between *0* and *1* if `yref` is *container* and between *-2* and *3* if `yref` is *paper*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number"
                    }
                  ]
                },
                "yanchor": {
                  "description": "Sets this color bar's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the color bar. Defaults to *middle* when `orientation` is *v* and *bottom* when `orientation` is *h*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "top",
                        "middle",
                        "bottom"
                      ]
                    }
                  ]
                },
                "ypad": {
                  "description": "Sets the amount of padding (in px) along the y direction.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 10
                    }
                  ]
                },
                "yref": {
                  "description": "Sets the container `y` refers to. *container* spans the entire `height` of the plot. *paper* refers to the height of the plotting area only.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "container",
                        "paper"
                      ],
                      "default": "paper"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "colorscale": {
              "description": "Sets the colorscale. Has an effect only if in `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/colorscale",
                  "default": null
                }
              ]
            },
            "colorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `color`.",
              "type": "string"
            },
            "line": {
              "type": "object",
              "properties": {
                "autocolorscale": {
                  "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.line.colorscale`. Has an effect only if in `marker.line.color` is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                },
                "cauto": {
                  "description": "Determines whether or not the color domain is computed with respect to the input data (here in `marker.line.color`) or the bounds set in `marker.line.cmin` and `marker.line.cmax` Has an effect only if in `marker.line.color` is set to a numerical array. Defaults to `false` when `marker.line.cmin` and `marker.line.cmax` are set by the user.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                },
                "cmax": {
                  "description": "Sets the upper bound of the color domain. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color` and if set, `marker.line.cmin` must be set as well.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "default": null
                    }
                  ]
                },
                "cmid": {
                  "description": "Sets the mid-point of the color domain by scaling `marker.line.cmin` and/or `marker.line.cmax` to be equidistant to this point. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color`. Has no effect when `marker.line.cauto` is `false`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "default": null
                    }
                  ]
                },
                "cmin": {
                  "description": "Sets the lower bound of the color domain. Has an effect only if in `marker.line.color` is set to a numerical array. Value should have the same units as in `marker.line.color` and if set, `marker.line.cmax` must be set as well.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "default": null
                    }
                  ]
                },
                "color": {
                  "description": "Sets the marker.line color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.line.cmin` and `marker.line.cmax` if set.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "coloraxis": {
                  "description": "Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "string",
                      "default": null,
                      "pattern": "/^coloraxis([2-9]|[1-9][0-9]+)?$/"
                    }
                  ]
                },
                "colorscale": {
                  "description": "Sets the colorscale. Has an effect only if in `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/colorscale",
                      "default": null
                    }
                  ]
                },
                "colorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `color`.",
                  "type": "string"
                },
                "reversescale": {
                  "description": "Reverses the color mapping if true. Has an effect only if in `marker.line.color` is set to a numerical array. If true, `marker.line.cmin` will correspond to the last color in the array and `marker.line.cmax` will correspond to the first color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": false
                    }
                  ]
                },
                "width": {
                  "description": "Sets the width (in px) of the lines bounding the marker points.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 0
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 0
                          }
                        ]
                      }
                    }
                  ]
                },
                "widthsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `width`.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "opacity": {
              "description": "Sets the marker opacity.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 1
                      }
                    ]
                  }
                }
              ]
            },
            "opacitysrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `opacity`.",
              "type": "string"
            },
            "reversescale": {
              "description": "Reverses the color mapping if true. Has an effect only if in `marker.color` is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            },
            "showscale": {
              "description": "Determines whether or not a colorbar is displayed for this trace. Has an effect only if in `marker.color` is set to a numerical array.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            },
            "size": {
              "description": "Sets the marker size (in px).",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 6
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 0,
                        "default": 6
                      }
                    ]
                  }
                }
              ]
            },
            "sizemin": {
              "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the minimum size (in px) of the rendered marker points.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "sizemode": {
              "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the rule for which the data in `size` is converted to pixels.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "diameter",
                    "area"
                  ],
                  "default": "diameter"
                }
              ]
            },
            "sizeref": {
              "description": "Has an effect only if `marker.size` is set to a numerical array. Sets the scale factor used to determine the rendered size of marker points. Use with `sizemin` and `sizemode`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": 1
                }
              ]
            },
            "sizesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `size`.",
              "type": "string"
            },
            "symbol": {
              "description": "Sets the marker symbol type. Adding 100 is equivalent to appending *-open* to a symbol name. Adding 200 is equivalent to appending *-dot* to a symbol name. Adding 300 is equivalent to appending *-open-dot* or *dot-open* to a symbol name.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        0,
                        "0",
                        "circle",
                        100,
                        "100",
                        "circle-open",
                        200,
                        "200",
                        "circle-dot",
                        300,
                        "300",
                        "circle-open-dot",
                        1,
                        "1",
                        "square",
                        101,
                        "101",
                        "square-open",
                        201,
                        "201",
                        "square-dot",
                        301,
                        "301",
                        "square-open-dot",
                        2,
                        "2",
                        "diamond",
                        102,
                        "102",
                        "diamond-open",
                        202,
                        "202",
                        "diamond-dot",
                        302,
                        "302",
                        "diamond-open-dot",
                        3,
                        "3",
                        "cross",
                        103,
                        "103",
                        "cross-open",
                        203,
                        "203",
                        "cross-dot",
                        303,
                        "303",
                        "cross-open-dot",
                        4,
                        "4",
                        "x",
                        104,
                        "104",
                        "x-open",
                        204,
                        "204",
                        "x-dot",
                        304,
                        "304",
                        "x-open-dot",
                        5,
                        "5",
                        "triangle-up",
                        105,
                        "105",
                        "triangle-up-open",
                        205,
                        "205",
                        "triangle-up-dot",
                        305,
                        "305",
                        "triangle-up-open-dot",
                        6,
                        "6",
                        "triangle-down",
                        106,
                        "106",
                        "triangle-down-open",
                        206,
                        "206",
                        "triangle-down-dot",
                        306,
                        "306",
                        "triangle-down-open-dot",
                        7,
                        "7",
                        "triangle-left",
                        107,
                        "107",
                        "triangle-left-open",
                        207,
                        "207",
                        "triangle-left-dot",
                        307,
                        "307",
                        "triangle-left-open-dot",
                        8,
                        "8",
                        "triangle-right",
                        108,
                        "108",
                        "triangle-right-open",
                        208,
                        "208",
                        "triangle-right-dot",
                        308,
                        "308",
                        "triangle-right-open-dot",
                        9,
                        "9",
                        "triangle-ne",
                        109,
                        "109",
                        "triangle-ne-open",
                        209,
                        "209",
                        "triangle-ne-dot",
                        309,
                        "309",
                        "triangle-ne-open-dot",
                        10,
                        "10",
                        "triangle-se",
                        110,
                        "110",
                        "triangle-se-open",
                        210,
                        "210",
                        "triangle-se-dot",
                        310,
                        "310",
                        "triangle-se-open-dot",
                        11,
                        "11",
                        "triangle-sw",
                        111,
                        "111",
                        "triangle-sw-open",
                        211,
                        "211",
                        "triangle-sw-dot",
                        311,
                        "311",
                        "triangle-sw-open-dot",
                        12,
                        "12",
                        "triangle-nw",
                        112,
                        "112",
                        "triangle-nw-open",
                        212,
                        "212",
                        "triangle-nw-dot",
                        312,
                        "312",
                        "triangle-nw-open-dot",
                        13,
                        "13",
                        "pentagon",
                        113,
                        "113",
                        "pentagon-open",
                        213,
                        "213",
                        "pentagon-dot",
                        313,
                        "313",
                        "pentagon-open-dot",
                        14,
                        "14",
                        "hexagon",
                        114,
                        "114",
                        "hexagon-open",
                        214,
                        "214",
                        "hexagon-dot",
                        314,
                        "314",
                        "hexagon-open-dot",
                        15,
                        "15",
                        "hexagon2",
                        115,
                        "115",
                        "hexagon2-open",
                        215,
                        "215",
                        "hexagon2-dot",
                        315,
                        "315",
                        "hexagon2-open-dot",
                        16,
                        "16",
                        "octagon",
                        116,
                        "116",
                        "octagon-open",
                        216,
                        "216",
                        "octagon-dot",
                        316,
                        "316",
                        "octagon-open-dot",
                        17,
                        "17",
                        "star",
                        117,
                        "117",
                        "star-open",
                        217,
                        "217",
                        "star-dot",
                        317,
                        "317",
                        "star-open-dot",
                        18,
                        "18",
                        "hexagram",
                        118,
                        "118",
                        "hexagram-open",
                        218,
                        "218",
                        "hexagram-dot",
                        318,
                        "318",
                        "hexagram-open-dot",
                        19,
                        "19",
                        "star-triangle-up",
                        119,
                        "119",
                        "star-triangle-up-open",
                        219,
                        "219",
                        "star-triangle-up-dot",
                        319,
                        "319",
                        "star-triangle-up-open-dot",
                        20,
                        "20",
                        "star-triangle-down",
                        120,
                        "120",
                        "star-triangle-down-open",
                        220,
                        "220",
                        "star-triangle-down-dot",
                        320,
                        "320",
                        "star-triangle-down-open-dot",
                        21,
                        "21",
                        "star-square",
                        121,
                        "121",
                        "star-square-open",
                        221,
                        "221",
                        "star-square-dot",
                        321,
                        "321",
                        "star-square-open-dot",
                        22,
                        "22",
                        "star-diamond",
                        122,
                        "122",
                        "star-diamond-open",
                        222,
                        "222",
                        "star-diamond-dot",
                        322,
                        "322",
                        "star-diamond-open-dot",
                        23,
                        "23",
                        "diamond-tall",
                        123,
                        "123",
                        "diamond-tall-open",
                        223,
                        "223",
                        "diamond-tall-dot",
                        323,
                        "323",
                        "diamond-tall-open-dot",
                        24,
                        "24",
                        "diamond-wide",
                        124,
                        "124",
                        "diamond-wide-open",
                        224,
                        "224",
                        "diamond-wide-dot",
                        324,
                        "324",
                        "diamond-wide-open-dot",
                        25,
                        "25",
                        "hourglass",
                        125,
                        "125",
                        "hourglass-open",
                        26,
                        "26",
                        "bowtie",
                        126,
                        "126",
                        "bowtie-open",
                        27,
                        "27",
                        "circle-cross",
                        127,
                        "127",
                        "circle-cross-open",
                        28,
                        "28",
                        "circle-x",
                        128,
                        "128",
                        "circle-x-open",
                        29,
                        "29",
                        "square-cross",
                        129,
                        "129",
                        "square-cross-open",
                        30,
                        "30",
                        "square-x",
                        130,
                        "130",
                        "square-x-open",
                        31,
                        "31",
                        "diamond-cross",
                        131,
                        "131",
                        "diamond-cross-open",
                        32,
                        "32",
                        "diamond-x",
                        132,
                        "132",
                        "diamond-x-open",
                        33,
                        "33",
                        "cross-thin",
                        133,
                        "133",
                        "cross-thin-open",
                        34,
                        "34",
                        "x-thin",
                        134,
                        "134",
                        "x-thin-open",
                        35,
                        "35",
                        "asterisk",
                        135,
                        "135",
                        "asterisk-open",
                        36,
                        "36",
                        "hash",
                        136,
                        "136",
                        "hash-open",
                        236,
                        "236",
                        "hash-dot",
                        336,
                        "336",
                        "hash-open-dot",
                        37,
                        "37",
                        "y-up",
                        137,
                        "137",
                        "y-up-open",
                        38,
                        "38",
                        "y-down",
                        138,
                        "138",
                        "y-down-open",
                        39,
                        "39",
                        "y-left",
                        139,
                        "139",
                        "y-left-open",
                        40,
                        "40",
                        "y-right",
                        140,
                        "140",
                        "y-right-open",
                        41,
                        "41",
                        "line-ew",
                        141,
                        "141",
                        "line-ew-open",
                        42,
                        "42",
                        "line-ns",
                        142,
                        "142",
                        "line-ns-open",
                        43,
                        "43",
                        "line-ne",
                        143,
                        "143",
                        "line-ne-open",
                        44,
                        "44",
                        "line-nw",
                        144,
                        "144",
                        "line-nw-open",
                        45,
                        "45",
                        "arrow-up",
                        145,
                        "145",
                        "arrow-up-open",
                        46,
                        "46",
                        "arrow-down",
                        146,
                        "146",
                        "arrow-down-open",
                        47,
                        "47",
                        "arrow-left",
                        147,
                        "147",
                        "arrow-left-open",
                        48,
                        "48",
                        "arrow-right",
                        148,
                        "148",
                        "arrow-right-open",
                        49,
                        "49",
                        "arrow-bar-up",
                        149,
                        "149",
                        "arrow-bar-up-open",
                        50,
                        "50",
                        "arrow-bar-down",
                        150,
                        "150",
                        "arrow-bar-down-open",
                        51,
                        "51",
                        "arrow-bar-left",
                        151,
                        "151",
                        "arrow-bar-left-open",
                        52,
                        "52",
                        "arrow-bar-right",
                        152,
                        "152",
                        "arrow-bar-right-open",
                        53,
                        "53",
                        "arrow",
                        153,
                        "153",
                        "arrow-open",
                        54,
                        "54",
                        "arrow-wide",
                        154,
                        "154",
                        "arrow-wide-open"
                      ],
                      "default": "circle"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          0,
                          "0",
                          "circle",
                          100,
                          "100",
                          "circle-open",
                          200,
                          "200",
                          "circle-dot",
                          300,
                          "300",
                          "circle-open-dot",
                          1,
                          "1",
                          "square",
                          101,
                          "101",
                          "square-open",
                          201,
                          "201",
                          "square-dot",
                          301,
                          "301",
                          "square-open-dot",
                          2,
                          "2",
                          "diamond",
                          102,
                          "102",
                          "diamond-open",
                          202,
                          "202",
                          "diamond-dot",
                          302,
                          "302",
                          "diamond-open-dot",
                          3,
                          "3",
                          "cross",
                          103,
                          "103",
                          "cross-open",
                          203,
                          "203",
                          "cross-dot",
                          303,
                          "303",
                          "cross-open-dot",
                          4,
                          "4",
                          "x",
                          104,
                          "104",
                          "x-open",
                          204,
                          "204",
                          "x-dot",
                          304,
                          "304",
                          "x-open-dot",
                          5,
                          "5",
                          "triangle-up",
                          105,
                          "105",
                          "triangle-up-open",
                          205,
                          "205",
                          "triangle-up-dot",
                          305,
                          "305",
                          "triangle-up-open-dot",
                          6,
                          "6",
                          "triangle-down",
                          106,
                          "106",
                          "triangle-down-open",
                          206,
                          "206",
                          "triangle-down-dot",
                          306,
                          "306",
                          "triangle-down-open-dot",
                          7,
                          "7",
                          "triangle-left",
                          107,
                          "107",
                          "triangle-left-open",
                          207,
                          "207",
                          "triangle-left-dot",
                          307,
                          "307",
                          "triangle-left-open-dot",
                          8,
                          "8",
                          "triangle-right",
                          108,
                          "108",
                          "triangle-right-open",
                          208,
                          "208",
                          "triangle-right-dot",
                          308,
                          "308",
                          "triangle-right-open-dot",
                          9,
                          "9",
                          "triangle-ne",
                          109,
                          "109",
                          "triangle-ne-open",
                          209,
                          "209",
                          "triangle-ne-dot",
                          309,
                          "309",
                          "triangle-ne-open-dot",
                          10,
                          "10",
                          "triangle-se",
                          110,
                          "110",
                          "triangle-se-open",
                          210,
                          "210",
                          "triangle-se-dot",
                          310,
                          "310",
                          "triangle-se-open-dot",
                          11,
                          "11",
                          "triangle-sw",
                          111,
                          "111",
                          "triangle-sw-open",
                          211,
                          "211",
                          "triangle-sw-dot",
                          311,
                          "311",
                          "triangle-sw-open-dot",
                          12,
                          "12",
                          "triangle-nw",
                          112,
                          "112",
                          "triangle-nw-open",
                          212,
                          "212",
                          "triangle-nw-dot",
                          312,
                          "312",
                          "triangle-nw-open-dot",
                          13,
                          "13",
                          "pentagon",
                          113,
                          "113",
                          "pentagon-open",
                          213,
                          "213",
                          "pentagon-dot",
                          313,
                          "313",
                          "pentagon-open-dot",
                          14,
                          "14",
                          "hexagon",
                          114,
                          "114",
                          "hexagon-open",
                          214,
                          "214",
                          "hexagon-dot",
                          314,
                          "314",
                          "hexagon-open-dot",
                          15,
                          "15",
                          "hexagon2",
                          115,
                          "115",
                          "hexagon2-open",
                          215,
                          "215",
                          "hexagon2-dot",
                          315,
                          "315",
                          "hexagon2-open-dot",
                          16,
                          "16",
                          "octagon",
                          116,
                          "116",
                          "octagon-open",
                          216,
                          "216",
                          "octagon-dot",
                          316,
                          "316",
                          "octagon-open-dot",
                          17,
                          "17",
                          "star",
                          117,
                          "117",
                          "star-open",
                          217,
                          "217",
                          "star-dot",
                          317,
                          "317",
                          "star-open-dot",
                          18,
                          "18",
                          "hexagram",
                          118,
                          "118",
                          "hexagram-open",
                          218,
                          "218",
                          "hexagram-dot",
                          318,
                          "318",
                          "hexagram-open-dot",
                          19,
                          "19",
                          "star-triangle-up",
                          119,
                          "119",
                          "star-triangle-up-open",
                          219,
                          "219",
                          "star-triangle-up-dot",
                          319,
                          "319",
                          "star-triangle-up-open-dot",
                          20,
                          "20",
                          "star-triangle-down",
                          120,
                          "120",
                          "star-triangle-down-open",
                          220,
                          "220",
                          "star-triangle-down-dot",
                          320,
                          "320",
                          "star-triangle-down-open-dot",
                          21,
                          "21",
                          "star-square",
                          121,
                          "121",
                          "star-square-open",
                          221,
                          "221",
                          "star-square-dot",
                          321,
                          "321",
                          "star-square-open-dot",
                          22,
                          "22",
                          "star-diamond",
                          122,
                          "122",
                          "star-diamond-open",
                          222,
                          "222",
                          "star-diamond-dot",
                          322,
                          "322",
                          "star-diamond-open-dot",
                          23,
                          "23",
                          "diamond-tall",
                          123,
                          "123",
                          "diamond-tall-open",
                          223,
                          "223",
                          "diamond-tall-dot",
                          323,
                          "323",
                          "diamond-tall-open-dot",
                          24,
                          "24",
                          "diamond-wide",
                          124,
                          "124",
                          "diamond-wide-open",
                          224,
                          "224",
                          "diamond-wide-dot",
                          324,
                          "324",
                          "diamond-wide-open-dot",
                          25,
                          "25",
                          "hourglass",
                          125,
                          "125",
                          "hourglass-open",
                          26,
                          "26",
                          "bowtie",
                          126,
                          "126",
                          "bowtie-open",
                          27,
                          "27",
                          "circle-cross",
                          127,
                          "127",
                          "circle-cross-open",
                          28,
                          "28",
                          "circle-x",
                          128,
                          "128",
                          "circle-x-open",
                          29,
                          "29",
                          "square-cross",
                          129,
                          "129",
                          "square-cross-open",
                          30,
                          "30",
                          "square-x",
                          130,
                          "130",
                          "square-x-open",
                          31,
                          "31",
                          "diamond-cross",
                          131,
                          "131",
                          "diamond-cross-open",
                          32,
                          "32",
                          "diamond-x",
                          132,
                          "132",
                          "diamond-x-open",
                          33,
                          "33",
                          "cross-thin",
                          133,
                          "133",
                          "cross-thin-open",
                          34,
                          "34",
                          "x-thin",
                          134,
                          "134",
                          "x-thin-open",
                          35,
                          "35",
                          "asterisk",
                          135,
                          "135",
                          "asterisk-open",
                          36,
                          "36",
                          "hash",
                          136,
                          "136",
                          "hash-open",
                          236,
                          "236",
                          "hash-dot",
                          336,
                          "336",
                          "hash-open-dot",
                          37,
                          "37",
                          "y-up",
                          137,
                          "137",
                          "y-up-open",
                          38,
                          "38",
                          "y-down",
                          138,
                          "138",
                          "y-down-open",
                          39,
                          "39",
                          "y-left",
                          139,
                          "139",
                          "y-left-open",
                          40,
                          "40",
                          "y-right",
                          140,
                          "140",
                          "y-right-open",
                          41,
                          "41",
                          "line-ew",
                          141,
                          "141",
                          "line-ew-open",
                          42,
                          "42",
                          "line-ns",
                          142,
                          "142",
                          "line-ns-open",
                          43,
                          "43",
                          "line-ne",
                          143,
                          "143",
                          "line-ne-open",
                          44,
                          "44",
                          "line-nw",
                          144,
                          "144",
                          "line-nw-open",
                          45,
                          "45",
                          "arrow-up",
                          145,
                          "145",
                          "arrow-up-open",
                          46,
                          "46",
                          "arrow-down",
                          146,
                          "146",
                          "arrow-down-open",
                          47,
                          "47",
                          "arrow-left",
                          147,
                          "147",
                          "arrow-left-open",
                          48,
                          "48",
                          "arrow-right",
                          148,
                          "148",
                          "arrow-right-open",
                          49,
                          "49",
                          "arrow-bar-up",
                          149,
                          "149",
                          "arrow-bar-up-open",
                          50,
                          "50",
                          "arrow-bar-down",
                          150,
                          "150",
                          "arrow-bar-down-open",
                          51,
                          "51",
                          "arrow-bar-left",
                          151,
                          "151",
                          "arrow-bar-left-open",
                          52,
                          "52",
                          "arrow-bar-right",
                          152,
                          "152",
                          "arrow-bar-right-open",
                          53,
                          "53",
                          "arrow",
                          153,
                          "153",
                          "arrow-open",
                          54,
                          "54",
                          "arrow-wide",
                          154,
                          "154",
                          "arrow-wide-open"
                        ],
                        "default": "circle"
                      }
                    ]
                  }
                }
              ]
            },
            "symbolsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `symbol`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "metasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `meta`.",
          "type": "string"
        },
        "name": {
          "description": "Sets the trace name. The trace name appears as the legend item and on hover.",
          "type": "string"
        },
        "opacity": {
          "description": "Sets the opacity of the trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0,
              "maximum": 1,
              "default": 1
            }
          ]
        },
        "selected": {
          "type": "object",
          "properties": {
            "marker": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the marker color of selected points.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "opacity": {
                  "description": "Sets the marker opacity of selected points.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1
                    }
                  ]
                },
                "size": {
                  "description": "Sets the marker size of selected points.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0
                    }
                  ]
                }
              },
              "additionalProperties": false
            }
          },
          "additionalProperties": false
        },
        "selectedpoints": {
          "description": "Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect."
        },
        "showlegend": {
          "description": "Determines whether or not an item corresponding to this trace is shown in the legend.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "showlowerhalf": {
          "description": "Determines whether or not subplots on the lower half from the diagonal are displayed.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "showupperhalf": {
          "description": "Determines whether or not subplots on the upper half from the diagonal are displayed.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "stream": {
          "type": "object",
          "properties": {
            "maxpoints": {
              "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 10000,
                  "default": 500
                }
              ]
            },
            "token": {
              "pattern": ".*\\S.*$",
              "description": "The stream id number links a data trace on a plot with a stream. See <https://chart-studio.plotly.com/settings> for more details.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "text": {
          "description": "Sets text elements associated with each (x,y) pair to appear on hover. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "textsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `text`.",
          "type": "string"
        },
        "uid": {
          "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.",
          "type": "string"
        },
        "uirevision": {
          "description": "Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves."
        },
        "unselected": {
          "type": "object",
          "properties": {
            "marker": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the marker color of unselected points, applied only when a selection exists.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "opacity": {
                  "description": "Sets the marker opacity of unselected points, applied only when a selection exists.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1
                    }
                  ]
                },
                "size": {
                  "description": "Sets the marker size of unselected points, applied only when a selection exists.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0
                    }
                  ]
                }
              },
              "additionalProperties": false
            }
          },
          "additionalProperties": false
        },
        "visible": {
          "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                true,
                false,
                "legendonly"
              ],
              "default": true
            }
          ]
        },
        "xaxes": {
          "description": "Sets the list of x axes corresponding to dimensions of this splom trace. By default, a splom will match the first N xaxes where N is the number of input dimensions. Note that, in case where `diagonal.visible` is false and `showupperhalf` or `showlowerhalf` is false, this splom trace will generate one less x-axis and one less y-axis.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "string",
                    "pattern": "/^x([2-9]|[1-9][0-9]+)?( domain)?$/"
                  }
                ]
              },
              "minItems": 1
            }
          ]
        },
        "xhoverformat": {
          "default": "",
          "description": "Sets the hover text formatting rulefor `x`  using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.",
          "type": "string"
        },
        "yaxes": {
          "description": "Sets the list of y axes corresponding to dimensions of this splom trace. By default, a splom will match the first N yaxes where N is the number of input dimensions. Note that, in case where `diagonal.visible` is false and `showupperhalf` or `showlowerhalf` is false, this splom trace will generate one less x-axis and one less y-axis.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "string",
                    "pattern": "/^y([2-9]|[1-9][0-9]+)?( domain)?$/"
                  }
                ]
              },
              "minItems": 1
            }
          ]
        },
        "yhoverformat": {
          "default": "",
          "description": "Sets the hover text formatting rulefor `y`  using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.",
          "type": "string"
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false
    },
    "Streamtube": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "$id": "https://visivo.io/trace-properties/schema",
      "description": "A schema to validate plotly trace properties",
      "type": "object",
      "properties": {
        "type": {
          "const": "streamtube"
        },
        "autocolorscale": {
          "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "cauto": {
          "description": "Determines whether or not the color domain is computed with respect to the input data (here u/v/w norm) or the bounds set in `cmin` and `cmax` Defaults to `false` when `cmin` and `cmax` are set by the user.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "cmax": {
          "description": "Sets the upper bound of the color domain. Value should have the same units as u/v/w norm and if set, `cmin` must be set as well.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": null
            }
          ]
        },
        "cmid": {
          "description": "Sets the mid-point of the color domain by scaling `cmin` and/or `cmax` to be equidistant to this point. Value should have the same units as u/v/w norm. Has no effect when `cauto` is `false`.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": null
            }
          ]
        },
        "cmin": {
          "description": "Sets the lower bound of the color domain. Value should have the same units as u/v/w norm and if set, `cmax` must be set as well.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": null
            }
          ]
        },
        "coloraxis": {
          "description": "Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": null,
              "pattern": "/^coloraxis([2-9]|[1-9][0-9]+)?$/"
            }
          ]
        },
        "colorbar": {
          "type": "object",
          "properties": {
            "bgcolor": {
              "description": "Sets the color of padded area.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "bordercolor": {
              "description": "Sets the axis line color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "borderwidth": {
              "description": "Sets the width (in px) or the border enclosing this color bar.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "dtick": {
              "description": "Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L<f>*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M<n>* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48*"
            },
            "exponentformat": {
              "description": "Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "none",
                    "e",
                    "E",
                    "power",
                    "SI",
                    "B"
                  ],
                  "default": "B"
                }
              ]
            },
            "labelalias": {
              "default": false,
              "description": "Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax."
            },
            "len": {
              "description": "Sets the length of the color bar This measure excludes the padding of both ends. That is, the color bar length is this length minus the padding on both ends.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 1
                }
              ]
            },
            "lenmode": {
              "description": "Determines whether this color bar's length (i.e. the measure in the color variation direction) is set in units of plot *fraction* or in *pixels. Use `len` to set the value.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "fraction",
                    "pixels"
                  ],
                  "default": "fraction"
                }
              ]
            },
            "minexponent": {
              "description": "Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 3
                }
              ]
            },
            "nticks": {
              "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "orientation": {
              "description": "Sets the orientation of the colorbar.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "h",
                    "v"
                  ],
                  "default": "v"
                }
              ]
            },
            "outlinecolor": {
              "description": "Sets the axis line color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "outlinewidth": {
              "description": "Sets the width (in px) of the axis line.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 1
                }
              ]
            },
            "separatethousands": {
              "description": "If \"true\", even 4-digit integers are separated",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            },
            "showexponent": {
              "description": "If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "all",
                    "first",
                    "last",
                    "none"
                  ],
                  "default": "all"
                }
              ]
            },
            "showticklabels": {
              "description": "Determines whether or not the tick labels are drawn.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": true
                }
              ]
            },
            "showtickprefix": {
              "description": "If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "all",
                    "first",
                    "last",
                    "none"
                  ],
                  "default": "all"
                }
              ]
            },
            "showticksuffix": {
              "description": "Same as `showtickprefix` but for tick suffixes.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "all",
                    "first",
                    "last",
                    "none"
                  ],
                  "default": "all"
                }
              ]
            },
            "thickness": {
              "description": "Sets the thickness of the color bar This measure excludes the size of the padding, ticks and labels.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 30
                }
              ]
            },
            "thicknessmode": {
              "description": "Determines whether this color bar's thickness (i.e. the measure in the constant color direction) is set in units of plot *fraction* or in *pixels*. Use `thickness` to set the value.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "fraction",
                    "pixels"
                  ],
                  "default": "pixels"
                }
              ]
            },
            "tick0": {
              "description": "Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L<f>* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears."
            },
            "tickangle": {
              "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": -180,
                  "maximum": 180,
                  "default": "auto"
                }
              ]
            },
            "tickcolor": {
              "description": "Sets the tick color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "tickfont": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "family": {
                  "pattern": ".*\\S.*$",
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                "shadow": {
                  "default": "none",
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "tickformat": {
              "default": "",
              "description": "Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*",
              "type": "string"
            },
            "tickformatstops": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "dtickrange": {
                    "description": "range [*min*, *max*], where *min*, *max* - dtick values which describe some zoom level, it is possible to omit *min* or *max* value by passing *null*",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "array",
                        "items": {},
                        "minItems": 2,
                        "maxItems": 2
                      }
                    ]
                  },
                  "enabled": {
                    "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "boolean",
                        "default": true
                      }
                    ]
                  },
                  "name": {
                    "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.",
                    "type": "string"
                  },
                  "templateitemname": {
                    "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.",
                    "type": "string"
                  },
                  "value": {
                    "default": "",
                    "description": "string - dtickformat for described zoom level, the same as *tickformat*",
                    "type": "string"
                  }
                },
                "additionalProperties": false
              },
              "minItems": 1
            },
            "ticklabeloverflow": {
              "description": "Determines how we handle tick labels that would overflow either the graph div or the domain of the axis. The default value for inside tick labels is *hide past domain*. In other cases the default is *hide past div*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "allow",
                    "hide past div",
                    "hide past domain"
                  ]
                }
              ]
            },
            "ticklabelposition": {
              "description": "Determines where tick labels are drawn relative to the ticks. Left and right options are used when `orientation` is *h*, top and bottom when `orientation` is *v*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "outside",
                    "inside",
                    "outside top",
                    "inside top",
                    "outside left",
                    "inside left",
                    "outside right",
                    "inside right",
                    "outside bottom",
                    "inside bottom"
                  ],
                  "default": "outside"
                }
              ]
            },
            "ticklabelstep": {
              "description": "Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 1,
                  "default": 1
                }
              ]
            },
            "ticklen": {
              "description": "Sets the tick length (in px).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 5
                }
              ]
            },
            "tickmode": {
              "description": "Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "auto",
                    "linear",
                    "array"
                  ]
                }
              ]
            },
            "tickprefix": {
              "default": "",
              "description": "Sets a tick label prefix.",
              "type": "string"
            },
            "ticks": {
              "description": "Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "outside",
                    "inside",
                    ""
                  ],
                  "default": ""
                }
              ]
            },
            "ticksuffix": {
              "default": "",
              "description": "Sets a tick label suffix.",
              "type": "string"
            },
            "ticktext": {
              "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  }
                }
              ]
            },
            "ticktextsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.",
              "type": "string"
            },
            "tickvals": {
              "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  }
                }
              ]
            },
            "tickvalssrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.",
              "type": "string"
            },
            "tickwidth": {
              "description": "Sets the tick width (in px).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 1
                }
              ]
            },
            "title": {
              "type": "object",
              "properties": {
                "font": {
                  "type": "object",
                  "properties": {
                    "color": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    "family": {
                      "pattern": ".*\\S.*$",
                      "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                      "type": "string"
                    },
                    "lineposition": {
                      "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    "shadow": {
                      "default": "none",
                      "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                      "type": "string"
                    },
                    "size": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    "style": {
                      "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "textcase": {
                      "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "variant": {
                      "description": "Sets the variant of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "weight": {
                      "description": "Sets the weight (or boldness) of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    }
                  },
                  "additionalProperties": false
                },
                "side": {
                  "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and  defaults to *right* when `orientation` if *h*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "right",
                        "top",
                        "bottom"
                      ]
                    }
                  ]
                },
                "text": {
                  "description": "Sets the title of the color bar.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "x": {
              "description": "Sets the x position with respect to `xref` of the color bar (in plot fraction). When `xref` is *paper*, defaults to 1.02 when `orientation` is *v* and 0.5 when `orientation` is *h*. When `xref` is *container*, defaults to *1* when `orientation` is *v* and 0.5 when `orientation` is *h*. Must be between *0* and *1* if `xref` is *container* and between *-2* and *3* if `xref` is *paper*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number"
                }
              ]
            },
            "xanchor": {
              "description": "Sets this color bar's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the color bar. Defaults to *left* when `orientation` is *v* and *center* when `orientation` is *h*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "left",
                    "center",
                    "right"
                  ]
                }
              ]
            },
            "xpad": {
              "description": "Sets the amount of padding (in px) along the x direction.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 10
                }
              ]
            },
            "xref": {
              "description": "Sets the container `x` refers to. *container* spans the entire `width` of the plot. *paper* refers to the width of the plotting area only.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "container",
                    "paper"
                  ],
                  "default": "paper"
                }
              ]
            },
            "y": {
              "description": "Sets the y position with respect to `yref` of the color bar (in plot fraction). When `yref` is *paper*, defaults to 0.5 when `orientation` is *v* and 1.02 when `orientation` is *h*. When `yref` is *container*, defaults to 0.5 when `orientation` is *v* and 1 when `orientation` is *h*. Must be between *0* and *1* if `yref` is *container* and between *-2* and *3* if `yref` is *paper*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number"
                }
              ]
            },
            "yanchor": {
              "description": "Sets this color bar's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the color bar. Defaults to *middle* when `orientation` is *v* and *bottom* when `orientation` is *h*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "top",
                    "middle",
                    "bottom"
                  ]
                }
              ]
            },
            "ypad": {
              "description": "Sets the amount of padding (in px) along the y direction.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 10
                }
              ]
            },
            "yref": {
              "description": "Sets the container `y` refers to. *container* spans the entire `height` of the plot. *paper* refers to the height of the plotting area only.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "container",
                    "paper"
                  ],
                  "default": "paper"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "colorscale": {
          "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "$ref": "#/$defs/colorscale",
              "default": null
            }
          ]
        },
        "customdata": {
          "description": "Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "customdatasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `customdata`.",
          "type": "string"
        },
        "hoverinfo": {
          "description": "Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired.",
          "oneOf": [
            {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "oneOf": [
                    {
                      "type": "string",
                      "enum": [
                        "all",
                        "none",
                        "skip"
                      ]
                    },
                    {
                      "type": "string",
                      "pattern": "^(x|y|z|u|v|w|norm|divergence|text|name)(\\+(x|y|z|u|v|w|norm|divergence|text|name))*$"
                    }
                  ],
                  "default": "x+y+z+norm+text+name"
                }
              ]
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "oneOf": [
                      {
                        "type": "string",
                        "enum": [
                          "all",
                          "none",
                          "skip"
                        ]
                      },
                      {
                        "type": "string",
                        "pattern": "^(x|y|z|u|v|w|norm|divergence|text|name)(\\+(x|y|z|u|v|w|norm|divergence|text|name))*$"
                      }
                    ],
                    "default": "x+y+z+norm+text+name"
                  }
                ]
              }
            }
          ]
        },
        "hoverinfosrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.",
          "type": "string"
        },
        "hoverlabel": {
          "type": "object",
          "properties": {
            "align": {
              "description": "Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "left",
                        "right",
                        "auto"
                      ],
                      "default": "auto"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "left",
                          "right",
                          "auto"
                        ],
                        "default": "auto"
                      }
                    ]
                  }
                }
              ]
            },
            "alignsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `align`.",
              "type": "string"
            },
            "bgcolor": {
              "description": "Sets the background color of the hover labels for this trace",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "bgcolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.",
              "type": "string"
            },
            "bordercolor": {
              "description": "Sets the border color of the hover labels for this trace.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "bordercolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.",
              "type": "string"
            },
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "colorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `color`.",
                  "type": "string"
                },
                "family": {
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "oneOf": [
                    {
                      "pattern": ".*\\S.*$",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "pattern": ".*\\S.*$",
                        "type": "string"
                      }
                    },
                    {
                      "$ref": "#/$defs/query-string"
                    }
                  ]
                },
                "familysrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `family`.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "oneOf": [
                              {
                                "type": "string",
                                "enum": [
                                  "none"
                                ]
                              },
                              {
                                "type": "string",
                                "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                              }
                            ],
                            "default": "none"
                          }
                        ]
                      }
                    }
                  ]
                },
                "linepositionsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.",
                  "type": "string"
                },
                "shadow": {
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "oneOf": [
                    {
                      "default": "none",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "default": "none",
                        "type": "string"
                      }
                    }
                  ]
                },
                "shadowsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `shadow`.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 1
                          }
                        ]
                      }
                    }
                  ]
                },
                "sizesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `size`.",
                  "type": "string"
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "italic"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "stylesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `style`.",
                  "type": "string"
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "word caps",
                              "upper",
                              "lower"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "textcasesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `textcase`.",
                  "type": "string"
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "small-caps",
                              "all-small-caps",
                              "all-petite-caps",
                              "petite-caps",
                              "unicase"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "variantsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `variant`.",
                  "type": "string"
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 1000,
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "weightsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `weight`.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "namelength": {
              "description": "Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": -1,
                      "default": 15
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "integer",
                        "minimum": -1,
                        "default": 15
                      }
                    ]
                  }
                }
              ]
            },
            "namelengthsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `namelength`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "hovertemplate": {
          "description": "Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". <https://github.com/d3/d3-format/tree/v1.4.5#d3-format> for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format> for details on the date formatting syntax. The variables available in `hovertemplate` are the ones emitted as event data described at this link <https://plotly.com/javascript/plotlyjs-events/#event-data>. Additionally, every attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `tubex`, `tubey`, `tubez`, `tubeu`, `tubev`, `tubew`, `norm` and `divergence`. Anything contained in tag `<extra>` is displayed in the secondary box, for example \"<extra>{fullData.name}</extra>\". To hide the secondary box completely, use an empty tag `<extra></extra>`.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "hovertemplatesrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.",
          "type": "string"
        },
        "hovertext": {
          "default": "",
          "description": "Same as `text`.",
          "type": "string"
        },
        "ids": {
          "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "idssrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `ids`.",
          "type": "string"
        },
        "legend": {
          "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "legend",
              "pattern": "^legend([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "legendgroup": {
          "default": "",
          "description": "Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items.",
          "type": "string"
        },
        "legendgrouptitle": {
          "type": "object",
          "properties": {
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "family": {
                  "pattern": ".*\\S.*$",
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                "shadow": {
                  "default": "none",
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "text": {
              "default": "",
              "description": "Sets the title of the legend group.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "legendrank": {
          "description": "Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": 1000
            }
          ]
        },
        "legendwidth": {
          "description": "Sets the width (in px or fraction) of the legend for this trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0
            }
          ]
        },
        "lighting": {
          "type": "object",
          "properties": {
            "ambient": {
              "description": "Ambient light increases overall color visibility but can wash out the image.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 1,
                  "default": 0.8
                }
              ]
            },
            "diffuse": {
              "description": "Represents the extent that incident rays are reflected in a range of angles.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 1,
                  "default": 0.8
                }
              ]
            },
            "facenormalsepsilon": {
              "description": "Epsilon for face normals calculation avoids math issues arising from degenerate geometry.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 1,
                  "default": 1e-6
                }
              ]
            },
            "fresnel": {
              "description": "Represents the reflectance as a dependency of the viewing angle; e.g. paper is reflective when viewing it from the edge of the paper (almost 90 degrees), causing shine.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 5,
                  "default": 0.2
                }
              ]
            },
            "roughness": {
              "description": "Alters specular reflection; the rougher the surface, the wider and less contrasty the shine.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 1,
                  "default": 0.5
                }
              ]
            },
            "specular": {
              "description": "Represents the level that incident rays are reflected in a single direction, causing shine.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 2,
                  "default": 0.05
                }
              ]
            },
            "vertexnormalsepsilon": {
              "description": "Epsilon for vertex normals calculation avoids math issues arising from degenerate geometry.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 1,
                  "default": 1e-12
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "lightposition": {
          "type": "object",
          "properties": {
            "x": {
              "description": "Numeric vector, representing the X coordinate for each vertex.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": -100000,
                  "maximum": 100000,
                  "default": 100000
                }
              ]
            },
            "y": {
              "description": "Numeric vector, representing the Y coordinate for each vertex.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": -100000,
                  "maximum": 100000,
                  "default": 100000
                }
              ]
            },
            "z": {
              "description": "Numeric vector, representing the Z coordinate for each vertex.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": -100000,
                  "maximum": 100000,
                  "default": 0
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "maxdisplayed": {
          "description": "The maximum number of displayed segments in a streamtube.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "integer",
              "minimum": 0,
              "default": 1000
            }
          ]
        },
        "metasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `meta`.",
          "type": "string"
        },
        "name": {
          "description": "Sets the trace name. The trace name appears as the legend item and on hover.",
          "type": "string"
        },
        "opacity": {
          "description": "Sets the opacity of the surface. Please note that in the case of using high `opacity` values for example a value greater than or equal to 0.5 on two surfaces (and 0.25 with four surfaces), an overlay of multiple transparent surfaces may not perfectly be sorted in depth by the webgl API. This behavior may be improved in the near future and is subject to change.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0,
              "maximum": 1,
              "default": 1
            }
          ]
        },
        "reversescale": {
          "description": "Reverses the color mapping if true. If true, `cmin` will correspond to the last color in the array and `cmax` will correspond to the first color.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": false
            }
          ]
        },
        "scene": {
          "description": "Sets a reference between this trace's 3D coordinate system and a 3D scene. If *scene* (the default value), the (x,y,z) coordinates refer to `layout.scene`. If *scene2*, the (x,y,z) coordinates refer to `layout.scene2`, and so on.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "scene",
              "pattern": "^scene([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "showlegend": {
          "description": "Determines whether or not an item corresponding to this trace is shown in the legend.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": false
            }
          ]
        },
        "showscale": {
          "description": "Determines whether or not a colorbar is displayed for this trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "sizeref": {
          "description": "The scaling factor for the streamtubes. The default is 1, which avoids two max divergence tubes from touching at adjacent starting positions.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0,
              "default": 1
            }
          ]
        },
        "starts": {
          "type": "object",
          "properties": {
            "x": {
              "description": "Sets the x components of the starting position of the streamtubes",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  }
                }
              ]
            },
            "xsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `x`.",
              "type": "string"
            },
            "y": {
              "description": "Sets the y components of the starting position of the streamtubes",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  }
                }
              ]
            },
            "ysrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `y`.",
              "type": "string"
            },
            "z": {
              "description": "Sets the z components of the starting position of the streamtubes",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  }
                }
              ]
            },
            "zsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `z`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "stream": {
          "type": "object",
          "properties": {
            "maxpoints": {
              "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 10000,
                  "default": 500
                }
              ]
            },
            "token": {
              "pattern": ".*\\S.*$",
              "description": "The stream id number links a data trace on a plot with a stream. See <https://chart-studio.plotly.com/settings> for more details.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "text": {
          "default": "",
          "description": "Sets a text element associated with this trace. If trace `hoverinfo` contains a *text* flag, this text element will be seen in all hover labels. Note that streamtube traces do not support array `text` values.",
          "type": "string"
        },
        "u": {
          "description": "Sets the x components of the vector field.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "uhoverformat": {
          "default": "",
          "description": "Sets the hover text formatting rulefor `u`  using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By> default the values are formatted using generic number format.",
          "type": "string"
        },
        "uid": {
          "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.",
          "type": "string"
        },
        "uirevision": {
          "description": "Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves."
        },
        "usrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `u`.",
          "type": "string"
        },
        "v": {
          "description": "Sets the y components of the vector field.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "vhoverformat": {
          "default": "",
          "description": "Sets the hover text formatting rulefor `v`  using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By> default the values are formatted using generic number format.",
          "type": "string"
        },
        "visible": {
          "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                true,
                false,
                "legendonly"
              ],
              "default": true
            }
          ]
        },
        "vsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `v`.",
          "type": "string"
        },
        "w": {
          "description": "Sets the z components of the vector field.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "whoverformat": {
          "default": "",
          "description": "Sets the hover text formatting rulefor `w`  using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By> default the values are formatted using generic number format.",
          "type": "string"
        },
        "wsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `w`.",
          "type": "string"
        },
        "x": {
          "description": "Sets the x coordinates of the vector field.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "xhoverformat": {
          "default": "",
          "description": "Sets the hover text formatting rulefor `x`  using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.",
          "type": "string"
        },
        "xsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `x`.",
          "type": "string"
        },
        "y": {
          "description": "Sets the y coordinates of the vector field.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "yhoverformat": {
          "default": "",
          "description": "Sets the hover text formatting rulefor `y`  using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.",
          "type": "string"
        },
        "ysrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `y`.",
          "type": "string"
        },
        "z": {
          "description": "Sets the z coordinates of the vector field.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "zhoverformat": {
          "default": "",
          "description": "Sets the hover text formatting rulefor `z`  using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `zaxis.hoverformat`.",
          "type": "string"
        },
        "zsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `z`.",
          "type": "string"
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false
    },
    "Sunburst": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "$id": "https://visivo.io/trace-properties/schema",
      "description": "A schema to validate plotly trace properties",
      "type": "object",
      "properties": {
        "type": {
          "const": "sunburst"
        },
        "branchvalues": {
          "description": "Determines how the items in `values` are summed. When set to *total*, items in `values` are taken to be value of all its descendants. When set to *remainder*, items in `values` corresponding to the root and the branches sectors are taken to be the extra part not part of the sum of the values at their leaves.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "remainder",
                "total"
              ],
              "default": "remainder"
            }
          ]
        },
        "count": {
          "description": "Determines default for `values` when it is not provided, by inferring a 1 for each of the *leaves* and/or *branches*, otherwise 0.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "pattern": "^(branches|leaves)(\\+(branches|leaves))*$",
              "default": "leaves"
            }
          ]
        },
        "customdata": {
          "description": "Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "customdatasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `customdata`.",
          "type": "string"
        },
        "domain": {
          "type": "object",
          "properties": {
            "column": {
              "description": "If there is a layout grid, use the domain for this column in the grid for this sunburst trace .",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "row": {
              "description": "If there is a layout grid, use the domain for this row in the grid for this sunburst trace .",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "x": {
              "description": "Sets the horizontal domain of this sunburst trace (in plot fraction).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 1
                      }
                    ]
                  },
                  "minItems": 2,
                  "maxItems": 2,
                  "default": [
                    0,
                    1
                  ]
                }
              ]
            },
            "y": {
              "description": "Sets the vertical domain of this sunburst trace (in plot fraction).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 1
                      }
                    ]
                  },
                  "minItems": 2,
                  "maxItems": 2,
                  "default": [
                    0,
                    1
                  ]
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "hoverinfo": {
          "description": "Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired.",
          "oneOf": [
            {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "oneOf": [
                    {
                      "type": "string",
                      "enum": [
                        "all",
                        "none",
                        "skip"
                      ]
                    },
                    {
                      "type": "string",
                      "pattern": "^(label|text|value|name|current path|percent root|percent entry|percent parent)(\\+(label|text|value|name|current path|percent root|percent entry|percent parent))*$"
                    }
                  ],
                  "default": "label+text+value+name"
                }
              ]
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "oneOf": [
                      {
                        "type": "string",
                        "enum": [
                          "all",
                          "none",
                          "skip"
                        ]
                      },
                      {
                        "type": "string",
                        "pattern": "^(label|text|value|name|current path|percent root|percent entry|percent parent)(\\+(label|text|value|name|current path|percent root|percent entry|percent parent))*$"
                      }
                    ],
                    "default": "label+text+value+name"
                  }
                ]
              }
            }
          ]
        },
        "hoverinfosrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.",
          "type": "string"
        },
        "hoverlabel": {
          "type": "object",
          "properties": {
            "align": {
              "description": "Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "left",
                        "right",
                        "auto"
                      ],
                      "default": "auto"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "left",
                          "right",
                          "auto"
                        ],
                        "default": "auto"
                      }
                    ]
                  }
                }
              ]
            },
            "alignsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `align`.",
              "type": "string"
            },
            "bgcolor": {
              "description": "Sets the background color of the hover labels for this trace",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "bgcolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.",
              "type": "string"
            },
            "bordercolor": {
              "description": "Sets the border color of the hover labels for this trace.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "bordercolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.",
              "type": "string"
            },
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "colorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `color`.",
                  "type": "string"
                },
                "family": {
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "oneOf": [
                    {
                      "pattern": ".*\\S.*$",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "pattern": ".*\\S.*$",
                        "type": "string"
                      }
                    },
                    {
                      "$ref": "#/$defs/query-string"
                    }
                  ]
                },
                "familysrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `family`.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "oneOf": [
                              {
                                "type": "string",
                                "enum": [
                                  "none"
                                ]
                              },
                              {
                                "type": "string",
                                "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                              }
                            ],
                            "default": "none"
                          }
                        ]
                      }
                    }
                  ]
                },
                "linepositionsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.",
                  "type": "string"
                },
                "shadow": {
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "oneOf": [
                    {
                      "default": "none",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "default": "none",
                        "type": "string"
                      }
                    }
                  ]
                },
                "shadowsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `shadow`.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 1
                          }
                        ]
                      }
                    }
                  ]
                },
                "sizesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `size`.",
                  "type": "string"
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "italic"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "stylesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `style`.",
                  "type": "string"
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "word caps",
                              "upper",
                              "lower"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "textcasesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `textcase`.",
                  "type": "string"
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "small-caps",
                              "all-small-caps",
                              "all-petite-caps",
                              "petite-caps",
                              "unicase"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "variantsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `variant`.",
                  "type": "string"
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 1000,
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "weightsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `weight`.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "namelength": {
              "description": "Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": -1,
                      "default": 15
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "integer",
                        "minimum": -1,
                        "default": 15
                      }
                    ]
                  }
                }
              ]
            },
            "namelengthsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `namelength`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "hovertemplate": {
          "description": "Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". <https://github.com/d3/d3-format/tree/v1.4.5#d3-format> for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format> for details on the date formatting syntax. The variables available in `hovertemplate` are the ones emitted as event data described at this link <https://plotly.com/javascript/plotlyjs-events/#event-data>. Additionally, every attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `currentPath`, `root`, `entry`, `percentRoot`, `percentEntry` and `percentParent`. Anything contained in tag `<extra>` is displayed in the secondary box, for example \"<extra>{fullData.name}</extra>\". To hide the secondary box completely, use an empty tag `<extra></extra>`.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "hovertemplatesrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.",
          "type": "string"
        },
        "hovertext": {
          "description": "Sets hover text elements associated with each sector. If a single string, the same string appears for all data points. If an array of string, the items are mapped in order of this trace's sectors. To be seen, trace `hoverinfo` must contain a *text* flag.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "hovertextsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.",
          "type": "string"
        },
        "ids": {
          "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "idssrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `ids`.",
          "type": "string"
        },
        "insidetextfont": {
          "type": "object",
          "properties": {
            "color": {
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "colorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `color`.",
              "type": "string"
            },
            "family": {
              "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
              "oneOf": [
                {
                  "pattern": ".*\\S.*$",
                  "type": "string"
                },
                {
                  "type": "array",
                  "items": {
                    "pattern": ".*\\S.*$",
                    "type": "string"
                  }
                },
                {
                  "$ref": "#/$defs/query-string"
                }
              ]
            },
            "familysrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `family`.",
              "type": "string"
            },
            "lineposition": {
              "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "oneOf": [
                          {
                            "type": "string",
                            "enum": [
                              "none"
                            ]
                          },
                          {
                            "type": "string",
                            "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                          }
                        ],
                        "default": "none"
                      }
                    ]
                  }
                }
              ]
            },
            "linepositionsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.",
              "type": "string"
            },
            "shadow": {
              "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
              "oneOf": [
                {
                  "default": "none",
                  "type": "string"
                },
                {
                  "type": "array",
                  "items": {
                    "default": "none",
                    "type": "string"
                  }
                }
              ]
            },
            "shadowsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `shadow`.",
              "type": "string"
            },
            "size": {
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 1
                      }
                    ]
                  }
                }
              ]
            },
            "sizesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `size`.",
              "type": "string"
            },
            "style": {
              "description": "Sets whether a font should be styled with a normal or italic face from its family.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "italic"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "stylesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `style`.",
              "type": "string"
            },
            "textcase": {
              "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "word caps",
                          "upper",
                          "lower"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "textcasesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `textcase`.",
              "type": "string"
            },
            "variant": {
              "description": "Sets the variant of the font.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "small-caps",
                          "all-small-caps",
                          "all-petite-caps",
                          "petite-caps",
                          "unicase"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "variantsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `variant`.",
              "type": "string"
            },
            "weight": {
              "description": "Sets the weight (or boldness) of the font.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 1000,
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "weightsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `weight`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "insidetextorientation": {
          "description": "Controls the orientation of the text inside chart sectors. When set to *auto*, text may be oriented in any direction in order to be as big as possible in the middle of a sector. The *horizontal* option orients text to be parallel with the bottom of the chart, and may make text smaller in order to achieve that goal. The *radial* option orients text along the radius of the sector. The *tangential* option orients text perpendicular to the radius of the sector.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "horizontal",
                "radial",
                "tangential",
                "auto"
              ],
              "default": "auto"
            }
          ]
        },
        "labels": {
          "description": "Sets the labels of each of the sectors.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "labelssrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `labels`.",
          "type": "string"
        },
        "leaf": {
          "type": "object",
          "properties": {
            "opacity": {
              "description": "Sets the opacity of the leaves. With colorscale it is defaulted to 1; otherwise it is defaulted to 0.7",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 1
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "legend": {
          "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "legend",
              "pattern": "^legend([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "legendgrouptitle": {
          "type": "object",
          "properties": {
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "family": {
                  "pattern": ".*\\S.*$",
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                "shadow": {
                  "default": "none",
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "text": {
              "default": "",
              "description": "Sets the title of the legend group.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "legendrank": {
          "description": "Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": 1000
            }
          ]
        },
        "legendwidth": {
          "description": "Sets the width (in px or fraction) of the legend for this trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0
            }
          ]
        },
        "level": {
          "description": "Sets the level from which this trace hierarchy is rendered. Set `level` to `''` to start from the root node in the hierarchy. Must be an \"id\" if `ids` is filled in, otherwise plotly attempts to find a matching item in `labels`."
        },
        "marker": {
          "type": "object",
          "properties": {
            "autocolorscale": {
              "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if colors is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": true
                }
              ]
            },
            "cauto": {
              "description": "Determines whether or not the color domain is computed with respect to the input data (here colors) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if colors is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": true
                }
              ]
            },
            "cmax": {
              "description": "Sets the upper bound of the color domain. Has an effect only if colors is set to a numerical array. Value should have the same units as colors and if set, `marker.cmin` must be set as well.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": null
                }
              ]
            },
            "cmid": {
              "description": "Sets the mid-point of the color domain by scaling `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if colors is set to a numerical array. Value should have the same units as colors. Has no effect when `marker.cauto` is `false`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": null
                }
              ]
            },
            "cmin": {
              "description": "Sets the lower bound of the color domain. Has an effect only if colors is set to a numerical array. Value should have the same units as colors and if set, `marker.cmax` must be set as well.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": null
                }
              ]
            },
            "coloraxis": {
              "description": "Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "string",
                  "default": null,
                  "pattern": "/^coloraxis([2-9]|[1-9][0-9]+)?$/"
                }
              ]
            },
            "colorbar": {
              "type": "object",
              "properties": {
                "bgcolor": {
                  "description": "Sets the color of padded area.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "bordercolor": {
                  "description": "Sets the axis line color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "borderwidth": {
                  "description": "Sets the width (in px) or the border enclosing this color bar.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 0
                    }
                  ]
                },
                "dtick": {
                  "description": "Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L<f>*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M<n>* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48*"
                },
                "exponentformat": {
                  "description": "Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "none",
                        "e",
                        "E",
                        "power",
                        "SI",
                        "B"
                      ],
                      "default": "B"
                    }
                  ]
                },
                "labelalias": {
                  "default": false,
                  "description": "Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax."
                },
                "len": {
                  "description": "Sets the length of the color bar This measure excludes the padding of both ends. That is, the color bar length is this length minus the padding on both ends.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "lenmode": {
                  "description": "Determines whether this color bar's length (i.e. the measure in the color variation direction) is set in units of plot *fraction* or in *pixels. Use `len` to set the value.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "fraction",
                        "pixels"
                      ],
                      "default": "fraction"
                    }
                  ]
                },
                "minexponent": {
                  "description": "Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 3
                    }
                  ]
                },
                "nticks": {
                  "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 0,
                      "default": 0
                    }
                  ]
                },
                "orientation": {
                  "description": "Sets the orientation of the colorbar.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "h",
                        "v"
                      ],
                      "default": "v"
                    }
                  ]
                },
                "outlinecolor": {
                  "description": "Sets the axis line color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "outlinewidth": {
                  "description": "Sets the width (in px) of the axis line.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "separatethousands": {
                  "description": "If \"true\", even 4-digit integers are separated",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": false
                    }
                  ]
                },
                "showexponent": {
                  "description": "If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "showticklabels": {
                  "description": "Determines whether or not the tick labels are drawn.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                },
                "showtickprefix": {
                  "description": "If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "showticksuffix": {
                  "description": "Same as `showtickprefix` but for tick suffixes.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "thickness": {
                  "description": "Sets the thickness of the color bar This measure excludes the size of the padding, ticks and labels.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 30
                    }
                  ]
                },
                "thicknessmode": {
                  "description": "Determines whether this color bar's thickness (i.e. the measure in the constant color direction) is set in units of plot *fraction* or in *pixels*. Use `thickness` to set the value.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "fraction",
                        "pixels"
                      ],
                      "default": "pixels"
                    }
                  ]
                },
                "tick0": {
                  "description": "Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L<f>* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears."
                },
                "tickangle": {
                  "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": -180,
                      "maximum": 180,
                      "default": "auto"
                    }
                  ]
                },
                "tickcolor": {
                  "description": "Sets the tick color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "tickfont": {
                  "type": "object",
                  "properties": {
                    "color": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    "family": {
                      "pattern": ".*\\S.*$",
                      "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                      "type": "string"
                    },
                    "lineposition": {
                      "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    "shadow": {
                      "default": "none",
                      "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                      "type": "string"
                    },
                    "size": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    "style": {
                      "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "textcase": {
                      "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "variant": {
                      "description": "Sets the variant of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "weight": {
                      "description": "Sets the weight (or boldness) of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    }
                  },
                  "additionalProperties": false
                },
                "tickformat": {
                  "default": "",
                  "description": "Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*",
                  "type": "string"
                },
                "tickformatstops": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "dtickrange": {
                        "description": "range [*min*, *max*], where *min*, *max* - dtick values which describe some zoom level, it is possible to omit *min* or *max* value by passing *null*",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "array",
                            "items": {},
                            "minItems": 2,
                            "maxItems": 2
                          }
                        ]
                      },
                      "enabled": {
                        "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "boolean",
                            "default": true
                          }
                        ]
                      },
                      "name": {
                        "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.",
                        "type": "string"
                      },
                      "templateitemname": {
                        "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.",
                        "type": "string"
                      },
                      "value": {
                        "default": "",
                        "description": "string - dtickformat for described zoom level, the same as *tickformat*",
                        "type": "string"
                      }
                    },
                    "additionalProperties": false
                  },
                  "minItems": 1
                },
                "ticklabeloverflow": {
                  "description": "Determines how we handle tick labels that would overflow either the graph div or the domain of the axis. The default value for inside tick labels is *hide past domain*. In other cases the default is *hide past div*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "allow",
                        "hide past div",
                        "hide past domain"
                      ]
                    }
                  ]
                },
                "ticklabelposition": {
                  "description": "Determines where tick labels are drawn relative to the ticks. Left and right options are used when `orientation` is *h*, top and bottom when `orientation` is *v*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "outside",
                        "inside",
                        "outside top",
                        "inside top",
                        "outside left",
                        "inside left",
                        "outside right",
                        "inside right",
                        "outside bottom",
                        "inside bottom"
                      ],
                      "default": "outside"
                    }
                  ]
                },
                "ticklabelstep": {
                  "description": "Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "default": 1
                    }
                  ]
                },
                "ticklen": {
                  "description": "Sets the tick length (in px).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 5
                    }
                  ]
                },
                "tickmode": {
                  "description": "Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "auto",
                        "linear",
                        "array"
                      ]
                    }
                  ]
                },
                "tickprefix": {
                  "default": "",
                  "description": "Sets a tick label prefix.",
                  "type": "string"
                },
                "ticks": {
                  "description": "Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "outside",
                        "inside",
                        ""
                      ],
                      "default": ""
                    }
                  ]
                },
                "ticksuffix": {
                  "default": "",
                  "description": "Sets a tick label suffix.",
                  "type": "string"
                },
                "ticktext": {
                  "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "string"
                          }
                        ]
                      }
                    }
                  ]
                },
                "ticktextsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.",
                  "type": "string"
                },
                "tickvals": {
                  "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "string"
                          }
                        ]
                      }
                    }
                  ]
                },
                "tickvalssrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.",
                  "type": "string"
                },
                "tickwidth": {
                  "description": "Sets the tick width (in px).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "title": {
                  "type": "object",
                  "properties": {
                    "font": {
                      "type": "object",
                      "properties": {
                        "color": {
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "$ref": "#/$defs/color"
                            }
                          ]
                        },
                        "family": {
                          "pattern": ".*\\S.*$",
                          "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                          "type": "string"
                        },
                        "lineposition": {
                          "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "oneOf": [
                                {
                                  "type": "string",
                                  "enum": [
                                    "none"
                                  ]
                                },
                                {
                                  "type": "string",
                                  "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                                }
                              ],
                              "default": "none"
                            }
                          ]
                        },
                        "shadow": {
                          "default": "none",
                          "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                          "type": "string"
                        },
                        "size": {
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "type": "number",
                              "minimum": 1
                            }
                          ]
                        },
                        "style": {
                          "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "italic"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "textcase": {
                          "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "word caps",
                                "upper",
                                "lower"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "variant": {
                          "description": "Sets the variant of the font.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "small-caps",
                                "all-small-caps",
                                "all-petite-caps",
                                "petite-caps",
                                "unicase"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "weight": {
                          "description": "Sets the weight (or boldness) of the font.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "type": "integer",
                              "minimum": 1,
                              "maximum": 1000,
                              "default": "normal"
                            }
                          ]
                        }
                      },
                      "additionalProperties": false
                    },
                    "side": {
                      "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and  defaults to *right* when `orientation` if *h*.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "right",
                            "top",
                            "bottom"
                          ]
                        }
                      ]
                    },
                    "text": {
                      "description": "Sets the title of the color bar.",
                      "type": "string"
                    }
                  },
                  "additionalProperties": false
                },
                "x": {
                  "description": "Sets the x position with respect to `xref` of the color bar (in plot fraction). When `xref` is *paper*, defaults to 1.02 when `orientation` is *v* and 0.5 when `orientation` is *h*. When `xref` is *container*, defaults to *1* when `orientation` is *v* and 0.5 when `orientation` is *h*. Must be between *0* and *1* if `xref` is *container* and between *-2* and *3* if `xref` is *paper*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number"
                    }
                  ]
                },
                "xanchor": {
                  "description": "Sets this color bar's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the color bar. Defaults to *left* when `orientation` is *v* and *center* when `orientation` is *h*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "left",
                        "center",
                        "right"
                      ]
                    }
                  ]
                },
                "xpad": {
                  "description": "Sets the amount of padding (in px) along the x direction.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 10
                    }
                  ]
                },
                "xref": {
                  "description": "Sets the container `x` refers to. *container* spans the entire `width` of the plot. *paper* refers to the width of the plotting area only.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "container",
                        "paper"
                      ],
                      "default": "paper"
                    }
                  ]
                },
                "y": {
                  "description": "Sets the y position with respect to `yref` of the color bar (in plot fraction). When `yref` is *paper*, defaults to 0.5 when `orientation` is *v* and 1.02 when `orientation` is *h*. When `yref` is *container*, defaults to 0.5 when `orientation` is *v* and 1 when `orientation` is *h*. Must be between *0* and *1* if `yref` is *container* and between *-2* and *3* if `yref` is *paper*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number"
                    }
                  ]
                },
                "yanchor": {
                  "description": "Sets this color bar's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the color bar. Defaults to *middle* when `orientation` is *v* and *bottom* when `orientation` is *h*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "top",
                        "middle",
                        "bottom"
                      ]
                    }
                  ]
                },
                "ypad": {
                  "description": "Sets the amount of padding (in px) along the y direction.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 10
                    }
                  ]
                },
                "yref": {
                  "description": "Sets the container `y` refers to. *container* spans the entire `height` of the plot. *paper* refers to the height of the plotting area only.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "container",
                        "paper"
                      ],
                      "default": "paper"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "colors": {
              "description": "Sets the color of each sector of this trace. If not specified, the default trace color set is used to pick the sector colors.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  }
                }
              ]
            },
            "colorscale": {
              "description": "Sets the colorscale. Has an effect only if colors is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/colorscale",
                  "default": null
                }
              ]
            },
            "colorssrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `colors`.",
              "type": "string"
            },
            "line": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the color of the line enclosing each sector. Defaults to the `paper_bgcolor` value.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "colorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `color`.",
                  "type": "string"
                },
                "width": {
                  "description": "Sets the width (in px) of the line enclosing each sector.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 0,
                          "default": 1
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 0,
                            "default": 1
                          }
                        ]
                      }
                    }
                  ]
                },
                "widthsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `width`.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "pattern": {
              "type": "object",
              "properties": {
                "bgcolor": {
                  "description": "When there is no colorscale sets the color of background pattern fill. Defaults to a `marker.color` background when `fillmode` is *overlay*. Otherwise, defaults to a transparent background.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "bgcolorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.",
                  "type": "string"
                },
                "fgcolor": {
                  "description": "When there is no colorscale sets the color of foreground pattern fill. Defaults to a `marker.color` background when `fillmode` is *replace*. Otherwise, defaults to dark grey or white to increase contrast with the `bgcolor`.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "fgcolorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `fgcolor`.",
                  "type": "string"
                },
                "fgopacity": {
                  "description": "Sets the opacity of the foreground pattern fill. Defaults to a 0.5 when `fillmode` is *overlay*. Otherwise, defaults to 1.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1
                    }
                  ]
                },
                "fillmode": {
                  "description": "Determines whether `marker.color` should be used as a default to `bgcolor` or a `fgcolor`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "replace",
                        "overlay"
                      ],
                      "default": "replace"
                    }
                  ]
                },
                "shape": {
                  "description": "Sets the shape of the pattern fill. By default, no pattern is used for filling the area.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "",
                            "/",
                            "\\",
                            "x",
                            "-",
                            "|",
                            "+",
                            "."
                          ],
                          "default": ""
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "",
                              "/",
                              "\\",
                              "x",
                              "-",
                              "|",
                              "+",
                              "."
                            ],
                            "default": ""
                          }
                        ]
                      }
                    }
                  ]
                },
                "shapesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `shape`.",
                  "type": "string"
                },
                "size": {
                  "description": "Sets the size of unit squares of the pattern fill in pixels, which corresponds to the interval of repetition of the pattern.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 0,
                          "default": 8
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 0,
                            "default": 8
                          }
                        ]
                      }
                    }
                  ]
                },
                "sizesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `size`.",
                  "type": "string"
                },
                "solidity": {
                  "description": "Sets the solidity of the pattern fill. Solidity is roughly the fraction of the area filled by the pattern. Solidity of 0 shows only the background color without pattern and solidty of 1 shows only the foreground color without pattern.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 0,
                          "maximum": 1,
                          "default": 0.3
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 0,
                            "maximum": 1,
                            "default": 0.3
                          }
                        ]
                      }
                    }
                  ]
                },
                "soliditysrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `solidity`.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "reversescale": {
              "description": "Reverses the color mapping if true. Has an effect only if colors is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            },
            "showscale": {
              "description": "Determines whether or not a colorbar is displayed for this trace. Has an effect only if colors is set to a numerical array.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "maxdepth": {
          "description": "Sets the number of rendered sectors from any given `level`. Set `maxdepth` to *-1* to render all the levels in the hierarchy.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "integer",
              "default": -1
            }
          ]
        },
        "metasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `meta`.",
          "type": "string"
        },
        "name": {
          "description": "Sets the trace name. The trace name appears as the legend item and on hover.",
          "type": "string"
        },
        "opacity": {
          "description": "Sets the opacity of the trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0,
              "maximum": 1,
              "default": 1
            }
          ]
        },
        "outsidetextfont": {
          "type": "object",
          "properties": {
            "color": {
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "colorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `color`.",
              "type": "string"
            },
            "family": {
              "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
              "oneOf": [
                {
                  "pattern": ".*\\S.*$",
                  "type": "string"
                },
                {
                  "type": "array",
                  "items": {
                    "pattern": ".*\\S.*$",
                    "type": "string"
                  }
                },
                {
                  "$ref": "#/$defs/query-string"
                }
              ]
            },
            "familysrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `family`.",
              "type": "string"
            },
            "lineposition": {
              "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "oneOf": [
                          {
                            "type": "string",
                            "enum": [
                              "none"
                            ]
                          },
                          {
                            "type": "string",
                            "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                          }
                        ],
                        "default": "none"
                      }
                    ]
                  }
                }
              ]
            },
            "linepositionsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.",
              "type": "string"
            },
            "shadow": {
              "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
              "oneOf": [
                {
                  "default": "none",
                  "type": "string"
                },
                {
                  "type": "array",
                  "items": {
                    "default": "none",
                    "type": "string"
                  }
                }
              ]
            },
            "shadowsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `shadow`.",
              "type": "string"
            },
            "size": {
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 1
                      }
                    ]
                  }
                }
              ]
            },
            "sizesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `size`.",
              "type": "string"
            },
            "style": {
              "description": "Sets whether a font should be styled with a normal or italic face from its family.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "italic"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "stylesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `style`.",
              "type": "string"
            },
            "textcase": {
              "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "word caps",
                          "upper",
                          "lower"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "textcasesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `textcase`.",
              "type": "string"
            },
            "variant": {
              "description": "Sets the variant of the font.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "small-caps",
                          "all-small-caps",
                          "all-petite-caps",
                          "petite-caps",
                          "unicase"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "variantsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `variant`.",
              "type": "string"
            },
            "weight": {
              "description": "Sets the weight (or boldness) of the font.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 1000,
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "weightsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `weight`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "parents": {
          "description": "Sets the parent sectors for each of the sectors. Empty string items '' are understood to reference the root node in the hierarchy. If `ids` is filled, `parents` items are understood to be \"ids\" themselves. When `ids` is not set, plotly attempts to find matching items in `labels`, but beware they must be unique.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "parentssrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `parents`.",
          "type": "string"
        },
        "root": {
          "type": "object",
          "properties": {
            "color": {
              "description": "sets the color of the root node for a sunburst/treemap/icicle trace. this has no effect when a colorscale is used to set the markers.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "rotation": {
          "description": "Rotates the whole diagram counterclockwise by some angle. By default the first slice starts at 3 o'clock.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": -180,
              "maximum": 180,
              "default": 0
            }
          ]
        },
        "sort": {
          "description": "Determines whether or not the sectors are reordered from largest to smallest.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "stream": {
          "type": "object",
          "properties": {
            "maxpoints": {
              "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 10000,
                  "default": 500
                }
              ]
            },
            "token": {
              "pattern": ".*\\S.*$",
              "description": "The stream id number links a data trace on a plot with a stream. See <https://chart-studio.plotly.com/settings> for more details.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "text": {
          "description": "Sets text elements associated with each sector. If trace `textinfo` contains a *text* flag, these elements will be seen on the chart. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "textfont": {
          "type": "object",
          "properties": {
            "color": {
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "colorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `color`.",
              "type": "string"
            },
            "family": {
              "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
              "oneOf": [
                {
                  "pattern": ".*\\S.*$",
                  "type": "string"
                },
                {
                  "type": "array",
                  "items": {
                    "pattern": ".*\\S.*$",
                    "type": "string"
                  }
                },
                {
                  "$ref": "#/$defs/query-string"
                }
              ]
            },
            "familysrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `family`.",
              "type": "string"
            },
            "lineposition": {
              "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "oneOf": [
                          {
                            "type": "string",
                            "enum": [
                              "none"
                            ]
                          },
                          {
                            "type": "string",
                            "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                          }
                        ],
                        "default": "none"
                      }
                    ]
                  }
                }
              ]
            },
            "linepositionsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.",
              "type": "string"
            },
            "shadow": {
              "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
              "oneOf": [
                {
                  "default": "none",
                  "type": "string"
                },
                {
                  "type": "array",
                  "items": {
                    "default": "none",
                    "type": "string"
                  }
                }
              ]
            },
            "shadowsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `shadow`.",
              "type": "string"
            },
            "size": {
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 1
                      }
                    ]
                  }
                }
              ]
            },
            "sizesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `size`.",
              "type": "string"
            },
            "style": {
              "description": "Sets whether a font should be styled with a normal or italic face from its family.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "italic"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "stylesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `style`.",
              "type": "string"
            },
            "textcase": {
              "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "word caps",
                          "upper",
                          "lower"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "textcasesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `textcase`.",
              "type": "string"
            },
            "variant": {
              "description": "Sets the variant of the font.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "small-caps",
                          "all-small-caps",
                          "all-petite-caps",
                          "petite-caps",
                          "unicase"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "variantsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `variant`.",
              "type": "string"
            },
            "weight": {
              "description": "Sets the weight (or boldness) of the font.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 1000,
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "weightsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `weight`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "textinfo": {
          "description": "Determines which trace information appear on the graph.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "oneOf": [
                {
                  "type": "string",
                  "enum": [
                    "none"
                  ]
                },
                {
                  "type": "string",
                  "pattern": "^(label|text|value|current path|percent root|percent entry|percent parent)(\\+(label|text|value|current path|percent root|percent entry|percent parent))*$"
                }
              ]
            }
          ]
        },
        "textsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `text`.",
          "type": "string"
        },
        "texttemplate": {
          "description": "Template string used for rendering the information text that appear on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". <https://github.com/d3/d3-format/tree/v1.4.5#d3-format> for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format> for details on the date formatting syntax. Every attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `currentPath`, `root`, `entry`, `percentRoot`, `percentEntry`, `percentParent`, `label` and `value`.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "texttemplatesrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.",
          "type": "string"
        },
        "uid": {
          "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.",
          "type": "string"
        },
        "uirevision": {
          "description": "Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves."
        },
        "values": {
          "description": "Sets the values associated with each of the sectors. Use with `branchvalues` to determine how the values are summed.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "valuessrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `values`.",
          "type": "string"
        },
        "visible": {
          "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                true,
                false,
                "legendonly"
              ],
              "default": true
            }
          ]
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false
    },
    "Surface": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "$id": "https://visivo.io/trace-properties/schema",
      "description": "A schema to validate plotly trace properties",
      "type": "object",
      "properties": {
        "type": {
          "const": "surface"
        },
        "autocolorscale": {
          "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": false
            }
          ]
        },
        "cauto": {
          "description": "Determines whether or not the color domain is computed with respect to the input data (here z or surfacecolor) or the bounds set in `cmin` and `cmax` Defaults to `false` when `cmin` and `cmax` are set by the user.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "cmax": {
          "description": "Sets the upper bound of the color domain. Value should have the same units as z or surfacecolor and if set, `cmin` must be set as well.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": null
            }
          ]
        },
        "cmid": {
          "description": "Sets the mid-point of the color domain by scaling `cmin` and/or `cmax` to be equidistant to this point. Value should have the same units as z or surfacecolor. Has no effect when `cauto` is `false`.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": null
            }
          ]
        },
        "cmin": {
          "description": "Sets the lower bound of the color domain. Value should have the same units as z or surfacecolor and if set, `cmax` must be set as well.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": null
            }
          ]
        },
        "coloraxis": {
          "description": "Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": null,
              "pattern": "/^coloraxis([2-9]|[1-9][0-9]+)?$/"
            }
          ]
        },
        "colorbar": {
          "type": "object",
          "properties": {
            "bgcolor": {
              "description": "Sets the color of padded area.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "bordercolor": {
              "description": "Sets the axis line color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "borderwidth": {
              "description": "Sets the width (in px) or the border enclosing this color bar.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "dtick": {
              "description": "Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L<f>*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M<n>* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48*"
            },
            "exponentformat": {
              "description": "Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "none",
                    "e",
                    "E",
                    "power",
                    "SI",
                    "B"
                  ],
                  "default": "B"
                }
              ]
            },
            "labelalias": {
              "default": false,
              "description": "Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax."
            },
            "len": {
              "description": "Sets the length of the color bar This measure excludes the padding of both ends. That is, the color bar length is this length minus the padding on both ends.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 1
                }
              ]
            },
            "lenmode": {
              "description": "Determines whether this color bar's length (i.e. the measure in the color variation direction) is set in units of plot *fraction* or in *pixels. Use `len` to set the value.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "fraction",
                    "pixels"
                  ],
                  "default": "fraction"
                }
              ]
            },
            "minexponent": {
              "description": "Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 3
                }
              ]
            },
            "nticks": {
              "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "orientation": {
              "description": "Sets the orientation of the colorbar.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "h",
                    "v"
                  ],
                  "default": "v"
                }
              ]
            },
            "outlinecolor": {
              "description": "Sets the axis line color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "outlinewidth": {
              "description": "Sets the width (in px) of the axis line.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 1
                }
              ]
            },
            "separatethousands": {
              "description": "If \"true\", even 4-digit integers are separated",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            },
            "showexponent": {
              "description": "If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "all",
                    "first",
                    "last",
                    "none"
                  ],
                  "default": "all"
                }
              ]
            },
            "showticklabels": {
              "description": "Determines whether or not the tick labels are drawn.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": true
                }
              ]
            },
            "showtickprefix": {
              "description": "If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "all",
                    "first",
                    "last",
                    "none"
                  ],
                  "default": "all"
                }
              ]
            },
            "showticksuffix": {
              "description": "Same as `showtickprefix` but for tick suffixes.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "all",
                    "first",
                    "last",
                    "none"
                  ],
                  "default": "all"
                }
              ]
            },
            "thickness": {
              "description": "Sets the thickness of the color bar This measure excludes the size of the padding, ticks and labels.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 30
                }
              ]
            },
            "thicknessmode": {
              "description": "Determines whether this color bar's thickness (i.e. the measure in the constant color direction) is set in units of plot *fraction* or in *pixels*. Use `thickness` to set the value.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "fraction",
                    "pixels"
                  ],
                  "default": "pixels"
                }
              ]
            },
            "tick0": {
              "description": "Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L<f>* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears."
            },
            "tickangle": {
              "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": -180,
                  "maximum": 180,
                  "default": "auto"
                }
              ]
            },
            "tickcolor": {
              "description": "Sets the tick color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "tickfont": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "family": {
                  "pattern": ".*\\S.*$",
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                "shadow": {
                  "default": "none",
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "tickformat": {
              "default": "",
              "description": "Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*",
              "type": "string"
            },
            "tickformatstops": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "dtickrange": {
                    "description": "range [*min*, *max*], where *min*, *max* - dtick values which describe some zoom level, it is possible to omit *min* or *max* value by passing *null*",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "array",
                        "items": {},
                        "minItems": 2,
                        "maxItems": 2
                      }
                    ]
                  },
                  "enabled": {
                    "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "boolean",
                        "default": true
                      }
                    ]
                  },
                  "name": {
                    "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.",
                    "type": "string"
                  },
                  "templateitemname": {
                    "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.",
                    "type": "string"
                  },
                  "value": {
                    "default": "",
                    "description": "string - dtickformat for described zoom level, the same as *tickformat*",
                    "type": "string"
                  }
                },
                "additionalProperties": false
              },
              "minItems": 1
            },
            "ticklabeloverflow": {
              "description": "Determines how we handle tick labels that would overflow either the graph div or the domain of the axis. The default value for inside tick labels is *hide past domain*. In other cases the default is *hide past div*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "allow",
                    "hide past div",
                    "hide past domain"
                  ]
                }
              ]
            },
            "ticklabelposition": {
              "description": "Determines where tick labels are drawn relative to the ticks. Left and right options are used when `orientation` is *h*, top and bottom when `orientation` is *v*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "outside",
                    "inside",
                    "outside top",
                    "inside top",
                    "outside left",
                    "inside left",
                    "outside right",
                    "inside right",
                    "outside bottom",
                    "inside bottom"
                  ],
                  "default": "outside"
                }
              ]
            },
            "ticklabelstep": {
              "description": "Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 1,
                  "default": 1
                }
              ]
            },
            "ticklen": {
              "description": "Sets the tick length (in px).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 5
                }
              ]
            },
            "tickmode": {
              "description": "Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "auto",
                    "linear",
                    "array"
                  ]
                }
              ]
            },
            "tickprefix": {
              "default": "",
              "description": "Sets a tick label prefix.",
              "type": "string"
            },
            "ticks": {
              "description": "Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "outside",
                    "inside",
                    ""
                  ],
                  "default": ""
                }
              ]
            },
            "ticksuffix": {
              "default": "",
              "description": "Sets a tick label suffix.",
              "type": "string"
            },
            "ticktext": {
              "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  }
                }
              ]
            },
            "ticktextsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.",
              "type": "string"
            },
            "tickvals": {
              "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  }
                }
              ]
            },
            "tickvalssrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.",
              "type": "string"
            },
            "tickwidth": {
              "description": "Sets the tick width (in px).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 1
                }
              ]
            },
            "title": {
              "type": "object",
              "properties": {
                "font": {
                  "type": "object",
                  "properties": {
                    "color": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    "family": {
                      "pattern": ".*\\S.*$",
                      "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                      "type": "string"
                    },
                    "lineposition": {
                      "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    "shadow": {
                      "default": "none",
                      "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                      "type": "string"
                    },
                    "size": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    "style": {
                      "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "textcase": {
                      "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "variant": {
                      "description": "Sets the variant of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "weight": {
                      "description": "Sets the weight (or boldness) of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    }
                  },
                  "additionalProperties": false
                },
                "side": {
                  "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and  defaults to *right* when `orientation` if *h*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "right",
                        "top",
                        "bottom"
                      ]
                    }
                  ]
                },
                "text": {
                  "description": "Sets the title of the color bar.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "x": {
              "description": "Sets the x position with respect to `xref` of the color bar (in plot fraction). When `xref` is *paper*, defaults to 1.02 when `orientation` is *v* and 0.5 when `orientation` is *h*. When `xref` is *container*, defaults to *1* when `orientation` is *v* and 0.5 when `orientation` is *h*. Must be between *0* and *1* if `xref` is *container* and between *-2* and *3* if `xref` is *paper*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number"
                }
              ]
            },
            "xanchor": {
              "description": "Sets this color bar's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the color bar. Defaults to *left* when `orientation` is *v* and *center* when `orientation` is *h*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "left",
                    "center",
                    "right"
                  ]
                }
              ]
            },
            "xpad": {
              "description": "Sets the amount of padding (in px) along the x direction.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 10
                }
              ]
            },
            "xref": {
              "description": "Sets the container `x` refers to. *container* spans the entire `width` of the plot. *paper* refers to the width of the plotting area only.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "container",
                    "paper"
                  ],
                  "default": "paper"
                }
              ]
            },
            "y": {
              "description": "Sets the y position with respect to `yref` of the color bar (in plot fraction). When `yref` is *paper*, defaults to 0.5 when `orientation` is *v* and 1.02 when `orientation` is *h*. When `yref` is *container*, defaults to 0.5 when `orientation` is *v* and 1 when `orientation` is *h*. Must be between *0* and *1* if `yref` is *container* and between *-2* and *3* if `yref` is *paper*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number"
                }
              ]
            },
            "yanchor": {
              "description": "Sets this color bar's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the color bar. Defaults to *middle* when `orientation` is *v* and *bottom* when `orientation` is *h*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "top",
                    "middle",
                    "bottom"
                  ]
                }
              ]
            },
            "ypad": {
              "description": "Sets the amount of padding (in px) along the y direction.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 10
                }
              ]
            },
            "yref": {
              "description": "Sets the container `y` refers to. *container* spans the entire `height` of the plot. *paper* refers to the height of the plotting area only.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "container",
                    "paper"
                  ],
                  "default": "paper"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "colorscale": {
          "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "$ref": "#/$defs/colorscale",
              "default": null
            }
          ]
        },
        "connectgaps": {
          "description": "Determines whether or not gaps (i.e. {nan} or missing values) in the `z` data are filled in.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": false
            }
          ]
        },
        "contours": {
          "type": "object",
          "properties": {
            "x": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the color of the contour lines.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "end": {
                  "description": "Sets the end contour level value. Must be more than `contours.start`",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "default": null
                    }
                  ]
                },
                "highlight": {
                  "description": "Determines whether or not contour lines about the x dimension are highlighted on hover.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                },
                "highlightcolor": {
                  "description": "Sets the color of the highlighted contour lines.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "highlightwidth": {
                  "description": "Sets the width of the highlighted contour lines.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1,
                      "maximum": 16,
                      "default": 2
                    }
                  ]
                },
                "project": {
                  "type": "object",
                  "properties": {
                    "x": {
                      "description": "Determines whether or not these contour lines are projected on the x plane. If `highlight` is set to *true* (the default), the projected lines are shown on hover. If `show` is set to *true*, the projected lines are shown in permanence.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "boolean",
                          "default": false
                        }
                      ]
                    },
                    "y": {
                      "description": "Determines whether or not these contour lines are projected on the y plane. If `highlight` is set to *true* (the default), the projected lines are shown on hover. If `show` is set to *true*, the projected lines are shown in permanence.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "boolean",
                          "default": false
                        }
                      ]
                    },
                    "z": {
                      "description": "Determines whether or not these contour lines are projected on the z plane. If `highlight` is set to *true* (the default), the projected lines are shown on hover. If `show` is set to *true*, the projected lines are shown in permanence.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "boolean",
                          "default": false
                        }
                      ]
                    }
                  },
                  "additionalProperties": false
                },
                "show": {
                  "description": "Determines whether or not contour lines about the x dimension are drawn.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": false
                    }
                  ]
                },
                "size": {
                  "description": "Sets the step between each contour level. Must be positive.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": null
                    }
                  ]
                },
                "start": {
                  "description": "Sets the starting contour level value. Must be less than `contours.end`",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "default": null
                    }
                  ]
                },
                "usecolormap": {
                  "description": "An alternate to *color*. Determines whether or not the contour lines are colored using the trace *colorscale*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": false
                    }
                  ]
                },
                "width": {
                  "description": "Sets the width of the contour lines.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1,
                      "maximum": 16,
                      "default": 2
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "y": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the color of the contour lines.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "end": {
                  "description": "Sets the end contour level value. Must be more than `contours.start`",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "default": null
                    }
                  ]
                },
                "highlight": {
                  "description": "Determines whether or not contour lines about the y dimension are highlighted on hover.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                },
                "highlightcolor": {
                  "description": "Sets the color of the highlighted contour lines.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "highlightwidth": {
                  "description": "Sets the width of the highlighted contour lines.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1,
                      "maximum": 16,
                      "default": 2
                    }
                  ]
                },
                "project": {
                  "type": "object",
                  "properties": {
                    "x": {
                      "description": "Determines whether or not these contour lines are projected on the x plane. If `highlight` is set to *true* (the default), the projected lines are shown on hover. If `show` is set to *true*, the projected lines are shown in permanence.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "boolean",
                          "default": false
                        }
                      ]
                    },
                    "y": {
                      "description": "Determines whether or not these contour lines are projected on the y plane. If `highlight` is set to *true* (the default), the projected lines are shown on hover. If `show` is set to *true*, the projected lines are shown in permanence.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "boolean",
                          "default": false
                        }
                      ]
                    },
                    "z": {
                      "description": "Determines whether or not these contour lines are projected on the z plane. If `highlight` is set to *true* (the default), the projected lines are shown on hover. If `show` is set to *true*, the projected lines are shown in permanence.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "boolean",
                          "default": false
                        }
                      ]
                    }
                  },
                  "additionalProperties": false
                },
                "show": {
                  "description": "Determines whether or not contour lines about the y dimension are drawn.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": false
                    }
                  ]
                },
                "size": {
                  "description": "Sets the step between each contour level. Must be positive.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": null
                    }
                  ]
                },
                "start": {
                  "description": "Sets the starting contour level value. Must be less than `contours.end`",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "default": null
                    }
                  ]
                },
                "usecolormap": {
                  "description": "An alternate to *color*. Determines whether or not the contour lines are colored using the trace *colorscale*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": false
                    }
                  ]
                },
                "width": {
                  "description": "Sets the width of the contour lines.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1,
                      "maximum": 16,
                      "default": 2
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "z": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the color of the contour lines.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "end": {
                  "description": "Sets the end contour level value. Must be more than `contours.start`",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "default": null
                    }
                  ]
                },
                "highlight": {
                  "description": "Determines whether or not contour lines about the z dimension are highlighted on hover.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                },
                "highlightcolor": {
                  "description": "Sets the color of the highlighted contour lines.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "highlightwidth": {
                  "description": "Sets the width of the highlighted contour lines.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1,
                      "maximum": 16,
                      "default": 2
                    }
                  ]
                },
                "project": {
                  "type": "object",
                  "properties": {
                    "x": {
                      "description": "Determines whether or not these contour lines are projected on the x plane. If `highlight` is set to *true* (the default), the projected lines are shown on hover. If `show` is set to *true*, the projected lines are shown in permanence.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "boolean",
                          "default": false
                        }
                      ]
                    },
                    "y": {
                      "description": "Determines whether or not these contour lines are projected on the y plane. If `highlight` is set to *true* (the default), the projected lines are shown on hover. If `show` is set to *true*, the projected lines are shown in permanence.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "boolean",
                          "default": false
                        }
                      ]
                    },
                    "z": {
                      "description": "Determines whether or not these contour lines are projected on the z plane. If `highlight` is set to *true* (the default), the projected lines are shown on hover. If `show` is set to *true*, the projected lines are shown in permanence.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "boolean",
                          "default": false
                        }
                      ]
                    }
                  },
                  "additionalProperties": false
                },
                "show": {
                  "description": "Determines whether or not contour lines about the z dimension are drawn.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": false
                    }
                  ]
                },
                "size": {
                  "description": "Sets the step between each contour level. Must be positive.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": null
                    }
                  ]
                },
                "start": {
                  "description": "Sets the starting contour level value. Must be less than `contours.end`",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "default": null
                    }
                  ]
                },
                "usecolormap": {
                  "description": "An alternate to *color*. Determines whether or not the contour lines are colored using the trace *colorscale*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": false
                    }
                  ]
                },
                "width": {
                  "description": "Sets the width of the contour lines.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1,
                      "maximum": 16,
                      "default": 2
                    }
                  ]
                }
              },
              "additionalProperties": false
            }
          },
          "additionalProperties": false
        },
        "customdata": {
          "description": "Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "customdatasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `customdata`.",
          "type": "string"
        },
        "hidesurface": {
          "description": "Determines whether or not a surface is drawn. For example, set `hidesurface` to *false* `contours.x.show` to *true* and `contours.y.show` to *true* to draw a wire frame plot.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": false
            }
          ]
        },
        "hoverinfo": {
          "description": "Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired.",
          "oneOf": [
            {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "oneOf": [
                    {
                      "type": "string",
                      "enum": [
                        "all",
                        "none",
                        "skip"
                      ]
                    },
                    {
                      "type": "string",
                      "pattern": "^(x|y|z|text|name)(\\+(x|y|z|text|name))*$"
                    }
                  ],
                  "default": "all"
                }
              ]
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "oneOf": [
                      {
                        "type": "string",
                        "enum": [
                          "all",
                          "none",
                          "skip"
                        ]
                      },
                      {
                        "type": "string",
                        "pattern": "^(x|y|z|text|name)(\\+(x|y|z|text|name))*$"
                      }
                    ],
                    "default": "all"
                  }
                ]
              }
            }
          ]
        },
        "hoverinfosrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.",
          "type": "string"
        },
        "hoverlabel": {
          "type": "object",
          "properties": {
            "align": {
              "description": "Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "left",
                        "right",
                        "auto"
                      ],
                      "default": "auto"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "left",
                          "right",
                          "auto"
                        ],
                        "default": "auto"
                      }
                    ]
                  }
                }
              ]
            },
            "alignsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `align`.",
              "type": "string"
            },
            "bgcolor": {
              "description": "Sets the background color of the hover labels for this trace",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "bgcolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.",
              "type": "string"
            },
            "bordercolor": {
              "description": "Sets the border color of the hover labels for this trace.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "bordercolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.",
              "type": "string"
            },
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "colorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `color`.",
                  "type": "string"
                },
                "family": {
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "oneOf": [
                    {
                      "pattern": ".*\\S.*$",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "pattern": ".*\\S.*$",
                        "type": "string"
                      }
                    },
                    {
                      "$ref": "#/$defs/query-string"
                    }
                  ]
                },
                "familysrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `family`.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "oneOf": [
                              {
                                "type": "string",
                                "enum": [
                                  "none"
                                ]
                              },
                              {
                                "type": "string",
                                "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                              }
                            ],
                            "default": "none"
                          }
                        ]
                      }
                    }
                  ]
                },
                "linepositionsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.",
                  "type": "string"
                },
                "shadow": {
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "oneOf": [
                    {
                      "default": "none",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "default": "none",
                        "type": "string"
                      }
                    }
                  ]
                },
                "shadowsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `shadow`.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 1
                          }
                        ]
                      }
                    }
                  ]
                },
                "sizesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `size`.",
                  "type": "string"
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "italic"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "stylesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `style`.",
                  "type": "string"
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "word caps",
                              "upper",
                              "lower"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "textcasesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `textcase`.",
                  "type": "string"
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "small-caps",
                              "all-small-caps",
                              "all-petite-caps",
                              "petite-caps",
                              "unicase"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "variantsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `variant`.",
                  "type": "string"
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 1000,
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "weightsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `weight`.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "namelength": {
              "description": "Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": -1,
                      "default": 15
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "integer",
                        "minimum": -1,
                        "default": 15
                      }
                    ]
                  }
                }
              ]
            },
            "namelengthsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `namelength`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "hovertemplate": {
          "description": "Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". <https://github.com/d3/d3-format/tree/v1.4.5#d3-format> for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format> for details on the date formatting syntax. The variables available in `hovertemplate` are the ones emitted as event data described at this link <https://plotly.com/javascript/plotlyjs-events/#event-data>. Additionally, every attributes that can be specified per-point (the ones that are `arrayOk: true`) are available.  Anything contained in tag `<extra>` is displayed in the secondary box, for example \"<extra>{fullData.name}</extra>\". To hide the secondary box completely, use an empty tag `<extra></extra>`.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "hovertemplatesrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.",
          "type": "string"
        },
        "hovertext": {
          "description": "Same as `text`.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "hovertextsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.",
          "type": "string"
        },
        "ids": {
          "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "idssrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `ids`.",
          "type": "string"
        },
        "legend": {
          "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "legend",
              "pattern": "^legend([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "legendgroup": {
          "default": "",
          "description": "Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items.",
          "type": "string"
        },
        "legendgrouptitle": {
          "type": "object",
          "properties": {
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "family": {
                  "pattern": ".*\\S.*$",
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                "shadow": {
                  "default": "none",
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "text": {
              "default": "",
              "description": "Sets the title of the legend group.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "legendrank": {
          "description": "Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": 1000
            }
          ]
        },
        "legendwidth": {
          "description": "Sets the width (in px or fraction) of the legend for this trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0
            }
          ]
        },
        "lighting": {
          "type": "object",
          "properties": {
            "ambient": {
              "description": "Ambient light increases overall color visibility but can wash out the image.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 1,
                  "default": 0.8
                }
              ]
            },
            "diffuse": {
              "description": "Represents the extent that incident rays are reflected in a range of angles.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 1,
                  "default": 0.8
                }
              ]
            },
            "fresnel": {
              "description": "Represents the reflectance as a dependency of the viewing angle; e.g. paper is reflective when viewing it from the edge of the paper (almost 90 degrees), causing shine.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 5,
                  "default": 0.2
                }
              ]
            },
            "roughness": {
              "description": "Alters specular reflection; the rougher the surface, the wider and less contrasty the shine.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 1,
                  "default": 0.5
                }
              ]
            },
            "specular": {
              "description": "Represents the level that incident rays are reflected in a single direction, causing shine.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 2,
                  "default": 0.05
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "lightposition": {
          "type": "object",
          "properties": {
            "x": {
              "description": "Numeric vector, representing the X coordinate for each vertex.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": -100000,
                  "maximum": 100000,
                  "default": 10
                }
              ]
            },
            "y": {
              "description": "Numeric vector, representing the Y coordinate for each vertex.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": -100000,
                  "maximum": 100000,
                  "default": 10000
                }
              ]
            },
            "z": {
              "description": "Numeric vector, representing the Z coordinate for each vertex.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": -100000,
                  "maximum": 100000,
                  "default": 0
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "metasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `meta`.",
          "type": "string"
        },
        "name": {
          "description": "Sets the trace name. The trace name appears as the legend item and on hover.",
          "type": "string"
        },
        "opacity": {
          "description": "Sets the opacity of the surface. Please note that in the case of using high `opacity` values for example a value greater than or equal to 0.5 on two surfaces (and 0.25 with four surfaces), an overlay of multiple transparent surfaces may not perfectly be sorted in depth by the webgl API. This behavior may be improved in the near future and is subject to change.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0,
              "maximum": 1,
              "default": 1
            }
          ]
        },
        "opacityscale": {
          "description": "Sets the opacityscale. The opacityscale must be an array containing arrays mapping a normalized value to an opacity value. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 1], [0.5, 0.2], [1, 1]]` means that higher/lower values would have higher opacity values and those in the middle would be more transparent Alternatively, `opacityscale` may be a palette name string of the following list: 'min', 'max', 'extremes' and 'uniform'. The default is 'uniform'."
        },
        "reversescale": {
          "description": "Reverses the color mapping if true. If true, `cmin` will correspond to the last color in the array and `cmax` will correspond to the first color.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": false
            }
          ]
        },
        "scene": {
          "description": "Sets a reference between this trace's 3D coordinate system and a 3D scene. If *scene* (the default value), the (x,y,z) coordinates refer to `layout.scene`. If *scene2*, the (x,y,z) coordinates refer to `layout.scene2`, and so on.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "scene",
              "pattern": "^scene([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "showlegend": {
          "description": "Determines whether or not an item corresponding to this trace is shown in the legend.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": false
            }
          ]
        },
        "showscale": {
          "description": "Determines whether or not a colorbar is displayed for this trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "stream": {
          "type": "object",
          "properties": {
            "maxpoints": {
              "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 10000,
                  "default": 500
                }
              ]
            },
            "token": {
              "pattern": ".*\\S.*$",
              "description": "The stream id number links a data trace on a plot with a stream. See <https://chart-studio.plotly.com/settings> for more details.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "surfacecolor": {
          "description": "Sets the surface color values, used for setting a color scale independent of `z`.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "surfacecolorsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `surfacecolor`.",
          "type": "string"
        },
        "text": {
          "description": "Sets the text elements associated with each z value. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "textsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `text`.",
          "type": "string"
        },
        "uid": {
          "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.",
          "type": "string"
        },
        "uirevision": {
          "description": "Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves."
        },
        "visible": {
          "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                true,
                false,
                "legendonly"
              ],
              "default": true
            }
          ]
        },
        "x": {
          "description": "Sets the x coordinates.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "xcalendar": {
          "description": "Sets the calendar system to use with `x` date data.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "chinese",
                "coptic",
                "discworld",
                "ethiopian",
                "gregorian",
                "hebrew",
                "islamic",
                "jalali",
                "julian",
                "mayan",
                "nanakshahi",
                "nepali",
                "persian",
                "taiwan",
                "thai",
                "ummalqura"
              ],
              "default": "gregorian"
            }
          ]
        },
        "xhoverformat": {
          "default": "",
          "description": "Sets the hover text formatting rulefor `x`  using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.",
          "type": "string"
        },
        "xsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `x`.",
          "type": "string"
        },
        "y": {
          "description": "Sets the y coordinates.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "ycalendar": {
          "description": "Sets the calendar system to use with `y` date data.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "chinese",
                "coptic",
                "discworld",
                "ethiopian",
                "gregorian",
                "hebrew",
                "islamic",
                "jalali",
                "julian",
                "mayan",
                "nanakshahi",
                "nepali",
                "persian",
                "taiwan",
                "thai",
                "ummalqura"
              ],
              "default": "gregorian"
            }
          ]
        },
        "yhoverformat": {
          "default": "",
          "description": "Sets the hover text formatting rulefor `y`  using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.",
          "type": "string"
        },
        "ysrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `y`.",
          "type": "string"
        },
        "z": {
          "description": "Sets the z coordinates.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "zcalendar": {
          "description": "Sets the calendar system to use with `z` date data.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "chinese",
                "coptic",
                "discworld",
                "ethiopian",
                "gregorian",
                "hebrew",
                "islamic",
                "jalali",
                "julian",
                "mayan",
                "nanakshahi",
                "nepali",
                "persian",
                "taiwan",
                "thai",
                "ummalqura"
              ],
              "default": "gregorian"
            }
          ]
        },
        "zhoverformat": {
          "default": "",
          "description": "Sets the hover text formatting rulefor `z`  using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `zaxis.hoverformat`.",
          "type": "string"
        },
        "zsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `z`.",
          "type": "string"
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false
    },
    "Treemap": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "$id": "https://visivo.io/trace-properties/schema",
      "description": "A schema to validate plotly trace properties",
      "type": "object",
      "properties": {
        "type": {
          "const": "treemap"
        },
        "branchvalues": {
          "description": "Determines how the items in `values` are summed. When set to *total*, items in `values` are taken to be value of all its descendants. When set to *remainder*, items in `values` corresponding to the root and the branches sectors are taken to be the extra part not part of the sum of the values at their leaves.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "remainder",
                "total"
              ],
              "default": "remainder"
            }
          ]
        },
        "count": {
          "description": "Determines default for `values` when it is not provided, by inferring a 1 for each of the *leaves* and/or *branches*, otherwise 0.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "pattern": "^(branches|leaves)(\\+(branches|leaves))*$",
              "default": "leaves"
            }
          ]
        },
        "customdata": {
          "description": "Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "customdatasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `customdata`.",
          "type": "string"
        },
        "domain": {
          "type": "object",
          "properties": {
            "column": {
              "description": "If there is a layout grid, use the domain for this column in the grid for this treemap trace .",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "row": {
              "description": "If there is a layout grid, use the domain for this row in the grid for this treemap trace .",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "x": {
              "description": "Sets the horizontal domain of this treemap trace (in plot fraction).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 1
                      }
                    ]
                  },
                  "minItems": 2,
                  "maxItems": 2,
                  "default": [
                    0,
                    1
                  ]
                }
              ]
            },
            "y": {
              "description": "Sets the vertical domain of this treemap trace (in plot fraction).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 1
                      }
                    ]
                  },
                  "minItems": 2,
                  "maxItems": 2,
                  "default": [
                    0,
                    1
                  ]
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "hoverinfo": {
          "description": "Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired.",
          "oneOf": [
            {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "oneOf": [
                    {
                      "type": "string",
                      "enum": [
                        "all",
                        "none",
                        "skip"
                      ]
                    },
                    {
                      "type": "string",
                      "pattern": "^(label|text|value|name|current path|percent root|percent entry|percent parent)(\\+(label|text|value|name|current path|percent root|percent entry|percent parent))*$"
                    }
                  ],
                  "default": "label+text+value+name"
                }
              ]
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "oneOf": [
                      {
                        "type": "string",
                        "enum": [
                          "all",
                          "none",
                          "skip"
                        ]
                      },
                      {
                        "type": "string",
                        "pattern": "^(label|text|value|name|current path|percent root|percent entry|percent parent)(\\+(label|text|value|name|current path|percent root|percent entry|percent parent))*$"
                      }
                    ],
                    "default": "label+text+value+name"
                  }
                ]
              }
            }
          ]
        },
        "hoverinfosrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.",
          "type": "string"
        },
        "hoverlabel": {
          "type": "object",
          "properties": {
            "align": {
              "description": "Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "left",
                        "right",
                        "auto"
                      ],
                      "default": "auto"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "left",
                          "right",
                          "auto"
                        ],
                        "default": "auto"
                      }
                    ]
                  }
                }
              ]
            },
            "alignsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `align`.",
              "type": "string"
            },
            "bgcolor": {
              "description": "Sets the background color of the hover labels for this trace",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "bgcolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.",
              "type": "string"
            },
            "bordercolor": {
              "description": "Sets the border color of the hover labels for this trace.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "bordercolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.",
              "type": "string"
            },
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "colorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `color`.",
                  "type": "string"
                },
                "family": {
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "oneOf": [
                    {
                      "pattern": ".*\\S.*$",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "pattern": ".*\\S.*$",
                        "type": "string"
                      }
                    },
                    {
                      "$ref": "#/$defs/query-string"
                    }
                  ]
                },
                "familysrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `family`.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "oneOf": [
                              {
                                "type": "string",
                                "enum": [
                                  "none"
                                ]
                              },
                              {
                                "type": "string",
                                "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                              }
                            ],
                            "default": "none"
                          }
                        ]
                      }
                    }
                  ]
                },
                "linepositionsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.",
                  "type": "string"
                },
                "shadow": {
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "oneOf": [
                    {
                      "default": "none",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "default": "none",
                        "type": "string"
                      }
                    }
                  ]
                },
                "shadowsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `shadow`.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 1
                          }
                        ]
                      }
                    }
                  ]
                },
                "sizesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `size`.",
                  "type": "string"
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "italic"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "stylesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `style`.",
                  "type": "string"
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "word caps",
                              "upper",
                              "lower"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "textcasesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `textcase`.",
                  "type": "string"
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "small-caps",
                              "all-small-caps",
                              "all-petite-caps",
                              "petite-caps",
                              "unicase"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "variantsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `variant`.",
                  "type": "string"
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 1000,
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "weightsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `weight`.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "namelength": {
              "description": "Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": -1,
                      "default": 15
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "integer",
                        "minimum": -1,
                        "default": 15
                      }
                    ]
                  }
                }
              ]
            },
            "namelengthsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `namelength`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "hovertemplate": {
          "description": "Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". <https://github.com/d3/d3-format/tree/v1.4.5#d3-format> for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format> for details on the date formatting syntax. The variables available in `hovertemplate` are the ones emitted as event data described at this link <https://plotly.com/javascript/plotlyjs-events/#event-data>. Additionally, every attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `currentPath`, `root`, `entry`, `percentRoot`, `percentEntry` and `percentParent`. Anything contained in tag `<extra>` is displayed in the secondary box, for example \"<extra>{fullData.name}</extra>\". To hide the secondary box completely, use an empty tag `<extra></extra>`.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "hovertemplatesrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.",
          "type": "string"
        },
        "hovertext": {
          "description": "Sets hover text elements associated with each sector. If a single string, the same string appears for all data points. If an array of string, the items are mapped in order of this trace's sectors. To be seen, trace `hoverinfo` must contain a *text* flag.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "hovertextsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.",
          "type": "string"
        },
        "ids": {
          "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "idssrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `ids`.",
          "type": "string"
        },
        "insidetextfont": {
          "type": "object",
          "properties": {
            "color": {
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "colorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `color`.",
              "type": "string"
            },
            "family": {
              "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
              "oneOf": [
                {
                  "pattern": ".*\\S.*$",
                  "type": "string"
                },
                {
                  "type": "array",
                  "items": {
                    "pattern": ".*\\S.*$",
                    "type": "string"
                  }
                },
                {
                  "$ref": "#/$defs/query-string"
                }
              ]
            },
            "familysrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `family`.",
              "type": "string"
            },
            "lineposition": {
              "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "oneOf": [
                          {
                            "type": "string",
                            "enum": [
                              "none"
                            ]
                          },
                          {
                            "type": "string",
                            "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                          }
                        ],
                        "default": "none"
                      }
                    ]
                  }
                }
              ]
            },
            "linepositionsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.",
              "type": "string"
            },
            "shadow": {
              "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
              "oneOf": [
                {
                  "default": "none",
                  "type": "string"
                },
                {
                  "type": "array",
                  "items": {
                    "default": "none",
                    "type": "string"
                  }
                }
              ]
            },
            "shadowsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `shadow`.",
              "type": "string"
            },
            "size": {
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 1
                      }
                    ]
                  }
                }
              ]
            },
            "sizesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `size`.",
              "type": "string"
            },
            "style": {
              "description": "Sets whether a font should be styled with a normal or italic face from its family.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "italic"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "stylesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `style`.",
              "type": "string"
            },
            "textcase": {
              "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "word caps",
                          "upper",
                          "lower"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "textcasesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `textcase`.",
              "type": "string"
            },
            "variant": {
              "description": "Sets the variant of the font.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "small-caps",
                          "all-small-caps",
                          "all-petite-caps",
                          "petite-caps",
                          "unicase"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "variantsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `variant`.",
              "type": "string"
            },
            "weight": {
              "description": "Sets the weight (or boldness) of the font.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 1000,
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "weightsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `weight`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "labels": {
          "description": "Sets the labels of each of the sectors.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "labelssrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `labels`.",
          "type": "string"
        },
        "legend": {
          "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "legend",
              "pattern": "^legend([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "legendgrouptitle": {
          "type": "object",
          "properties": {
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "family": {
                  "pattern": ".*\\S.*$",
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                "shadow": {
                  "default": "none",
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "text": {
              "default": "",
              "description": "Sets the title of the legend group.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "legendrank": {
          "description": "Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": 1000
            }
          ]
        },
        "legendwidth": {
          "description": "Sets the width (in px or fraction) of the legend for this trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0
            }
          ]
        },
        "level": {
          "description": "Sets the level from which this trace hierarchy is rendered. Set `level` to `''` to start from the root node in the hierarchy. Must be an \"id\" if `ids` is filled in, otherwise plotly attempts to find a matching item in `labels`."
        },
        "marker": {
          "type": "object",
          "properties": {
            "autocolorscale": {
              "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. Has an effect only if colors is set to a numerical array. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": true
                }
              ]
            },
            "cauto": {
              "description": "Determines whether or not the color domain is computed with respect to the input data (here colors) or the bounds set in `marker.cmin` and `marker.cmax` Has an effect only if colors is set to a numerical array. Defaults to `false` when `marker.cmin` and `marker.cmax` are set by the user.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": true
                }
              ]
            },
            "cmax": {
              "description": "Sets the upper bound of the color domain. Has an effect only if colors is set to a numerical array. Value should have the same units as colors and if set, `marker.cmin` must be set as well.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": null
                }
              ]
            },
            "cmid": {
              "description": "Sets the mid-point of the color domain by scaling `marker.cmin` and/or `marker.cmax` to be equidistant to this point. Has an effect only if colors is set to a numerical array. Value should have the same units as colors. Has no effect when `marker.cauto` is `false`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": null
                }
              ]
            },
            "cmin": {
              "description": "Sets the lower bound of the color domain. Has an effect only if colors is set to a numerical array. Value should have the same units as colors and if set, `marker.cmax` must be set as well.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": null
                }
              ]
            },
            "coloraxis": {
              "description": "Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "string",
                  "default": null,
                  "pattern": "/^coloraxis([2-9]|[1-9][0-9]+)?$/"
                }
              ]
            },
            "colorbar": {
              "type": "object",
              "properties": {
                "bgcolor": {
                  "description": "Sets the color of padded area.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "bordercolor": {
                  "description": "Sets the axis line color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "borderwidth": {
                  "description": "Sets the width (in px) or the border enclosing this color bar.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 0
                    }
                  ]
                },
                "dtick": {
                  "description": "Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L<f>*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M<n>* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48*"
                },
                "exponentformat": {
                  "description": "Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "none",
                        "e",
                        "E",
                        "power",
                        "SI",
                        "B"
                      ],
                      "default": "B"
                    }
                  ]
                },
                "labelalias": {
                  "default": false,
                  "description": "Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax."
                },
                "len": {
                  "description": "Sets the length of the color bar This measure excludes the padding of both ends. That is, the color bar length is this length minus the padding on both ends.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "lenmode": {
                  "description": "Determines whether this color bar's length (i.e. the measure in the color variation direction) is set in units of plot *fraction* or in *pixels. Use `len` to set the value.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "fraction",
                        "pixels"
                      ],
                      "default": "fraction"
                    }
                  ]
                },
                "minexponent": {
                  "description": "Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 3
                    }
                  ]
                },
                "nticks": {
                  "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 0,
                      "default": 0
                    }
                  ]
                },
                "orientation": {
                  "description": "Sets the orientation of the colorbar.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "h",
                        "v"
                      ],
                      "default": "v"
                    }
                  ]
                },
                "outlinecolor": {
                  "description": "Sets the axis line color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "outlinewidth": {
                  "description": "Sets the width (in px) of the axis line.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "separatethousands": {
                  "description": "If \"true\", even 4-digit integers are separated",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": false
                    }
                  ]
                },
                "showexponent": {
                  "description": "If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "showticklabels": {
                  "description": "Determines whether or not the tick labels are drawn.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                },
                "showtickprefix": {
                  "description": "If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "showticksuffix": {
                  "description": "Same as `showtickprefix` but for tick suffixes.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "all",
                        "first",
                        "last",
                        "none"
                      ],
                      "default": "all"
                    }
                  ]
                },
                "thickness": {
                  "description": "Sets the thickness of the color bar This measure excludes the size of the padding, ticks and labels.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 30
                    }
                  ]
                },
                "thicknessmode": {
                  "description": "Determines whether this color bar's thickness (i.e. the measure in the constant color direction) is set in units of plot *fraction* or in *pixels*. Use `thickness` to set the value.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "fraction",
                        "pixels"
                      ],
                      "default": "pixels"
                    }
                  ]
                },
                "tick0": {
                  "description": "Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L<f>* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears."
                },
                "tickangle": {
                  "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": -180,
                      "maximum": 180,
                      "default": "auto"
                    }
                  ]
                },
                "tickcolor": {
                  "description": "Sets the tick color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "tickfont": {
                  "type": "object",
                  "properties": {
                    "color": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    "family": {
                      "pattern": ".*\\S.*$",
                      "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                      "type": "string"
                    },
                    "lineposition": {
                      "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    "shadow": {
                      "default": "none",
                      "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                      "type": "string"
                    },
                    "size": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    "style": {
                      "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "textcase": {
                      "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "variant": {
                      "description": "Sets the variant of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "weight": {
                      "description": "Sets the weight (or boldness) of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    }
                  },
                  "additionalProperties": false
                },
                "tickformat": {
                  "default": "",
                  "description": "Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*",
                  "type": "string"
                },
                "tickformatstops": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "dtickrange": {
                        "description": "range [*min*, *max*], where *min*, *max* - dtick values which describe some zoom level, it is possible to omit *min* or *max* value by passing *null*",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "array",
                            "items": {},
                            "minItems": 2,
                            "maxItems": 2
                          }
                        ]
                      },
                      "enabled": {
                        "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.",
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "boolean",
                            "default": true
                          }
                        ]
                      },
                      "name": {
                        "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.",
                        "type": "string"
                      },
                      "templateitemname": {
                        "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.",
                        "type": "string"
                      },
                      "value": {
                        "default": "",
                        "description": "string - dtickformat for described zoom level, the same as *tickformat*",
                        "type": "string"
                      }
                    },
                    "additionalProperties": false
                  },
                  "minItems": 1
                },
                "ticklabeloverflow": {
                  "description": "Determines how we handle tick labels that would overflow either the graph div or the domain of the axis. The default value for inside tick labels is *hide past domain*. In other cases the default is *hide past div*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "allow",
                        "hide past div",
                        "hide past domain"
                      ]
                    }
                  ]
                },
                "ticklabelposition": {
                  "description": "Determines where tick labels are drawn relative to the ticks. Left and right options are used when `orientation` is *h*, top and bottom when `orientation` is *v*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "outside",
                        "inside",
                        "outside top",
                        "inside top",
                        "outside left",
                        "inside left",
                        "outside right",
                        "inside right",
                        "outside bottom",
                        "inside bottom"
                      ],
                      "default": "outside"
                    }
                  ]
                },
                "ticklabelstep": {
                  "description": "Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "default": 1
                    }
                  ]
                },
                "ticklen": {
                  "description": "Sets the tick length (in px).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 5
                    }
                  ]
                },
                "tickmode": {
                  "description": "Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "auto",
                        "linear",
                        "array"
                      ]
                    }
                  ]
                },
                "tickprefix": {
                  "default": "",
                  "description": "Sets a tick label prefix.",
                  "type": "string"
                },
                "ticks": {
                  "description": "Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "outside",
                        "inside",
                        ""
                      ],
                      "default": ""
                    }
                  ]
                },
                "ticksuffix": {
                  "default": "",
                  "description": "Sets a tick label suffix.",
                  "type": "string"
                },
                "ticktext": {
                  "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "string"
                          }
                        ]
                      }
                    }
                  ]
                },
                "ticktextsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.",
                  "type": "string"
                },
                "tickvals": {
                  "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "string"
                          }
                        ]
                      }
                    }
                  ]
                },
                "tickvalssrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.",
                  "type": "string"
                },
                "tickwidth": {
                  "description": "Sets the tick width (in px).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "title": {
                  "type": "object",
                  "properties": {
                    "font": {
                      "type": "object",
                      "properties": {
                        "color": {
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "$ref": "#/$defs/color"
                            }
                          ]
                        },
                        "family": {
                          "pattern": ".*\\S.*$",
                          "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                          "type": "string"
                        },
                        "lineposition": {
                          "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "oneOf": [
                                {
                                  "type": "string",
                                  "enum": [
                                    "none"
                                  ]
                                },
                                {
                                  "type": "string",
                                  "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                                }
                              ],
                              "default": "none"
                            }
                          ]
                        },
                        "shadow": {
                          "default": "none",
                          "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                          "type": "string"
                        },
                        "size": {
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "type": "number",
                              "minimum": 1
                            }
                          ]
                        },
                        "style": {
                          "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "italic"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "textcase": {
                          "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "word caps",
                                "upper",
                                "lower"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "variant": {
                          "description": "Sets the variant of the font.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "enum": [
                                "normal",
                                "small-caps",
                                "all-small-caps",
                                "all-petite-caps",
                                "petite-caps",
                                "unicase"
                              ],
                              "default": "normal"
                            }
                          ]
                        },
                        "weight": {
                          "description": "Sets the weight (or boldness) of the font.",
                          "oneOf": [
                            {
                              "$ref": "#/$defs/query-string"
                            },
                            {
                              "type": "integer",
                              "minimum": 1,
                              "maximum": 1000,
                              "default": "normal"
                            }
                          ]
                        }
                      },
                      "additionalProperties": false
                    },
                    "side": {
                      "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and  defaults to *right* when `orientation` if *h*.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "right",
                            "top",
                            "bottom"
                          ]
                        }
                      ]
                    },
                    "text": {
                      "description": "Sets the title of the color bar.",
                      "type": "string"
                    }
                  },
                  "additionalProperties": false
                },
                "x": {
                  "description": "Sets the x position with respect to `xref` of the color bar (in plot fraction). When `xref` is *paper*, defaults to 1.02 when `orientation` is *v* and 0.5 when `orientation` is *h*. When `xref` is *container*, defaults to *1* when `orientation` is *v* and 0.5 when `orientation` is *h*. Must be between *0* and *1* if `xref` is *container* and between *-2* and *3* if `xref` is *paper*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number"
                    }
                  ]
                },
                "xanchor": {
                  "description": "Sets this color bar's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the color bar. Defaults to *left* when `orientation` is *v* and *center* when `orientation` is *h*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "left",
                        "center",
                        "right"
                      ]
                    }
                  ]
                },
                "xpad": {
                  "description": "Sets the amount of padding (in px) along the x direction.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 10
                    }
                  ]
                },
                "xref": {
                  "description": "Sets the container `x` refers to. *container* spans the entire `width` of the plot. *paper* refers to the width of the plotting area only.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "container",
                        "paper"
                      ],
                      "default": "paper"
                    }
                  ]
                },
                "y": {
                  "description": "Sets the y position with respect to `yref` of the color bar (in plot fraction). When `yref` is *paper*, defaults to 0.5 when `orientation` is *v* and 1.02 when `orientation` is *h*. When `yref` is *container*, defaults to 0.5 when `orientation` is *v* and 1 when `orientation` is *h*. Must be between *0* and *1* if `yref` is *container* and between *-2* and *3* if `yref` is *paper*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number"
                    }
                  ]
                },
                "yanchor": {
                  "description": "Sets this color bar's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the color bar. Defaults to *middle* when `orientation` is *v* and *bottom* when `orientation` is *h*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "top",
                        "middle",
                        "bottom"
                      ]
                    }
                  ]
                },
                "ypad": {
                  "description": "Sets the amount of padding (in px) along the y direction.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 10
                    }
                  ]
                },
                "yref": {
                  "description": "Sets the container `y` refers to. *container* spans the entire `height` of the plot. *paper* refers to the height of the plotting area only.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "container",
                        "paper"
                      ],
                      "default": "paper"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "colors": {
              "description": "Sets the color of each sector of this trace. If not specified, the default trace color set is used to pick the sector colors.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  }
                }
              ]
            },
            "colorscale": {
              "description": "Sets the colorscale. Has an effect only if colors is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/colorscale",
                  "default": null
                }
              ]
            },
            "colorssrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `colors`.",
              "type": "string"
            },
            "cornerradius": {
              "description": "Sets the maximum rounding of corners (in px).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "depthfade": {
              "description": "Determines if the sector colors are faded towards the background from the leaves up to the headers. This option is unavailable when a `colorscale` is present, defaults to false when `marker.colors` is set, but otherwise defaults to true. When set to *reversed*, the fading direction is inverted, that is the top elements within hierarchy are drawn with fully saturated colors while the leaves are faded towards the background color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    true,
                    false,
                    "reversed"
                  ]
                }
              ]
            },
            "line": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the color of the line enclosing each sector. Defaults to the `paper_bgcolor` value.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "colorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `color`.",
                  "type": "string"
                },
                "width": {
                  "description": "Sets the width (in px) of the line enclosing each sector.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 0,
                          "default": 1
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 0,
                            "default": 1
                          }
                        ]
                      }
                    }
                  ]
                },
                "widthsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `width`.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "pad": {
              "type": "object",
              "properties": {
                "b": {
                  "description": "Sets the padding form the bottom (in px).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0
                    }
                  ]
                },
                "l": {
                  "description": "Sets the padding form the left (in px).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0
                    }
                  ]
                },
                "r": {
                  "description": "Sets the padding form the right (in px).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0
                    }
                  ]
                },
                "t": {
                  "description": "Sets the padding form the top (in px).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "pattern": {
              "type": "object",
              "properties": {
                "bgcolor": {
                  "description": "When there is no colorscale sets the color of background pattern fill. Defaults to a `marker.color` background when `fillmode` is *overlay*. Otherwise, defaults to a transparent background.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "bgcolorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.",
                  "type": "string"
                },
                "fgcolor": {
                  "description": "When there is no colorscale sets the color of foreground pattern fill. Defaults to a `marker.color` background when `fillmode` is *replace*. Otherwise, defaults to dark grey or white to increase contrast with the `bgcolor`.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "fgcolorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `fgcolor`.",
                  "type": "string"
                },
                "fgopacity": {
                  "description": "Sets the opacity of the foreground pattern fill. Defaults to a 0.5 when `fillmode` is *overlay*. Otherwise, defaults to 1.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1
                    }
                  ]
                },
                "fillmode": {
                  "description": "Determines whether `marker.color` should be used as a default to `bgcolor` or a `fgcolor`.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "replace",
                        "overlay"
                      ],
                      "default": "replace"
                    }
                  ]
                },
                "shape": {
                  "description": "Sets the shape of the pattern fill. By default, no pattern is used for filling the area.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "",
                            "/",
                            "\\",
                            "x",
                            "-",
                            "|",
                            "+",
                            "."
                          ],
                          "default": ""
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "",
                              "/",
                              "\\",
                              "x",
                              "-",
                              "|",
                              "+",
                              "."
                            ],
                            "default": ""
                          }
                        ]
                      }
                    }
                  ]
                },
                "shapesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `shape`.",
                  "type": "string"
                },
                "size": {
                  "description": "Sets the size of unit squares of the pattern fill in pixels, which corresponds to the interval of repetition of the pattern.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 0,
                          "default": 8
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 0,
                            "default": 8
                          }
                        ]
                      }
                    }
                  ]
                },
                "sizesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `size`.",
                  "type": "string"
                },
                "solidity": {
                  "description": "Sets the solidity of the pattern fill. Solidity is roughly the fraction of the area filled by the pattern. Solidity of 0 shows only the background color without pattern and solidty of 1 shows only the foreground color without pattern.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 0,
                          "maximum": 1,
                          "default": 0.3
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 0,
                            "maximum": 1,
                            "default": 0.3
                          }
                        ]
                      }
                    }
                  ]
                },
                "soliditysrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `solidity`.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "reversescale": {
              "description": "Reverses the color mapping if true. Has an effect only if colors is set to a numerical array. If true, `marker.cmin` will correspond to the last color in the array and `marker.cmax` will correspond to the first color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            },
            "showscale": {
              "description": "Determines whether or not a colorbar is displayed for this trace. Has an effect only if colors is set to a numerical array.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "maxdepth": {
          "description": "Sets the number of rendered sectors from any given `level`. Set `maxdepth` to *-1* to render all the levels in the hierarchy.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "integer",
              "default": -1
            }
          ]
        },
        "metasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `meta`.",
          "type": "string"
        },
        "name": {
          "description": "Sets the trace name. The trace name appears as the legend item and on hover.",
          "type": "string"
        },
        "opacity": {
          "description": "Sets the opacity of the trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0,
              "maximum": 1,
              "default": 1
            }
          ]
        },
        "outsidetextfont": {
          "type": "object",
          "properties": {
            "color": {
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "colorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `color`.",
              "type": "string"
            },
            "family": {
              "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
              "oneOf": [
                {
                  "pattern": ".*\\S.*$",
                  "type": "string"
                },
                {
                  "type": "array",
                  "items": {
                    "pattern": ".*\\S.*$",
                    "type": "string"
                  }
                },
                {
                  "$ref": "#/$defs/query-string"
                }
              ]
            },
            "familysrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `family`.",
              "type": "string"
            },
            "lineposition": {
              "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "oneOf": [
                          {
                            "type": "string",
                            "enum": [
                              "none"
                            ]
                          },
                          {
                            "type": "string",
                            "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                          }
                        ],
                        "default": "none"
                      }
                    ]
                  }
                }
              ]
            },
            "linepositionsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.",
              "type": "string"
            },
            "shadow": {
              "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
              "oneOf": [
                {
                  "default": "none",
                  "type": "string"
                },
                {
                  "type": "array",
                  "items": {
                    "default": "none",
                    "type": "string"
                  }
                }
              ]
            },
            "shadowsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `shadow`.",
              "type": "string"
            },
            "size": {
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 1
                      }
                    ]
                  }
                }
              ]
            },
            "sizesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `size`.",
              "type": "string"
            },
            "style": {
              "description": "Sets whether a font should be styled with a normal or italic face from its family.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "italic"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "stylesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `style`.",
              "type": "string"
            },
            "textcase": {
              "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "word caps",
                          "upper",
                          "lower"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "textcasesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `textcase`.",
              "type": "string"
            },
            "variant": {
              "description": "Sets the variant of the font.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "small-caps",
                          "all-small-caps",
                          "all-petite-caps",
                          "petite-caps",
                          "unicase"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "variantsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `variant`.",
              "type": "string"
            },
            "weight": {
              "description": "Sets the weight (or boldness) of the font.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 1000,
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "weightsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `weight`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "parents": {
          "description": "Sets the parent sectors for each of the sectors. Empty string items '' are understood to reference the root node in the hierarchy. If `ids` is filled, `parents` items are understood to be \"ids\" themselves. When `ids` is not set, plotly attempts to find matching items in `labels`, but beware they must be unique.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "parentssrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `parents`.",
          "type": "string"
        },
        "pathbar": {
          "type": "object",
          "properties": {
            "edgeshape": {
              "description": "Determines which shape is used for edges between `barpath` labels.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    ">",
                    "<",
                    "|",
                    "/",
                    "\\"
                  ],
                  "default": ">"
                }
              ]
            },
            "side": {
              "description": "Determines on which side of the the treemap the `pathbar` should be presented.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "top",
                    "bottom"
                  ],
                  "default": "top"
                }
              ]
            },
            "textfont": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "colorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `color`.",
                  "type": "string"
                },
                "family": {
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "oneOf": [
                    {
                      "pattern": ".*\\S.*$",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "pattern": ".*\\S.*$",
                        "type": "string"
                      }
                    },
                    {
                      "$ref": "#/$defs/query-string"
                    }
                  ]
                },
                "familysrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `family`.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "oneOf": [
                              {
                                "type": "string",
                                "enum": [
                                  "none"
                                ]
                              },
                              {
                                "type": "string",
                                "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                              }
                            ],
                            "default": "none"
                          }
                        ]
                      }
                    }
                  ]
                },
                "linepositionsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.",
                  "type": "string"
                },
                "shadow": {
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "oneOf": [
                    {
                      "default": "none",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "default": "none",
                        "type": "string"
                      }
                    }
                  ]
                },
                "shadowsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `shadow`.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 1
                          }
                        ]
                      }
                    }
                  ]
                },
                "sizesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `size`.",
                  "type": "string"
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "italic"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "stylesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `style`.",
                  "type": "string"
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "word caps",
                              "upper",
                              "lower"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "textcasesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `textcase`.",
                  "type": "string"
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "small-caps",
                              "all-small-caps",
                              "all-petite-caps",
                              "petite-caps",
                              "unicase"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "variantsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `variant`.",
                  "type": "string"
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 1000,
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "weightsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `weight`.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "thickness": {
              "description": "Sets the thickness of `pathbar` (in px). If not specified the `pathbar.textfont.size` is used with 3 pixles extra padding on each side.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 12
                }
              ]
            },
            "visible": {
              "description": "Determines if the path bar is drawn i.e. outside the trace `domain` and with one pixel gap.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": true
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "root": {
          "type": "object",
          "properties": {
            "color": {
              "description": "sets the color of the root node for a sunburst/treemap/icicle trace. this has no effect when a colorscale is used to set the markers.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "sort": {
          "description": "Determines whether or not the sectors are reordered from largest to smallest.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "stream": {
          "type": "object",
          "properties": {
            "maxpoints": {
              "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 10000,
                  "default": 500
                }
              ]
            },
            "token": {
              "pattern": ".*\\S.*$",
              "description": "The stream id number links a data trace on a plot with a stream. See <https://chart-studio.plotly.com/settings> for more details.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "text": {
          "description": "Sets text elements associated with each sector. If trace `textinfo` contains a *text* flag, these elements will be seen on the chart. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "textfont": {
          "type": "object",
          "properties": {
            "color": {
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "colorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `color`.",
              "type": "string"
            },
            "family": {
              "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
              "oneOf": [
                {
                  "pattern": ".*\\S.*$",
                  "type": "string"
                },
                {
                  "type": "array",
                  "items": {
                    "pattern": ".*\\S.*$",
                    "type": "string"
                  }
                },
                {
                  "$ref": "#/$defs/query-string"
                }
              ]
            },
            "familysrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `family`.",
              "type": "string"
            },
            "lineposition": {
              "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "oneOf": [
                          {
                            "type": "string",
                            "enum": [
                              "none"
                            ]
                          },
                          {
                            "type": "string",
                            "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                          }
                        ],
                        "default": "none"
                      }
                    ]
                  }
                }
              ]
            },
            "linepositionsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.",
              "type": "string"
            },
            "shadow": {
              "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
              "oneOf": [
                {
                  "default": "none",
                  "type": "string"
                },
                {
                  "type": "array",
                  "items": {
                    "default": "none",
                    "type": "string"
                  }
                }
              ]
            },
            "shadowsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `shadow`.",
              "type": "string"
            },
            "size": {
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 1
                      }
                    ]
                  }
                }
              ]
            },
            "sizesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `size`.",
              "type": "string"
            },
            "style": {
              "description": "Sets whether a font should be styled with a normal or italic face from its family.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "italic"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "stylesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `style`.",
              "type": "string"
            },
            "textcase": {
              "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "word caps",
                          "upper",
                          "lower"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "textcasesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `textcase`.",
              "type": "string"
            },
            "variant": {
              "description": "Sets the variant of the font.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "small-caps",
                          "all-small-caps",
                          "all-petite-caps",
                          "petite-caps",
                          "unicase"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "variantsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `variant`.",
              "type": "string"
            },
            "weight": {
              "description": "Sets the weight (or boldness) of the font.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 1000,
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "weightsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `weight`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "textinfo": {
          "description": "Determines which trace information appear on the graph.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "oneOf": [
                {
                  "type": "string",
                  "enum": [
                    "none"
                  ]
                },
                {
                  "type": "string",
                  "pattern": "^(label|text|value|current path|percent root|percent entry|percent parent)(\\+(label|text|value|current path|percent root|percent entry|percent parent))*$"
                }
              ]
            }
          ]
        },
        "textposition": {
          "description": "Sets the positions of the `text` elements.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "top left",
                "top center",
                "top right",
                "middle left",
                "middle center",
                "middle right",
                "bottom left",
                "bottom center",
                "bottom right"
              ],
              "default": "top left"
            }
          ]
        },
        "textsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `text`.",
          "type": "string"
        },
        "texttemplate": {
          "description": "Template string used for rendering the information text that appear on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". <https://github.com/d3/d3-format/tree/v1.4.5#d3-format> for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format> for details on the date formatting syntax. Every attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `currentPath`, `root`, `entry`, `percentRoot`, `percentEntry`, `percentParent`, `label` and `value`.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "texttemplatesrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.",
          "type": "string"
        },
        "tiling": {
          "type": "object",
          "properties": {
            "flip": {
              "description": "Determines if the positions obtained from solver are flipped on each axis.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "string",
                  "pattern": "^(x|y)(\\+(x|y))*$",
                  "default": ""
                }
              ]
            },
            "packing": {
              "description": "Determines d3 treemap solver. For more info please refer to <https://github.com/d3/d3-hierarchy#treemap-tiling>",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "squarify",
                    "binary",
                    "dice",
                    "slice",
                    "slice-dice",
                    "dice-slice"
                  ],
                  "default": "squarify"
                }
              ]
            },
            "pad": {
              "description": "Sets the inner padding (in px).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 3
                }
              ]
            },
            "squarifyratio": {
              "description": "When using *squarify* `packing` algorithm, according to <https://github.com/d3/d3-hierarchy/blob/v3.1.1/README.md#squarify_ratio> this option specifies the desired aspect ratio of the generated rectangles. The ratio must be specified as a number greater than or equal to one. Note that the orientation of the generated rectangles (tall or wide) is not implied by the ratio; for example, a ratio of two will attempt to produce a mixture of rectangles whose width:height ratio is either 2:1 or 1:2. When using *squarify*, unlike d3 which uses the Golden Ratio i.e. 1.618034, Plotly applies 1 to increase squares in treemap layouts.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 1,
                  "default": 1
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "uid": {
          "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.",
          "type": "string"
        },
        "uirevision": {
          "description": "Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves."
        },
        "values": {
          "description": "Sets the values associated with each of the sectors. Use with `branchvalues` to determine how the values are summed.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "valuessrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `values`.",
          "type": "string"
        },
        "visible": {
          "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                true,
                false,
                "legendonly"
              ],
              "default": true
            }
          ]
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false
    },
    "Violin": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "$id": "https://visivo.io/trace-properties/schema",
      "description": "A schema to validate plotly trace properties",
      "type": "object",
      "properties": {
        "type": {
          "const": "violin"
        },
        "alignmentgroup": {
          "default": "",
          "description": "Set several traces linked to the same position axis or matching axes to the same alignmentgroup. This controls whether bars compute their positional range dependently or independently.",
          "type": "string"
        },
        "bandwidth": {
          "description": "Sets the bandwidth used to compute the kernel density estimate. By default, the bandwidth is determined by Silverman's rule of thumb.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0
            }
          ]
        },
        "box": {
          "type": "object",
          "properties": {
            "fillcolor": {
              "description": "Sets the inner box plot fill color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "line": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the inner box plot bounding line color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "width": {
                  "description": "Sets the inner box plot bounding line width.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "visible": {
              "description": "Determines if an miniature box plot is drawn inside the violins. ",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            },
            "width": {
              "description": "Sets the width of the inner box plots relative to the violins' width. For example, with 1, the inner box plots are as wide as the violins.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 1,
                  "default": 0.25
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "customdata": {
          "description": "Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "customdatasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `customdata`.",
          "type": "string"
        },
        "fillcolor": {
          "description": "Sets the fill color. Defaults to a half-transparent variant of the line color, marker color, or marker line color, whichever is available.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "$ref": "#/$defs/color"
            }
          ]
        },
        "hoverinfo": {
          "description": "Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired.",
          "oneOf": [
            {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "oneOf": [
                    {
                      "type": "string",
                      "enum": [
                        "all",
                        "none",
                        "skip"
                      ]
                    },
                    {
                      "type": "string",
                      "pattern": "^(x|y|z|text|name)(\\+(x|y|z|text|name))*$"
                    }
                  ],
                  "default": "all"
                }
              ]
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "oneOf": [
                      {
                        "type": "string",
                        "enum": [
                          "all",
                          "none",
                          "skip"
                        ]
                      },
                      {
                        "type": "string",
                        "pattern": "^(x|y|z|text|name)(\\+(x|y|z|text|name))*$"
                      }
                    ],
                    "default": "all"
                  }
                ]
              }
            }
          ]
        },
        "hoverinfosrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.",
          "type": "string"
        },
        "hoverlabel": {
          "type": "object",
          "properties": {
            "align": {
              "description": "Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "left",
                        "right",
                        "auto"
                      ],
                      "default": "auto"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "left",
                          "right",
                          "auto"
                        ],
                        "default": "auto"
                      }
                    ]
                  }
                }
              ]
            },
            "alignsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `align`.",
              "type": "string"
            },
            "bgcolor": {
              "description": "Sets the background color of the hover labels for this trace",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "bgcolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.",
              "type": "string"
            },
            "bordercolor": {
              "description": "Sets the border color of the hover labels for this trace.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "bordercolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.",
              "type": "string"
            },
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "colorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `color`.",
                  "type": "string"
                },
                "family": {
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "oneOf": [
                    {
                      "pattern": ".*\\S.*$",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "pattern": ".*\\S.*$",
                        "type": "string"
                      }
                    },
                    {
                      "$ref": "#/$defs/query-string"
                    }
                  ]
                },
                "familysrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `family`.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "oneOf": [
                              {
                                "type": "string",
                                "enum": [
                                  "none"
                                ]
                              },
                              {
                                "type": "string",
                                "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                              }
                            ],
                            "default": "none"
                          }
                        ]
                      }
                    }
                  ]
                },
                "linepositionsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.",
                  "type": "string"
                },
                "shadow": {
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "oneOf": [
                    {
                      "default": "none",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "default": "none",
                        "type": "string"
                      }
                    }
                  ]
                },
                "shadowsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `shadow`.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 1
                          }
                        ]
                      }
                    }
                  ]
                },
                "sizesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `size`.",
                  "type": "string"
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "italic"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "stylesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `style`.",
                  "type": "string"
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "word caps",
                              "upper",
                              "lower"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "textcasesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `textcase`.",
                  "type": "string"
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "small-caps",
                              "all-small-caps",
                              "all-petite-caps",
                              "petite-caps",
                              "unicase"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "variantsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `variant`.",
                  "type": "string"
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 1000,
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "weightsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `weight`.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "namelength": {
              "description": "Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": -1,
                      "default": 15
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "integer",
                        "minimum": -1,
                        "default": 15
                      }
                    ]
                  }
                }
              ]
            },
            "namelengthsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `namelength`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "hoveron": {
          "description": "Do the hover effects highlight individual violins or sample points or the kernel density estimate or any combination of them?",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "oneOf": [
                {
                  "type": "string",
                  "enum": [
                    "all"
                  ]
                },
                {
                  "type": "string",
                  "pattern": "^(violins|points|kde)(\\+(violins|points|kde))*$"
                }
              ],
              "default": "violins+points+kde"
            }
          ]
        },
        "hovertemplate": {
          "description": "Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". <https://github.com/d3/d3-format/tree/v1.4.5#d3-format> for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format> for details on the date formatting syntax. The variables available in `hovertemplate` are the ones emitted as event data described at this link <https://plotly.com/javascript/plotlyjs-events/#event-data>. Additionally, every attributes that can be specified per-point (the ones that are `arrayOk: true`) are available.  Anything contained in tag `<extra>` is displayed in the secondary box, for example \"<extra>{fullData.name}</extra>\". To hide the secondary box completely, use an empty tag `<extra></extra>`.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "hovertemplatesrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.",
          "type": "string"
        },
        "hovertext": {
          "description": "Same as `text`.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "hovertextsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.",
          "type": "string"
        },
        "ids": {
          "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "idssrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `ids`.",
          "type": "string"
        },
        "jitter": {
          "description": "Sets the amount of jitter in the sample points drawn. If *0*, the sample points align along the distribution axis. If *1*, the sample points are drawn in a random jitter of width equal to the width of the violins.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0,
              "maximum": 1
            }
          ]
        },
        "legend": {
          "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "legend",
              "pattern": "^legend([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "legendgroup": {
          "default": "",
          "description": "Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items.",
          "type": "string"
        },
        "legendgrouptitle": {
          "type": "object",
          "properties": {
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "family": {
                  "pattern": ".*\\S.*$",
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                "shadow": {
                  "default": "none",
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "text": {
              "default": "",
              "description": "Sets the title of the legend group.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "legendrank": {
          "description": "Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": 1000
            }
          ]
        },
        "legendwidth": {
          "description": "Sets the width (in px or fraction) of the legend for this trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0
            }
          ]
        },
        "line": {
          "type": "object",
          "properties": {
            "color": {
              "description": "Sets the color of line bounding the violin(s).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "width": {
              "description": "Sets the width (in px) of line bounding the violin(s).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 2
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "marker": {
          "type": "object",
          "properties": {
            "angle": {
              "description": "Sets the marker angle in respect to `angleref`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": -180,
                  "maximum": 180,
                  "default": 0
                }
              ]
            },
            "color": {
              "description": "Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.cmin` and `marker.cmax` if set.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "line": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the marker.line color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `marker.line.cmin` and `marker.line.cmax` if set.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "outliercolor": {
                  "description": "Sets the border line color of the outlier sample points. Defaults to marker.color",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "outlierwidth": {
                  "description": "Sets the border line width (in px) of the outlier sample points.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 1
                    }
                  ]
                },
                "width": {
                  "description": "Sets the width (in px) of the lines bounding the marker points.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 0
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "opacity": {
              "description": "Sets the marker opacity.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 1,
                  "default": 1
                }
              ]
            },
            "outliercolor": {
              "description": "Sets the color of the outlier sample points.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "size": {
              "description": "Sets the marker size (in px).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 6
                }
              ]
            },
            "symbol": {
              "description": "Sets the marker symbol type. Adding 100 is equivalent to appending *-open* to a symbol name. Adding 200 is equivalent to appending *-dot* to a symbol name. Adding 300 is equivalent to appending *-open-dot* or *dot-open* to a symbol name.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    0,
                    "0",
                    "circle",
                    100,
                    "100",
                    "circle-open",
                    200,
                    "200",
                    "circle-dot",
                    300,
                    "300",
                    "circle-open-dot",
                    1,
                    "1",
                    "square",
                    101,
                    "101",
                    "square-open",
                    201,
                    "201",
                    "square-dot",
                    301,
                    "301",
                    "square-open-dot",
                    2,
                    "2",
                    "diamond",
                    102,
                    "102",
                    "diamond-open",
                    202,
                    "202",
                    "diamond-dot",
                    302,
                    "302",
                    "diamond-open-dot",
                    3,
                    "3",
                    "cross",
                    103,
                    "103",
                    "cross-open",
                    203,
                    "203",
                    "cross-dot",
                    303,
                    "303",
                    "cross-open-dot",
                    4,
                    "4",
                    "x",
                    104,
                    "104",
                    "x-open",
                    204,
                    "204",
                    "x-dot",
                    304,
                    "304",
                    "x-open-dot",
                    5,
                    "5",
                    "triangle-up",
                    105,
                    "105",
                    "triangle-up-open",
                    205,
                    "205",
                    "triangle-up-dot",
                    305,
                    "305",
                    "triangle-up-open-dot",
                    6,
                    "6",
                    "triangle-down",
                    106,
                    "106",
                    "triangle-down-open",
                    206,
                    "206",
                    "triangle-down-dot",
                    306,
                    "306",
                    "triangle-down-open-dot",
                    7,
                    "7",
                    "triangle-left",
                    107,
                    "107",
                    "triangle-left-open",
                    207,
                    "207",
                    "triangle-left-dot",
                    307,
                    "307",
                    "triangle-left-open-dot",
                    8,
                    "8",
                    "triangle-right",
                    108,
                    "108",
                    "triangle-right-open",
                    208,
                    "208",
                    "triangle-right-dot",
                    308,
                    "308",
                    "triangle-right-open-dot",
                    9,
                    "9",
                    "triangle-ne",
                    109,
                    "109",
                    "triangle-ne-open",
                    209,
                    "209",
                    "triangle-ne-dot",
                    309,
                    "309",
                    "triangle-ne-open-dot",
                    10,
                    "10",
                    "triangle-se",
                    110,
                    "110",
                    "triangle-se-open",
                    210,
                    "210",
                    "triangle-se-dot",
                    310,
                    "310",
                    "triangle-se-open-dot",
                    11,
                    "11",
                    "triangle-sw",
                    111,
                    "111",
                    "triangle-sw-open",
                    211,
                    "211",
                    "triangle-sw-dot",
                    311,
                    "311",
                    "triangle-sw-open-dot",
                    12,
                    "12",
                    "triangle-nw",
                    112,
                    "112",
                    "triangle-nw-open",
                    212,
                    "212",
                    "triangle-nw-dot",
                    312,
                    "312",
                    "triangle-nw-open-dot",
                    13,
                    "13",
                    "pentagon",
                    113,
                    "113",
                    "pentagon-open",
                    213,
                    "213",
                    "pentagon-dot",
                    313,
                    "313",
                    "pentagon-open-dot",
                    14,
                    "14",
                    "hexagon",
                    114,
                    "114",
                    "hexagon-open",
                    214,
                    "214",
                    "hexagon-dot",
                    314,
                    "314",
                    "hexagon-open-dot",
                    15,
                    "15",
                    "hexagon2",
                    115,
                    "115",
                    "hexagon2-open",
                    215,
                    "215",
                    "hexagon2-dot",
                    315,
                    "315",
                    "hexagon2-open-dot",
                    16,
                    "16",
                    "octagon",
                    116,
                    "116",
                    "octagon-open",
                    216,
                    "216",
                    "octagon-dot",
                    316,
                    "316",
                    "octagon-open-dot",
                    17,
                    "17",
                    "star",
                    117,
                    "117",
                    "star-open",
                    217,
                    "217",
                    "star-dot",
                    317,
                    "317",
                    "star-open-dot",
                    18,
                    "18",
                    "hexagram",
                    118,
                    "118",
                    "hexagram-open",
                    218,
                    "218",
                    "hexagram-dot",
                    318,
                    "318",
                    "hexagram-open-dot",
                    19,
                    "19",
                    "star-triangle-up",
                    119,
                    "119",
                    "star-triangle-up-open",
                    219,
                    "219",
                    "star-triangle-up-dot",
                    319,
                    "319",
                    "star-triangle-up-open-dot",
                    20,
                    "20",
                    "star-triangle-down",
                    120,
                    "120",
                    "star-triangle-down-open",
                    220,
                    "220",
                    "star-triangle-down-dot",
                    320,
                    "320",
                    "star-triangle-down-open-dot",
                    21,
                    "21",
                    "star-square",
                    121,
                    "121",
                    "star-square-open",
                    221,
                    "221",
                    "star-square-dot",
                    321,
                    "321",
                    "star-square-open-dot",
                    22,
                    "22",
                    "star-diamond",
                    122,
                    "122",
                    "star-diamond-open",
                    222,
                    "222",
                    "star-diamond-dot",
                    322,
                    "322",
                    "star-diamond-open-dot",
                    23,
                    "23",
                    "diamond-tall",
                    123,
                    "123",
                    "diamond-tall-open",
                    223,
                    "223",
                    "diamond-tall-dot",
                    323,
                    "323",
                    "diamond-tall-open-dot",
                    24,
                    "24",
                    "diamond-wide",
                    124,
                    "124",
                    "diamond-wide-open",
                    224,
                    "224",
                    "diamond-wide-dot",
                    324,
                    "324",
                    "diamond-wide-open-dot",
                    25,
                    "25",
                    "hourglass",
                    125,
                    "125",
                    "hourglass-open",
                    26,
                    "26",
                    "bowtie",
                    126,
                    "126",
                    "bowtie-open",
                    27,
                    "27",
                    "circle-cross",
                    127,
                    "127",
                    "circle-cross-open",
                    28,
                    "28",
                    "circle-x",
                    128,
                    "128",
                    "circle-x-open",
                    29,
                    "29",
                    "square-cross",
                    129,
                    "129",
                    "square-cross-open",
                    30,
                    "30",
                    "square-x",
                    130,
                    "130",
                    "square-x-open",
                    31,
                    "31",
                    "diamond-cross",
                    131,
                    "131",
                    "diamond-cross-open",
                    32,
                    "32",
                    "diamond-x",
                    132,
                    "132",
                    "diamond-x-open",
                    33,
                    "33",
                    "cross-thin",
                    133,
                    "133",
                    "cross-thin-open",
                    34,
                    "34",
                    "x-thin",
                    134,
                    "134",
                    "x-thin-open",
                    35,
                    "35",
                    "asterisk",
                    135,
                    "135",
                    "asterisk-open",
                    36,
                    "36",
                    "hash",
                    136,
                    "136",
                    "hash-open",
                    236,
                    "236",
                    "hash-dot",
                    336,
                    "336",
                    "hash-open-dot",
                    37,
                    "37",
                    "y-up",
                    137,
                    "137",
                    "y-up-open",
                    38,
                    "38",
                    "y-down",
                    138,
                    "138",
                    "y-down-open",
                    39,
                    "39",
                    "y-left",
                    139,
                    "139",
                    "y-left-open",
                    40,
                    "40",
                    "y-right",
                    140,
                    "140",
                    "y-right-open",
                    41,
                    "41",
                    "line-ew",
                    141,
                    "141",
                    "line-ew-open",
                    42,
                    "42",
                    "line-ns",
                    142,
                    "142",
                    "line-ns-open",
                    43,
                    "43",
                    "line-ne",
                    143,
                    "143",
                    "line-ne-open",
                    44,
                    "44",
                    "line-nw",
                    144,
                    "144",
                    "line-nw-open",
                    45,
                    "45",
                    "arrow-up",
                    145,
                    "145",
                    "arrow-up-open",
                    46,
                    "46",
                    "arrow-down",
                    146,
                    "146",
                    "arrow-down-open",
                    47,
                    "47",
                    "arrow-left",
                    147,
                    "147",
                    "arrow-left-open",
                    48,
                    "48",
                    "arrow-right",
                    148,
                    "148",
                    "arrow-right-open",
                    49,
                    "49",
                    "arrow-bar-up",
                    149,
                    "149",
                    "arrow-bar-up-open",
                    50,
                    "50",
                    "arrow-bar-down",
                    150,
                    "150",
                    "arrow-bar-down-open",
                    51,
                    "51",
                    "arrow-bar-left",
                    151,
                    "151",
                    "arrow-bar-left-open",
                    52,
                    "52",
                    "arrow-bar-right",
                    152,
                    "152",
                    "arrow-bar-right-open",
                    53,
                    "53",
                    "arrow",
                    153,
                    "153",
                    "arrow-open",
                    54,
                    "54",
                    "arrow-wide",
                    154,
                    "154",
                    "arrow-wide-open"
                  ],
                  "default": "circle"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "meanline": {
          "type": "object",
          "properties": {
            "color": {
              "description": "Sets the mean line color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "visible": {
              "description": "Determines if a line corresponding to the sample's mean is shown inside the violins. If `box.visible` is turned on, the mean line is drawn inside the inner box. Otherwise, the mean line is drawn from one side of the violin to other.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            },
            "width": {
              "description": "Sets the mean line width.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "metasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `meta`.",
          "type": "string"
        },
        "name": {
          "description": "Sets the trace name. The trace name appears as the legend item and on hover. For violin traces, the name will also be used for the position coordinate, if `x` and `x0` (`y` and `y0` if horizontal) are missing and the position axis is categorical. Note that the trace name is also used as a default value for attribute `scalegroup` (please see its description for details).",
          "type": "string"
        },
        "offsetgroup": {
          "default": "",
          "description": "Set several traces linked to the same position axis or matching axes to the same offsetgroup where bars of the same position coordinate will line up.",
          "type": "string"
        },
        "opacity": {
          "description": "Sets the opacity of the trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0,
              "maximum": 1,
              "default": 1
            }
          ]
        },
        "orientation": {
          "description": "Sets the orientation of the violin(s). If *v* (*h*), the distribution is visualized along the vertical (horizontal).",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "v",
                "h"
              ]
            }
          ]
        },
        "pointpos": {
          "description": "Sets the position of the sample points in relation to the violins. If *0*, the sample points are places over the center of the violins. Positive (negative) values correspond to positions to the right (left) for vertical violins and above (below) for horizontal violins.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": -2,
              "maximum": 2
            }
          ]
        },
        "points": {
          "description": "If *outliers*, only the sample points lying outside the whiskers are shown If *suspectedoutliers*, the outlier points are shown and points either less than 4*Q1-3*Q3 or greater than 4*Q3-3*Q1 are highlighted (see `outliercolor`) If *all*, all sample points are shown If *false*, only the violins are shown with no sample points. Defaults to *suspectedoutliers* when `marker.outliercolor` or `marker.line.outliercolor` is set, otherwise defaults to *outliers*.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "all",
                "outliers",
                "suspectedoutliers",
                false
              ]
            }
          ]
        },
        "quartilemethod": {
          "description": "Sets the method used to compute the sample's Q1 and Q3 quartiles. The *linear* method uses the 25th percentile for Q1 and 75th percentile for Q3 as computed using method #10 (listed on <http://jse.amstat.org/v14n3/langford.html)>. The *exclusive* method uses the median to divide the ordered dataset into two halves if the sample is odd, it does not include the median in either half - Q1 is then the median of the lower half and Q3 the median of the upper half. The *inclusive* method also uses the median to divide the ordered dataset into two halves but if the sample is odd, it includes the median in both halves - Q1 is then the median of the lower half and Q3 the median of the upper half.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "linear",
                "exclusive",
                "inclusive"
              ],
              "default": "linear"
            }
          ]
        },
        "scalegroup": {
          "default": "",
          "description": "If there are multiple violins that should be sized according to to some metric (see `scalemode`), link them by providing a non-empty group id here shared by every trace in the same group. If a violin's `width` is undefined, `scalegroup` will default to the trace's name. In this case, violins with the same names will be linked together",
          "type": "string"
        },
        "scalemode": {
          "description": "Sets the metric by which the width of each violin is determined. *width* means each violin has the same (max) width *count* means the violins are scaled by the number of sample points making up each violin.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "width",
                "count"
              ],
              "default": "width"
            }
          ]
        },
        "selected": {
          "type": "object",
          "properties": {
            "marker": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the marker color of selected points.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "opacity": {
                  "description": "Sets the marker opacity of selected points.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1
                    }
                  ]
                },
                "size": {
                  "description": "Sets the marker size of selected points.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0
                    }
                  ]
                }
              },
              "additionalProperties": false
            }
          },
          "additionalProperties": false
        },
        "selectedpoints": {
          "description": "Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect."
        },
        "showlegend": {
          "description": "Determines whether or not an item corresponding to this trace is shown in the legend.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "side": {
          "description": "Determines on which side of the position value the density function making up one half of a violin is plotted. Useful when comparing two violin traces under *overlay* mode, where one trace has `side` set to *positive* and the other to *negative*.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "both",
                "positive",
                "negative"
              ],
              "default": "both"
            }
          ]
        },
        "span": {
          "description": "Sets the span in data space for which the density function will be computed. Has an effect only when `spanmode` is set to *manual*.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {},
              "minItems": 2,
              "maxItems": 2
            }
          ]
        },
        "spanmode": {
          "description": "Sets the method by which the span in data space where the density function will be computed. *soft* means the span goes from the sample's minimum value minus two bandwidths to the sample's maximum value plus two bandwidths. *hard* means the span goes from the sample's minimum to its maximum value. For custom span settings, use mode *manual* and fill in the `span` attribute.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "soft",
                "hard",
                "manual"
              ],
              "default": "soft"
            }
          ]
        },
        "stream": {
          "type": "object",
          "properties": {
            "maxpoints": {
              "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 10000,
                  "default": 500
                }
              ]
            },
            "token": {
              "pattern": ".*\\S.*$",
              "description": "The stream id number links a data trace on a plot with a stream. See <https://chart-studio.plotly.com/settings> for more details.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "text": {
          "description": "Sets the text elements associated with each sample value. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "textsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `text`.",
          "type": "string"
        },
        "uid": {
          "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.",
          "type": "string"
        },
        "uirevision": {
          "description": "Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves."
        },
        "unselected": {
          "type": "object",
          "properties": {
            "marker": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the marker color of unselected points, applied only when a selection exists.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "opacity": {
                  "description": "Sets the marker opacity of unselected points, applied only when a selection exists.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1
                    }
                  ]
                },
                "size": {
                  "description": "Sets the marker size of unselected points, applied only when a selection exists.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0
                    }
                  ]
                }
              },
              "additionalProperties": false
            }
          },
          "additionalProperties": false
        },
        "visible": {
          "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                true,
                false,
                "legendonly"
              ],
              "default": true
            }
          ]
        },
        "width": {
          "description": "Sets the width of the violin in data coordinates. If *0* (default value) the width is automatically selected based on the positions of other violin traces in the same subplot.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0,
              "default": 0
            }
          ]
        },
        "x": {
          "description": "Sets the x sample data or coordinates. See overview for more info.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "x0": {
          "description": "Sets the x coordinate for single-box traces or the starting coordinate for multi-box traces set using q1/median/q3. See overview for more info."
        },
        "xaxis": {
          "description": "Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "x",
              "pattern": "^x([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "xhoverformat": {
          "default": "",
          "description": "Sets the hover text formatting rulefor `x`  using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.",
          "type": "string"
        },
        "xsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `x`.",
          "type": "string"
        },
        "y": {
          "description": "Sets the y sample data or coordinates. See overview for more info.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "y0": {
          "description": "Sets the y coordinate for single-box traces or the starting coordinate for multi-box traces set using q1/median/q3. See overview for more info."
        },
        "yaxis": {
          "description": "Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "y",
              "pattern": "^y([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "yhoverformat": {
          "default": "",
          "description": "Sets the hover text formatting rulefor `y`  using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.",
          "type": "string"
        },
        "ysrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `y`.",
          "type": "string"
        },
        "zorder": {
          "description": "Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "integer",
              "default": 0
            }
          ]
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false
    },
    "Volume": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "$id": "https://visivo.io/trace-properties/schema",
      "description": "A schema to validate plotly trace properties",
      "type": "object",
      "properties": {
        "type": {
          "const": "volume"
        },
        "autocolorscale": {
          "description": "Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "caps": {
          "type": "object",
          "properties": {
            "x": {
              "type": "object",
              "properties": {
                "fill": {
                  "description": "Sets the fill ratio of the `caps`. The default fill value of the `caps` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1,
                      "default": 1
                    }
                  ]
                },
                "show": {
                  "description": "Sets the fill ratio of the `slices`. The default fill value of the x `slices` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "y": {
              "type": "object",
              "properties": {
                "fill": {
                  "description": "Sets the fill ratio of the `caps`. The default fill value of the `caps` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1,
                      "default": 1
                    }
                  ]
                },
                "show": {
                  "description": "Sets the fill ratio of the `slices`. The default fill value of the y `slices` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "z": {
              "type": "object",
              "properties": {
                "fill": {
                  "description": "Sets the fill ratio of the `caps`. The default fill value of the `caps` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1,
                      "default": 1
                    }
                  ]
                },
                "show": {
                  "description": "Sets the fill ratio of the `slices`. The default fill value of the z `slices` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": true
                    }
                  ]
                }
              },
              "additionalProperties": false
            }
          },
          "additionalProperties": false
        },
        "cauto": {
          "description": "Determines whether or not the color domain is computed with respect to the input data (here `value`) or the bounds set in `cmin` and `cmax` Defaults to `false` when `cmin` and `cmax` are set by the user.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "cmax": {
          "description": "Sets the upper bound of the color domain. Value should have the same units as `value` and if set, `cmin` must be set as well.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": null
            }
          ]
        },
        "cmid": {
          "description": "Sets the mid-point of the color domain by scaling `cmin` and/or `cmax` to be equidistant to this point. Value should have the same units as `value`. Has no effect when `cauto` is `false`.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": null
            }
          ]
        },
        "cmin": {
          "description": "Sets the lower bound of the color domain. Value should have the same units as `value` and if set, `cmax` must be set as well.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": null
            }
          ]
        },
        "coloraxis": {
          "description": "Sets a reference to a shared color axis. References to these shared color axes are *coloraxis*, *coloraxis2*, *coloraxis3*, etc. Settings for these shared color axes are set in the layout, under `layout.coloraxis`, `layout.coloraxis2`, etc. Note that multiple color scales can be linked to the same color axis.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": null,
              "pattern": "/^coloraxis([2-9]|[1-9][0-9]+)?$/"
            }
          ]
        },
        "colorbar": {
          "type": "object",
          "properties": {
            "bgcolor": {
              "description": "Sets the color of padded area.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "bordercolor": {
              "description": "Sets the axis line color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "borderwidth": {
              "description": "Sets the width (in px) or the border enclosing this color bar.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "dtick": {
              "description": "Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L<f>*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M<n>* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48*"
            },
            "exponentformat": {
              "description": "Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "none",
                    "e",
                    "E",
                    "power",
                    "SI",
                    "B"
                  ],
                  "default": "B"
                }
              ]
            },
            "labelalias": {
              "default": false,
              "description": "Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax."
            },
            "len": {
              "description": "Sets the length of the color bar This measure excludes the padding of both ends. That is, the color bar length is this length minus the padding on both ends.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 1
                }
              ]
            },
            "lenmode": {
              "description": "Determines whether this color bar's length (i.e. the measure in the color variation direction) is set in units of plot *fraction* or in *pixels. Use `len` to set the value.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "fraction",
                    "pixels"
                  ],
                  "default": "fraction"
                }
              ]
            },
            "minexponent": {
              "description": "Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 3
                }
              ]
            },
            "nticks": {
              "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "orientation": {
              "description": "Sets the orientation of the colorbar.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "h",
                    "v"
                  ],
                  "default": "v"
                }
              ]
            },
            "outlinecolor": {
              "description": "Sets the axis line color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "outlinewidth": {
              "description": "Sets the width (in px) of the axis line.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 1
                }
              ]
            },
            "separatethousands": {
              "description": "If \"true\", even 4-digit integers are separated",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            },
            "showexponent": {
              "description": "If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "all",
                    "first",
                    "last",
                    "none"
                  ],
                  "default": "all"
                }
              ]
            },
            "showticklabels": {
              "description": "Determines whether or not the tick labels are drawn.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": true
                }
              ]
            },
            "showtickprefix": {
              "description": "If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "all",
                    "first",
                    "last",
                    "none"
                  ],
                  "default": "all"
                }
              ]
            },
            "showticksuffix": {
              "description": "Same as `showtickprefix` but for tick suffixes.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "all",
                    "first",
                    "last",
                    "none"
                  ],
                  "default": "all"
                }
              ]
            },
            "thickness": {
              "description": "Sets the thickness of the color bar This measure excludes the size of the padding, ticks and labels.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 30
                }
              ]
            },
            "thicknessmode": {
              "description": "Determines whether this color bar's thickness (i.e. the measure in the constant color direction) is set in units of plot *fraction* or in *pixels*. Use `thickness` to set the value.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "fraction",
                    "pixels"
                  ],
                  "default": "pixels"
                }
              ]
            },
            "tick0": {
              "description": "Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L<f>* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears."
            },
            "tickangle": {
              "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": -180,
                  "maximum": 180,
                  "default": "auto"
                }
              ]
            },
            "tickcolor": {
              "description": "Sets the tick color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "tickfont": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "family": {
                  "pattern": ".*\\S.*$",
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                "shadow": {
                  "default": "none",
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "tickformat": {
              "default": "",
              "description": "Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*",
              "type": "string"
            },
            "tickformatstops": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "dtickrange": {
                    "description": "range [*min*, *max*], where *min*, *max* - dtick values which describe some zoom level, it is possible to omit *min* or *max* value by passing *null*",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "array",
                        "items": {},
                        "minItems": 2,
                        "maxItems": 2
                      }
                    ]
                  },
                  "enabled": {
                    "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "boolean",
                        "default": true
                      }
                    ]
                  },
                  "name": {
                    "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.",
                    "type": "string"
                  },
                  "templateitemname": {
                    "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.",
                    "type": "string"
                  },
                  "value": {
                    "default": "",
                    "description": "string - dtickformat for described zoom level, the same as *tickformat*",
                    "type": "string"
                  }
                },
                "additionalProperties": false
              },
              "minItems": 1
            },
            "ticklabeloverflow": {
              "description": "Determines how we handle tick labels that would overflow either the graph div or the domain of the axis. The default value for inside tick labels is *hide past domain*. In other cases the default is *hide past div*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "allow",
                    "hide past div",
                    "hide past domain"
                  ]
                }
              ]
            },
            "ticklabelposition": {
              "description": "Determines where tick labels are drawn relative to the ticks. Left and right options are used when `orientation` is *h*, top and bottom when `orientation` is *v*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "outside",
                    "inside",
                    "outside top",
                    "inside top",
                    "outside left",
                    "inside left",
                    "outside right",
                    "inside right",
                    "outside bottom",
                    "inside bottom"
                  ],
                  "default": "outside"
                }
              ]
            },
            "ticklabelstep": {
              "description": "Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 1,
                  "default": 1
                }
              ]
            },
            "ticklen": {
              "description": "Sets the tick length (in px).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 5
                }
              ]
            },
            "tickmode": {
              "description": "Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "auto",
                    "linear",
                    "array"
                  ]
                }
              ]
            },
            "tickprefix": {
              "default": "",
              "description": "Sets a tick label prefix.",
              "type": "string"
            },
            "ticks": {
              "description": "Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "outside",
                    "inside",
                    ""
                  ],
                  "default": ""
                }
              ]
            },
            "ticksuffix": {
              "default": "",
              "description": "Sets a tick label suffix.",
              "type": "string"
            },
            "ticktext": {
              "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  }
                }
              ]
            },
            "ticktextsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.",
              "type": "string"
            },
            "tickvals": {
              "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  }
                }
              ]
            },
            "tickvalssrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.",
              "type": "string"
            },
            "tickwidth": {
              "description": "Sets the tick width (in px).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 1
                }
              ]
            },
            "title": {
              "type": "object",
              "properties": {
                "font": {
                  "type": "object",
                  "properties": {
                    "color": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    "family": {
                      "pattern": ".*\\S.*$",
                      "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                      "type": "string"
                    },
                    "lineposition": {
                      "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    "shadow": {
                      "default": "none",
                      "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                      "type": "string"
                    },
                    "size": {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    "style": {
                      "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "textcase": {
                      "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "variant": {
                      "description": "Sets the variant of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    "weight": {
                      "description": "Sets the weight (or boldness) of the font.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    }
                  },
                  "additionalProperties": false
                },
                "side": {
                  "description": "Determines the location of color bar's title with respect to the color bar. Defaults to *top* when `orientation` if *v* and  defaults to *right* when `orientation` if *h*.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "right",
                        "top",
                        "bottom"
                      ]
                    }
                  ]
                },
                "text": {
                  "description": "Sets the title of the color bar.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "x": {
              "description": "Sets the x position with respect to `xref` of the color bar (in plot fraction). When `xref` is *paper*, defaults to 1.02 when `orientation` is *v* and 0.5 when `orientation` is *h*. When `xref` is *container*, defaults to *1* when `orientation` is *v* and 0.5 when `orientation` is *h*. Must be between *0* and *1* if `xref` is *container* and between *-2* and *3* if `xref` is *paper*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number"
                }
              ]
            },
            "xanchor": {
              "description": "Sets this color bar's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the color bar. Defaults to *left* when `orientation` is *v* and *center* when `orientation` is *h*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "left",
                    "center",
                    "right"
                  ]
                }
              ]
            },
            "xpad": {
              "description": "Sets the amount of padding (in px) along the x direction.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 10
                }
              ]
            },
            "xref": {
              "description": "Sets the container `x` refers to. *container* spans the entire `width` of the plot. *paper* refers to the width of the plotting area only.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "container",
                    "paper"
                  ],
                  "default": "paper"
                }
              ]
            },
            "y": {
              "description": "Sets the y position with respect to `yref` of the color bar (in plot fraction). When `yref` is *paper*, defaults to 0.5 when `orientation` is *v* and 1.02 when `orientation` is *h*. When `yref` is *container*, defaults to 0.5 when `orientation` is *v* and 1 when `orientation` is *h*. Must be between *0* and *1* if `yref` is *container* and between *-2* and *3* if `yref` is *paper*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number"
                }
              ]
            },
            "yanchor": {
              "description": "Sets this color bar's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the color bar. Defaults to *middle* when `orientation` is *v* and *bottom* when `orientation` is *h*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "top",
                    "middle",
                    "bottom"
                  ]
                }
              ]
            },
            "ypad": {
              "description": "Sets the amount of padding (in px) along the y direction.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 10
                }
              ]
            },
            "yref": {
              "description": "Sets the container `y` refers to. *container* spans the entire `height` of the plot. *paper* refers to the height of the plotting area only.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "container",
                    "paper"
                  ],
                  "default": "paper"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "colorscale": {
          "description": "Sets the colorscale. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)'], [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `cmin` and `cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Blackbody,Bluered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "$ref": "#/$defs/colorscale",
              "default": null
            }
          ]
        },
        "contour": {
          "type": "object",
          "properties": {
            "color": {
              "description": "Sets the color of the contour lines.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "show": {
              "description": "Sets whether or not dynamic contours are shown on hover",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            },
            "width": {
              "description": "Sets the width of the contour lines.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 1,
                  "maximum": 16,
                  "default": 2
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "customdata": {
          "description": "Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "customdatasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `customdata`.",
          "type": "string"
        },
        "flatshading": {
          "description": "Determines whether or not normal smoothing is applied to the meshes, creating meshes with an angular, low-poly look via flat reflections.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "hoverinfo": {
          "description": "Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired.",
          "oneOf": [
            {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "oneOf": [
                    {
                      "type": "string",
                      "enum": [
                        "all",
                        "none",
                        "skip"
                      ]
                    },
                    {
                      "type": "string",
                      "pattern": "^(x|y|z|text|name)(\\+(x|y|z|text|name))*$"
                    }
                  ],
                  "default": "all"
                }
              ]
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "oneOf": [
                      {
                        "type": "string",
                        "enum": [
                          "all",
                          "none",
                          "skip"
                        ]
                      },
                      {
                        "type": "string",
                        "pattern": "^(x|y|z|text|name)(\\+(x|y|z|text|name))*$"
                      }
                    ],
                    "default": "all"
                  }
                ]
              }
            }
          ]
        },
        "hoverinfosrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.",
          "type": "string"
        },
        "hoverlabel": {
          "type": "object",
          "properties": {
            "align": {
              "description": "Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "left",
                        "right",
                        "auto"
                      ],
                      "default": "auto"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "left",
                          "right",
                          "auto"
                        ],
                        "default": "auto"
                      }
                    ]
                  }
                }
              ]
            },
            "alignsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `align`.",
              "type": "string"
            },
            "bgcolor": {
              "description": "Sets the background color of the hover labels for this trace",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "bgcolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.",
              "type": "string"
            },
            "bordercolor": {
              "description": "Sets the border color of the hover labels for this trace.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "bordercolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.",
              "type": "string"
            },
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "colorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `color`.",
                  "type": "string"
                },
                "family": {
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "oneOf": [
                    {
                      "pattern": ".*\\S.*$",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "pattern": ".*\\S.*$",
                        "type": "string"
                      }
                    },
                    {
                      "$ref": "#/$defs/query-string"
                    }
                  ]
                },
                "familysrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `family`.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "oneOf": [
                              {
                                "type": "string",
                                "enum": [
                                  "none"
                                ]
                              },
                              {
                                "type": "string",
                                "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                              }
                            ],
                            "default": "none"
                          }
                        ]
                      }
                    }
                  ]
                },
                "linepositionsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.",
                  "type": "string"
                },
                "shadow": {
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "oneOf": [
                    {
                      "default": "none",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "default": "none",
                        "type": "string"
                      }
                    }
                  ]
                },
                "shadowsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `shadow`.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 1
                          }
                        ]
                      }
                    }
                  ]
                },
                "sizesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `size`.",
                  "type": "string"
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "italic"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "stylesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `style`.",
                  "type": "string"
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "word caps",
                              "upper",
                              "lower"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "textcasesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `textcase`.",
                  "type": "string"
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "small-caps",
                              "all-small-caps",
                              "all-petite-caps",
                              "petite-caps",
                              "unicase"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "variantsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `variant`.",
                  "type": "string"
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 1000,
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "weightsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `weight`.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "namelength": {
              "description": "Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": -1,
                      "default": 15
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "integer",
                        "minimum": -1,
                        "default": 15
                      }
                    ]
                  }
                }
              ]
            },
            "namelengthsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `namelength`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "hovertemplate": {
          "description": "Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". <https://github.com/d3/d3-format/tree/v1.4.5#d3-format> for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format> for details on the date formatting syntax. The variables available in `hovertemplate` are the ones emitted as event data described at this link <https://plotly.com/javascript/plotlyjs-events/#event-data>. Additionally, every attributes that can be specified per-point (the ones that are `arrayOk: true`) are available.  Anything contained in tag `<extra>` is displayed in the secondary box, for example \"<extra>{fullData.name}</extra>\". To hide the secondary box completely, use an empty tag `<extra></extra>`.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "hovertemplatesrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.",
          "type": "string"
        },
        "hovertext": {
          "description": "Same as `text`.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "hovertextsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.",
          "type": "string"
        },
        "ids": {
          "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "idssrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `ids`.",
          "type": "string"
        },
        "isomax": {
          "description": "Sets the maximum boundary for iso-surface plot.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number"
            }
          ]
        },
        "isomin": {
          "description": "Sets the minimum boundary for iso-surface plot.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number"
            }
          ]
        },
        "legend": {
          "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "legend",
              "pattern": "^legend([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "legendgroup": {
          "default": "",
          "description": "Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items.",
          "type": "string"
        },
        "legendgrouptitle": {
          "type": "object",
          "properties": {
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "family": {
                  "pattern": ".*\\S.*$",
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                "shadow": {
                  "default": "none",
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "text": {
              "default": "",
              "description": "Sets the title of the legend group.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "legendrank": {
          "description": "Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": 1000
            }
          ]
        },
        "legendwidth": {
          "description": "Sets the width (in px or fraction) of the legend for this trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0
            }
          ]
        },
        "lighting": {
          "type": "object",
          "properties": {
            "ambient": {
              "description": "Ambient light increases overall color visibility but can wash out the image.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 1,
                  "default": 0.8
                }
              ]
            },
            "diffuse": {
              "description": "Represents the extent that incident rays are reflected in a range of angles.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 1,
                  "default": 0.8
                }
              ]
            },
            "facenormalsepsilon": {
              "description": "Epsilon for face normals calculation avoids math issues arising from degenerate geometry.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 1,
                  "default": 0
                }
              ]
            },
            "fresnel": {
              "description": "Represents the reflectance as a dependency of the viewing angle; e.g. paper is reflective when viewing it from the edge of the paper (almost 90 degrees), causing shine.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 5,
                  "default": 0.2
                }
              ]
            },
            "roughness": {
              "description": "Alters specular reflection; the rougher the surface, the wider and less contrasty the shine.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 1,
                  "default": 0.5
                }
              ]
            },
            "specular": {
              "description": "Represents the level that incident rays are reflected in a single direction, causing shine.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 2,
                  "default": 0.05
                }
              ]
            },
            "vertexnormalsepsilon": {
              "description": "Epsilon for vertex normals calculation avoids math issues arising from degenerate geometry.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 1,
                  "default": 1e-12
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "lightposition": {
          "type": "object",
          "properties": {
            "x": {
              "description": "Numeric vector, representing the X coordinate for each vertex.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": -100000,
                  "maximum": 100000,
                  "default": 100000
                }
              ]
            },
            "y": {
              "description": "Numeric vector, representing the Y coordinate for each vertex.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": -100000,
                  "maximum": 100000,
                  "default": 100000
                }
              ]
            },
            "z": {
              "description": "Numeric vector, representing the Z coordinate for each vertex.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": -100000,
                  "maximum": 100000,
                  "default": 0
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "metasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `meta`.",
          "type": "string"
        },
        "name": {
          "description": "Sets the trace name. The trace name appears as the legend item and on hover.",
          "type": "string"
        },
        "opacity": {
          "description": "Sets the opacity of the surface. Please note that in the case of using high `opacity` values for example a value greater than or equal to 0.5 on two surfaces (and 0.25 with four surfaces), an overlay of multiple transparent surfaces may not perfectly be sorted in depth by the webgl API. This behavior may be improved in the near future and is subject to change.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0,
              "maximum": 1,
              "default": 1
            }
          ]
        },
        "opacityscale": {
          "description": "Sets the opacityscale. The opacityscale must be an array containing arrays mapping a normalized value to an opacity value. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 1], [0.5, 0.2], [1, 1]]` means that higher/lower values would have higher opacity values and those in the middle would be more transparent Alternatively, `opacityscale` may be a palette name string of the following list: 'min', 'max', 'extremes' and 'uniform'. The default is 'uniform'."
        },
        "reversescale": {
          "description": "Reverses the color mapping if true. If true, `cmin` will correspond to the last color in the array and `cmax` will correspond to the first color.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": false
            }
          ]
        },
        "scene": {
          "description": "Sets a reference between this trace's 3D coordinate system and a 3D scene. If *scene* (the default value), the (x,y,z) coordinates refer to `layout.scene`. If *scene2*, the (x,y,z) coordinates refer to `layout.scene2`, and so on.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "scene",
              "pattern": "^scene([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "showlegend": {
          "description": "Determines whether or not an item corresponding to this trace is shown in the legend.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": false
            }
          ]
        },
        "showscale": {
          "description": "Determines whether or not a colorbar is displayed for this trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "slices": {
          "type": "object",
          "properties": {
            "x": {
              "type": "object",
              "properties": {
                "fill": {
                  "description": "Sets the fill ratio of the `slices`. The default fill value of the `slices` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1,
                      "default": 1
                    }
                  ]
                },
                "locations": {
                  "description": "Specifies the location(s) of slices on the axis. When not specified slices would be created for all points of the axis x except start and end.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "string"
                          }
                        ]
                      },
                      "default": []
                    }
                  ]
                },
                "locationssrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `locations`.",
                  "type": "string"
                },
                "show": {
                  "description": "Determines whether or not slice planes about the x dimension are drawn.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": false
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "y": {
              "type": "object",
              "properties": {
                "fill": {
                  "description": "Sets the fill ratio of the `slices`. The default fill value of the `slices` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1,
                      "default": 1
                    }
                  ]
                },
                "locations": {
                  "description": "Specifies the location(s) of slices on the axis. When not specified slices would be created for all points of the axis y except start and end.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "string"
                          }
                        ]
                      },
                      "default": []
                    }
                  ]
                },
                "locationssrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `locations`.",
                  "type": "string"
                },
                "show": {
                  "description": "Determines whether or not slice planes about the y dimension are drawn.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": false
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "z": {
              "type": "object",
              "properties": {
                "fill": {
                  "description": "Sets the fill ratio of the `slices`. The default fill value of the `slices` is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1,
                      "default": 1
                    }
                  ]
                },
                "locations": {
                  "description": "Specifies the location(s) of slices on the axis. When not specified slices would be created for all points of the axis z except start and end.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "string"
                          }
                        ]
                      },
                      "default": []
                    }
                  ]
                },
                "locationssrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `locations`.",
                  "type": "string"
                },
                "show": {
                  "description": "Determines whether or not slice planes about the z dimension are drawn.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "boolean",
                      "default": false
                    }
                  ]
                }
              },
              "additionalProperties": false
            }
          },
          "additionalProperties": false
        },
        "spaceframe": {
          "type": "object",
          "properties": {
            "fill": {
              "description": "Sets the fill ratio of the `spaceframe` elements. The default fill value is 1 meaning that they are entirely shaded. Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 1,
                  "default": 1
                }
              ]
            },
            "show": {
              "description": "Displays/hides tetrahedron shapes between minimum and maximum iso-values. Often useful when either caps or surfaces are disabled or filled with values less than 1.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": false
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "stream": {
          "type": "object",
          "properties": {
            "maxpoints": {
              "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 10000,
                  "default": 500
                }
              ]
            },
            "token": {
              "pattern": ".*\\S.*$",
              "description": "The stream id number links a data trace on a plot with a stream. See <https://chart-studio.plotly.com/settings> for more details.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "surface": {
          "type": "object",
          "properties": {
            "count": {
              "description": "Sets the number of iso-surfaces between minimum and maximum iso-values. By default this value is 2 meaning that only minimum and maximum surfaces would be drawn.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 1,
                  "default": 2
                }
              ]
            },
            "fill": {
              "description": "Sets the fill ratio of the iso-surface. The default fill value of the surface is 1 meaning that they are entirely shaded. On the other hand Applying a `fill` ratio less than one would allow the creation of openings parallel to the edges.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 1,
                  "default": 1
                }
              ]
            },
            "pattern": {
              "description": "Sets the surface pattern of the iso-surface 3-D sections. The default pattern of the surface is `all` meaning that the rest of surface elements would be shaded. The check options (either 1 or 2) could be used to draw half of the squares on the surface. Using various combinations of capital `A`, `B`, `C`, `D` and `E` may also be used to reduce the number of triangles on the iso-surfaces and creating other patterns of interest.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "oneOf": [
                    {
                      "type": "string",
                      "enum": [
                        "all",
                        "odd",
                        "even"
                      ]
                    },
                    {
                      "type": "string",
                      "pattern": "^(A|B|C|D|E)(\\+(A|B|C|D|E))*$"
                    }
                  ],
                  "default": "all"
                }
              ]
            },
            "show": {
              "description": "Hides/displays surfaces between minimum and maximum iso-values.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": true
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "text": {
          "description": "Sets the text elements associated with the vertices. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "textsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `text`.",
          "type": "string"
        },
        "uid": {
          "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.",
          "type": "string"
        },
        "uirevision": {
          "description": "Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves."
        },
        "value": {
          "description": "Sets the 4th dimension (value) of the vertices.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "valuehoverformat": {
          "default": "",
          "description": "Sets the hover text formatting rulefor `value`  using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format.By> default the values are formatted using generic number format.",
          "type": "string"
        },
        "valuesrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `value`.",
          "type": "string"
        },
        "visible": {
          "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                true,
                false,
                "legendonly"
              ],
              "default": true
            }
          ]
        },
        "x": {
          "description": "Sets the X coordinates of the vertices on X axis.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "xhoverformat": {
          "default": "",
          "description": "Sets the hover text formatting rulefor `x`  using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.",
          "type": "string"
        },
        "xsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `x`.",
          "type": "string"
        },
        "y": {
          "description": "Sets the Y coordinates of the vertices on Y axis.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "yhoverformat": {
          "default": "",
          "description": "Sets the hover text formatting rulefor `y`  using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.",
          "type": "string"
        },
        "ysrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `y`.",
          "type": "string"
        },
        "z": {
          "description": "Sets the Z coordinates of the vertices on Z axis.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "zhoverformat": {
          "default": "",
          "description": "Sets the hover text formatting rulefor `z`  using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `zaxis.hoverformat`.",
          "type": "string"
        },
        "zsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `z`.",
          "type": "string"
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false
    },
    "Waterfall": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "$id": "https://visivo.io/trace-properties/schema",
      "description": "A schema to validate plotly trace properties",
      "type": "object",
      "properties": {
        "type": {
          "const": "waterfall"
        },
        "alignmentgroup": {
          "default": "",
          "description": "Set several traces linked to the same position axis or matching axes to the same alignmentgroup. This controls whether bars compute their positional range dependently or independently.",
          "type": "string"
        },
        "base": {
          "description": "Sets where the bar base is drawn (in position axis units).",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": null
            }
          ]
        },
        "cliponaxis": {
          "description": "Determines whether the text nodes are clipped about the subplot axes. To show the text nodes above axis lines and tick labels, make sure to set `xaxis.layer` and `yaxis.layer` to *below traces*.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "connector": {
          "type": "object",
          "properties": {
            "line": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the line color.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "dash": {
                  "default": "solid",
                  "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).",
                  "type": "string"
                },
                "width": {
                  "description": "Sets the line width (in px).",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 0,
                      "default": 2
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "mode": {
              "description": "Sets the shape of connector lines.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "spanning",
                    "between"
                  ],
                  "default": "between"
                }
              ]
            },
            "visible": {
              "description": "Determines if connector lines are drawn. ",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": true
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "constraintext": {
          "description": "Constrain the size of text inside or outside a bar to be no larger than the bar itself.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "inside",
                "outside",
                "both",
                "none"
              ],
              "default": "both"
            }
          ]
        },
        "customdata": {
          "description": "Assigns extra data each datum. This may be useful when listening to hover, click and selection events. Note that, *scatter* traces also appends customdata items in the markers DOM elements",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "customdatasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `customdata`.",
          "type": "string"
        },
        "decreasing": {
          "type": "object",
          "properties": {
            "marker": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the marker color of all decreasing values.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "line": {
                  "type": "object",
                  "properties": {
                    "color": {
                      "description": "Sets the line color of all decreasing values.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    "width": {
                      "description": "Sets the line width of all decreasing values.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 0,
                          "default": 0
                        }
                      ]
                    }
                  },
                  "additionalProperties": false
                }
              },
              "additionalProperties": false
            }
          },
          "additionalProperties": false
        },
        "dx": {
          "description": "Sets the x coordinate step. See `x0` for more info.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": 1
            }
          ]
        },
        "dy": {
          "description": "Sets the y coordinate step. See `y0` for more info.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": 1
            }
          ]
        },
        "hoverinfo": {
          "description": "Determines which trace information appear on hover. If `none` or `skip` are set, no information is displayed upon hovering. But, if `none` is set, click and hover events are still fired.",
          "oneOf": [
            {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "oneOf": [
                    {
                      "type": "string",
                      "enum": [
                        "all",
                        "none",
                        "skip"
                      ]
                    },
                    {
                      "type": "string",
                      "pattern": "^(name|x|y|text|initial|delta|final)(\\+(name|x|y|text|initial|delta|final))*$"
                    }
                  ],
                  "default": "all"
                }
              ]
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "oneOf": [
                      {
                        "type": "string",
                        "enum": [
                          "all",
                          "none",
                          "skip"
                        ]
                      },
                      {
                        "type": "string",
                        "pattern": "^(name|x|y|text|initial|delta|final)(\\+(name|x|y|text|initial|delta|final))*$"
                      }
                    ],
                    "default": "all"
                  }
                ]
              }
            }
          ]
        },
        "hoverinfosrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hoverinfo`.",
          "type": "string"
        },
        "hoverlabel": {
          "type": "object",
          "properties": {
            "align": {
              "description": "Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "left",
                        "right",
                        "auto"
                      ],
                      "default": "auto"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "left",
                          "right",
                          "auto"
                        ],
                        "default": "auto"
                      }
                    ]
                  }
                }
              ]
            },
            "alignsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `align`.",
              "type": "string"
            },
            "bgcolor": {
              "description": "Sets the background color of the hover labels for this trace",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "bgcolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `bgcolor`.",
              "type": "string"
            },
            "bordercolor": {
              "description": "Sets the border color of the hover labels for this trace.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "bordercolorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `bordercolor`.",
              "type": "string"
            },
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "$ref": "#/$defs/color"
                          }
                        ]
                      }
                    }
                  ]
                },
                "colorsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `color`.",
                  "type": "string"
                },
                "family": {
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "oneOf": [
                    {
                      "pattern": ".*\\S.*$",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "pattern": ".*\\S.*$",
                        "type": "string"
                      }
                    },
                    {
                      "$ref": "#/$defs/query-string"
                    }
                  ]
                },
                "familysrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `family`.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "none"
                              ]
                            },
                            {
                              "type": "string",
                              "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                            }
                          ],
                          "default": "none"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "oneOf": [
                              {
                                "type": "string",
                                "enum": [
                                  "none"
                                ]
                              },
                              {
                                "type": "string",
                                "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                              }
                            ],
                            "default": "none"
                          }
                        ]
                      }
                    }
                  ]
                },
                "linepositionsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.",
                  "type": "string"
                },
                "shadow": {
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "oneOf": [
                    {
                      "default": "none",
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "default": "none",
                        "type": "string"
                      }
                    }
                  ]
                },
                "shadowsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `shadow`.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 1
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "number",
                            "minimum": 1
                          }
                        ]
                      }
                    }
                  ]
                },
                "sizesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `size`.",
                  "type": "string"
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "italic"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "italic"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "stylesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `style`.",
                  "type": "string"
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "word caps",
                            "upper",
                            "lower"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "word caps",
                              "upper",
                              "lower"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "textcasesrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `textcase`.",
                  "type": "string"
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "enum": [
                            "normal",
                            "small-caps",
                            "all-small-caps",
                            "all-petite-caps",
                            "petite-caps",
                            "unicase"
                          ],
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "enum": [
                              "normal",
                              "small-caps",
                              "all-small-caps",
                              "all-petite-caps",
                              "petite-caps",
                              "unicase"
                            ],
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "variantsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `variant`.",
                  "type": "string"
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1000,
                          "default": "normal"
                        }
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/$defs/query-string"
                          },
                          {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 1000,
                            "default": "normal"
                          }
                        ]
                      }
                    }
                  ]
                },
                "weightsrc": {
                  "description": "Sets the source reference on Chart Studio Cloud for `weight`.",
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "namelength": {
              "description": "Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": -1,
                      "default": 15
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "integer",
                        "minimum": -1,
                        "default": 15
                      }
                    ]
                  }
                }
              ]
            },
            "namelengthsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `namelength`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "hovertemplate": {
          "description": "Template string used for rendering the information that appear on hover box. Note that this will override `hoverinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\" as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown. Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". <https://github.com/d3/d3-format/tree/v1.4.5#d3-format> for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format> for details on the date formatting syntax. The variables available in `hovertemplate` are the ones emitted as event data described at this link <https://plotly.com/javascript/plotlyjs-events/#event-data>. Additionally, every attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `initial`, `delta` and `final`. Anything contained in tag `<extra>` is displayed in the secondary box, for example \"<extra>{fullData.name}</extra>\". To hide the secondary box completely, use an empty tag `<extra></extra>`.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "hovertemplatesrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hovertemplate`.",
          "type": "string"
        },
        "hovertext": {
          "description": "Sets hover text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. To be seen, trace `hoverinfo` must contain a *text* flag.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "hovertextsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `hovertext`.",
          "type": "string"
        },
        "ids": {
          "description": "Assigns id labels to each datum. These ids for object constancy of data points during animation. Should be an array of strings, not numbers or any other type.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "idssrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `ids`.",
          "type": "string"
        },
        "increasing": {
          "type": "object",
          "properties": {
            "marker": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the marker color of all increasing values.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "line": {
                  "type": "object",
                  "properties": {
                    "color": {
                      "description": "Sets the line color of all increasing values.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    "width": {
                      "description": "Sets the line width of all increasing values.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 0,
                          "default": 0
                        }
                      ]
                    }
                  },
                  "additionalProperties": false
                }
              },
              "additionalProperties": false
            }
          },
          "additionalProperties": false
        },
        "insidetextanchor": {
          "description": "Determines if texts are kept at center or start/end points in `textposition` *inside* mode.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "end",
                "middle",
                "start"
              ],
              "default": "end"
            }
          ]
        },
        "insidetextfont": {
          "type": "object",
          "properties": {
            "color": {
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "colorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `color`.",
              "type": "string"
            },
            "family": {
              "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
              "oneOf": [
                {
                  "pattern": ".*\\S.*$",
                  "type": "string"
                },
                {
                  "type": "array",
                  "items": {
                    "pattern": ".*\\S.*$",
                    "type": "string"
                  }
                },
                {
                  "$ref": "#/$defs/query-string"
                }
              ]
            },
            "familysrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `family`.",
              "type": "string"
            },
            "lineposition": {
              "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "oneOf": [
                          {
                            "type": "string",
                            "enum": [
                              "none"
                            ]
                          },
                          {
                            "type": "string",
                            "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                          }
                        ],
                        "default": "none"
                      }
                    ]
                  }
                }
              ]
            },
            "linepositionsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.",
              "type": "string"
            },
            "shadow": {
              "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
              "oneOf": [
                {
                  "default": "none",
                  "type": "string"
                },
                {
                  "type": "array",
                  "items": {
                    "default": "none",
                    "type": "string"
                  }
                }
              ]
            },
            "shadowsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `shadow`.",
              "type": "string"
            },
            "size": {
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 1
                      }
                    ]
                  }
                }
              ]
            },
            "sizesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `size`.",
              "type": "string"
            },
            "style": {
              "description": "Sets whether a font should be styled with a normal or italic face from its family.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "italic"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "stylesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `style`.",
              "type": "string"
            },
            "textcase": {
              "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "word caps",
                          "upper",
                          "lower"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "textcasesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `textcase`.",
              "type": "string"
            },
            "variant": {
              "description": "Sets the variant of the font.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "small-caps",
                          "all-small-caps",
                          "all-petite-caps",
                          "petite-caps",
                          "unicase"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "variantsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `variant`.",
              "type": "string"
            },
            "weight": {
              "description": "Sets the weight (or boldness) of the font.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 1000,
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "weightsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `weight`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "legend": {
          "description": "Sets the reference to a legend to show this trace in. References to these legends are *legend*, *legend2*, *legend3*, etc. Settings for these legends are set in the layout, under `layout.legend`, `layout.legend2`, etc.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "legend",
              "pattern": "^legend([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "legendgroup": {
          "default": "",
          "description": "Sets the legend group for this trace. Traces and shapes part of the same legend group hide/show at the same time when toggling legend items.",
          "type": "string"
        },
        "legendgrouptitle": {
          "type": "object",
          "properties": {
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "family": {
                  "pattern": ".*\\S.*$",
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                "shadow": {
                  "default": "none",
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "text": {
              "default": "",
              "description": "Sets the title of the legend group.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "legendrank": {
          "description": "Sets the legend rank for this trace. Items and groups with smaller ranks are presented on top/left side while with *reversed* `legend.traceorder` they are on bottom/right side. The default legendrank is 1000, so that you can use ranks less than 1000 to place certain items before all unranked items, and ranks greater than 1000 to go after all unranked items. When having unranked or equal rank items shapes would be displayed after traces i.e. according to their order in data and layout.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": 1000
            }
          ]
        },
        "legendwidth": {
          "description": "Sets the width (in px or fraction) of the legend for this trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0
            }
          ]
        },
        "measure": {
          "description": "An array containing types of values. By default the values are considered as 'relative'. However; it is possible to use 'total' to compute the sums. Also 'absolute' could be applied to reset the computed total or to declare an initial value where needed.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              },
              "default": []
            }
          ]
        },
        "measuresrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `measure`.",
          "type": "string"
        },
        "metasrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `meta`.",
          "type": "string"
        },
        "name": {
          "description": "Sets the trace name. The trace name appears as the legend item and on hover.",
          "type": "string"
        },
        "offset": {
          "description": "Shifts the position where the bar is drawn (in position axis units). In *group* barmode, traces that set *offset* will be excluded and drawn in *overlay* mode instead.",
          "oneOf": [
            {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "default": null
                }
              ]
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "number",
                    "default": null
                  }
                ]
              }
            }
          ]
        },
        "offsetgroup": {
          "default": "",
          "description": "Set several traces linked to the same position axis or matching axes to the same offsetgroup where bars of the same position coordinate will line up.",
          "type": "string"
        },
        "offsetsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `offset`.",
          "type": "string"
        },
        "opacity": {
          "description": "Sets the opacity of the trace.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0,
              "maximum": 1,
              "default": 1
            }
          ]
        },
        "orientation": {
          "description": "Sets the orientation of the bars. With *v* (*h*), the value of the each bar spans along the vertical (horizontal).",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "v",
                "h"
              ]
            }
          ]
        },
        "outsidetextfont": {
          "type": "object",
          "properties": {
            "color": {
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "colorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `color`.",
              "type": "string"
            },
            "family": {
              "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
              "oneOf": [
                {
                  "pattern": ".*\\S.*$",
                  "type": "string"
                },
                {
                  "type": "array",
                  "items": {
                    "pattern": ".*\\S.*$",
                    "type": "string"
                  }
                },
                {
                  "$ref": "#/$defs/query-string"
                }
              ]
            },
            "familysrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `family`.",
              "type": "string"
            },
            "lineposition": {
              "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "oneOf": [
                          {
                            "type": "string",
                            "enum": [
                              "none"
                            ]
                          },
                          {
                            "type": "string",
                            "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                          }
                        ],
                        "default": "none"
                      }
                    ]
                  }
                }
              ]
            },
            "linepositionsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.",
              "type": "string"
            },
            "shadow": {
              "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
              "oneOf": [
                {
                  "default": "none",
                  "type": "string"
                },
                {
                  "type": "array",
                  "items": {
                    "default": "none",
                    "type": "string"
                  }
                }
              ]
            },
            "shadowsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `shadow`.",
              "type": "string"
            },
            "size": {
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 1
                      }
                    ]
                  }
                }
              ]
            },
            "sizesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `size`.",
              "type": "string"
            },
            "style": {
              "description": "Sets whether a font should be styled with a normal or italic face from its family.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "italic"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "stylesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `style`.",
              "type": "string"
            },
            "textcase": {
              "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "word caps",
                          "upper",
                          "lower"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "textcasesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `textcase`.",
              "type": "string"
            },
            "variant": {
              "description": "Sets the variant of the font.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "small-caps",
                          "all-small-caps",
                          "all-petite-caps",
                          "petite-caps",
                          "unicase"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "variantsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `variant`.",
              "type": "string"
            },
            "weight": {
              "description": "Sets the weight (or boldness) of the font.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 1000,
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "weightsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `weight`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "selectedpoints": {
          "description": "Array containing integer indices of selected points. Has an effect only for traces that support selections. Note that an empty array means an empty selection where the `unselected` are turned on for all points, whereas, any other non-array values means no selection all where the `selected` and `unselected` styles have no effect."
        },
        "showlegend": {
          "description": "Determines whether or not an item corresponding to this trace is shown in the legend.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "stream": {
          "type": "object",
          "properties": {
            "maxpoints": {
              "description": "Sets the maximum number of points to keep on the plots from an incoming stream. If `maxpoints` is set to *50*, only the newest 50 points will be displayed on the plot.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 10000,
                  "default": 500
                }
              ]
            },
            "token": {
              "pattern": ".*\\S.*$",
              "description": "The stream id number links a data trace on a plot with a stream. See <https://chart-studio.plotly.com/settings> for more details.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "text": {
          "description": "Sets text elements associated with each (x,y) pair. If a single string, the same string appears over all the data points. If an array of string, the items are mapped in order to the this trace's (x,y) coordinates. If trace `hoverinfo` contains a *text* flag and *hovertext* is not set, these elements will be seen in the hover labels.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "textangle": {
          "description": "Sets the angle of the tick labels with respect to the bar. For example, a `tickangle` of -90 draws the tick labels vertically. With *auto* the texts may automatically be rotated to fit with the maximum size in bars.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": -180,
              "maximum": 180,
              "default": "auto"
            }
          ]
        },
        "textfont": {
          "type": "object",
          "properties": {
            "color": {
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "$ref": "#/$defs/color"
                      }
                    ]
                  }
                }
              ]
            },
            "colorsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `color`.",
              "type": "string"
            },
            "family": {
              "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
              "oneOf": [
                {
                  "pattern": ".*\\S.*$",
                  "type": "string"
                },
                {
                  "type": "array",
                  "items": {
                    "pattern": ".*\\S.*$",
                    "type": "string"
                  }
                },
                {
                  "$ref": "#/$defs/query-string"
                }
              ]
            },
            "familysrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `family`.",
              "type": "string"
            },
            "lineposition": {
              "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "oneOf": [
                          {
                            "type": "string",
                            "enum": [
                              "none"
                            ]
                          },
                          {
                            "type": "string",
                            "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                          }
                        ],
                        "default": "none"
                      }
                    ]
                  }
                }
              ]
            },
            "linepositionsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `lineposition`.",
              "type": "string"
            },
            "shadow": {
              "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
              "oneOf": [
                {
                  "default": "none",
                  "type": "string"
                },
                {
                  "type": "array",
                  "items": {
                    "default": "none",
                    "type": "string"
                  }
                }
              ]
            },
            "shadowsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `shadow`.",
              "type": "string"
            },
            "size": {
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 1
                      }
                    ]
                  }
                }
              ]
            },
            "sizesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `size`.",
              "type": "string"
            },
            "style": {
              "description": "Sets whether a font should be styled with a normal or italic face from its family.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "italic"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "stylesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `style`.",
              "type": "string"
            },
            "textcase": {
              "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "word caps",
                          "upper",
                          "lower"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "textcasesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `textcase`.",
              "type": "string"
            },
            "variant": {
              "description": "Sets the variant of the font.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "normal",
                          "small-caps",
                          "all-small-caps",
                          "all-petite-caps",
                          "petite-caps",
                          "unicase"
                        ],
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "variantsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `variant`.",
              "type": "string"
            },
            "weight": {
              "description": "Sets the weight (or boldness) of the font.",
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 1000,
                        "default": "normal"
                      }
                    ]
                  }
                }
              ]
            },
            "weightsrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `weight`.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "textinfo": {
          "description": "Determines which trace information appear on the graph. In the case of having multiple waterfalls, totals are computed separately (per trace).",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "oneOf": [
                {
                  "type": "string",
                  "enum": [
                    "none"
                  ]
                },
                {
                  "type": "string",
                  "pattern": "^(label|text|initial|delta|final)(\\+(label|text|initial|delta|final))*$"
                }
              ]
            }
          ]
        },
        "textposition": {
          "description": "Specifies the location of the `text`. *inside* positions `text` inside, next to the bar end (rotated and scaled if needed). *outside* positions `text` outside, next to the bar end (scaled if needed), unless there is another bar stacked on this one, then the text gets pushed inside. *auto* tries to position `text` inside the bar, but if the bar is too small and no bar is stacked on this one the text is moved outside. If *none*, no text appears.",
          "oneOf": [
            {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "inside",
                    "outside",
                    "auto",
                    "none"
                  ],
                  "default": "auto"
                }
              ]
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "enum": [
                      "inside",
                      "outside",
                      "auto",
                      "none"
                    ],
                    "default": "auto"
                  }
                ]
              }
            }
          ]
        },
        "textpositionsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `textposition`.",
          "type": "string"
        },
        "textsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `text`.",
          "type": "string"
        },
        "texttemplate": {
          "description": "Template string used for rendering the information text that appear on points. Note that this will override `textinfo`. Variables are inserted using %{variable}, for example \"y: %{y}\". Numbers are formatted using d3-format's syntax %{variable:d3-format}, for example \"Price: %{y:$.2f}\". <https://github.com/d3/d3-format/tree/v1.4.5#d3-format> for details on the formatting syntax. Dates are formatted using d3-time-format's syntax %{variable|d3-time-format}, for example \"Day: %{2019-01-01|%A}\". <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format> for details on the date formatting syntax. Every attributes that can be specified per-point (the ones that are `arrayOk: true`) are available. Finally, the template string has access to variables `initial`, `delta`, `final` and `label`.",
          "oneOf": [
            {
              "default": "",
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "default": "",
                "type": "string"
              }
            }
          ]
        },
        "texttemplatesrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `texttemplate`.",
          "type": "string"
        },
        "totals": {
          "type": "object",
          "properties": {
            "marker": {
              "type": "object",
              "properties": {
                "color": {
                  "description": "Sets the marker color of all intermediate sums and total values.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "line": {
                  "type": "object",
                  "properties": {
                    "color": {
                      "description": "Sets the line color of all intermediate sums and total values.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "$ref": "#/$defs/color"
                        }
                      ]
                    },
                    "width": {
                      "description": "Sets the line width of all intermediate sums and total values.",
                      "oneOf": [
                        {
                          "$ref": "#/$defs/query-string"
                        },
                        {
                          "type": "number",
                          "minimum": 0,
                          "default": 0
                        }
                      ]
                    }
                  },
                  "additionalProperties": false
                }
              },
              "additionalProperties": false
            }
          },
          "additionalProperties": false
        },
        "uid": {
          "description": "Assign an id to this trace, Use this to provide object constancy between traces during animations and transitions.",
          "type": "string"
        },
        "uirevision": {
          "description": "Controls persistence of some user-driven changes to the trace: `constraintrange` in `parcoords` traces, as well as some `editable: true` modifications such as `name` and `colorbar.title`. Defaults to `layout.uirevision`. Note that other user-driven trace attribute changes are controlled by `layout` attributes: `trace.visible` is controlled by `layout.legend.uirevision`, `selectedpoints` is controlled by `layout.selectionrevision`, and `colorbar.(x|y)` (accessible with `config: {editable: true}`) is controlled by `layout.editrevision`. Trace changes are tracked by `uid`, which only falls back on trace index if no `uid` is provided. So if your app can add/remove traces before the end of the `data` array, such that the same trace has a different index, you can still preserve user-driven changes if you give each trace a `uid` that stays with it as it moves."
        },
        "visible": {
          "description": "Determines whether or not this trace is visible. If *legendonly*, the trace is not drawn, but can appear as a legend item (provided that the legend itself is visible).",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                true,
                false,
                "legendonly"
              ],
              "default": true
            }
          ]
        },
        "width": {
          "description": "Sets the bar width (in position axis units).",
          "oneOf": [
            {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": null
                }
              ]
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "number",
                    "minimum": 0,
                    "default": null
                  }
                ]
              }
            }
          ]
        },
        "widthsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `width`.",
          "type": "string"
        },
        "x": {
          "description": "Sets the x coordinates.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "x0": {
          "default": 0,
          "description": "Alternate to `x`. Builds a linear space of x coordinates. Use with `dx` where `x0` is the starting coordinate and `dx` the step."
        },
        "xaxis": {
          "description": "Sets a reference between this trace's x coordinates and a 2D cartesian x axis. If *x* (the default value), the x coordinates refer to `layout.xaxis`. If *x2*, the x coordinates refer to `layout.xaxis2`, and so on.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "x",
              "pattern": "^x([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "xhoverformat": {
          "default": "",
          "description": "Sets the hover text formatting rulefor `x`  using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `xaxis.hoverformat`.",
          "type": "string"
        },
        "xperiod": {
          "default": 0,
          "description": "Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M<n>* on the x axis. Special values in the form of *M<n>* could be used to declare the number of months. In this case `n` must be a positive integer."
        },
        "xperiod0": {
          "description": "Only relevant when the axis `type` is *date*. Sets the base for period positioning in milliseconds or date string on the x0 axis. When `x0period` is round number of weeks, the `x0period0` by default would be on a Sunday i.e. 2000-01-02, otherwise it would be at 2000-01-01."
        },
        "xperiodalignment": {
          "description": "Only relevant when the axis `type` is *date*. Sets the alignment of data points on the x axis.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "start",
                "middle",
                "end"
              ],
              "default": "middle"
            }
          ]
        },
        "xsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `x`.",
          "type": "string"
        },
        "y": {
          "description": "Sets the y coordinates.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "y0": {
          "default": 0,
          "description": "Alternate to `y`. Builds a linear space of y coordinates. Use with `dy` where `y0` is the starting coordinate and `dy` the step."
        },
        "yaxis": {
          "description": "Sets a reference between this trace's y coordinates and a 2D cartesian y axis. If *y* (the default value), the y coordinates refer to `layout.yaxis`. If *y2*, the y coordinates refer to `layout.yaxis2`, and so on.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "default": "y",
              "pattern": "^y([2-9]|[1-9][0-9]+)?$"
            }
          ]
        },
        "yhoverformat": {
          "default": "",
          "description": "Sets the hover text formatting rulefor `y`  using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*By default the values are formatted using `yaxis.hoverformat`.",
          "type": "string"
        },
        "yperiod": {
          "default": 0,
          "description": "Only relevant when the axis `type` is *date*. Sets the period positioning in milliseconds or *M<n>* on the y axis. Special values in the form of *M<n>* could be used to declare the number of months. In this case `n` must be a positive integer."
        },
        "yperiod0": {
          "description": "Only relevant when the axis `type` is *date*. Sets the base for period positioning in milliseconds or date string on the y0 axis. When `y0period` is round number of weeks, the `y0period0` by default would be on a Sunday i.e. 2000-01-02, otherwise it would be at 2000-01-01."
        },
        "yperiodalignment": {
          "description": "Only relevant when the axis `type` is *date*. Sets the alignment of data points on the y axis.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "start",
                "middle",
                "end"
              ],
              "default": "middle"
            }
          ]
        },
        "ysrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `y`.",
          "type": "string"
        },
        "zorder": {
          "description": "Sets the layer on which this trace is displayed, relative to other SVG traces on the same subplot. SVG traces with higher `zorder` appear in front of those with lower `zorder`.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "integer",
              "default": 0
            }
          ]
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false
    },
    "color": {
      "type": "string",
      "description": "A valid color in hex, rgb, rgba, hsl, hsv, or named CSS color",
      "oneOf": [
        {
          "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$",
          "description": "Hex color (e.g., #d3d3d3 or #fff)"
        },
        {
          "pattern": "^rgb\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*\\)$",
          "description": "RGB color (e.g., rgb(255, 0, 0))"
        },
        {
          "pattern": "^rgba\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(0|1|0?\\.\\d+)\\s*\\)$",
          "description": "RGBA color (e.g., rgba(255, 0, 0, 0.5))"
        },
        {
          "pattern": "^hsl\\(\\s*\\d{1,3}\\s*,\\s*\\d{1,3}%\\s*,\\s*\\d{1,3}%\\s*\\)$",
          "description": "HSL color (e.g., hsl(0, 100%, 50%))"
        },
        {
          "pattern": "^hsv\\(\\s*\\d{1,3}\\s*,\\s*\\d{1,3}%\\s*,\\s*\\d{1,3}%\\s*\\)$",
          "description": "HSV color (e.g., hsv(0, 100%, 100%))"
        },
        {
          "pattern": "^(aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen)$",
          "description": "Named CSS color"
        }
      ]
    },
    "colorscale": {
      "description": "A Plotly colorscale either by name or a custom array of [value, color] pairs.",
      "oneOf": [
        {
          "type": "string",
          "enum": [
            "Greys",
            "YlGnBu",
            "Greens",
            "YlOrRd",
            "Bluered",
            "RdBu",
            "Reds",
            "Blues",
            "Picnic",
            "Rainbow",
            "Portland",
            "Jet",
            "Hot",
            "Blackbody",
            "Earth",
            "Electric",
            "Viridis",
            "Cividis"
          ],
          "description": "Predefined Plotly colorscale name"
        },
        {
          "type": "array",
          "items": {
            "type": "array",
            "minItems": 2,
            "maxItems": 2,
            "items": {
              "oneOf": [
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 1
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            }
          },
          "description": "Custom colorscale as an array of [value, color] pairs"
        }
      ]
    },
    "query-string": {
      "type": "string",
      "description": "A string that will pull the value from the traces query results or inject an input value.",
      "oneOf": [
        {
          "pattern": "^\\?\\{.*\\}$",
          "description": "String in the format ?{ x } where x can be anything"
        },
        {
          "pattern": "^query\\(.*\\)$",
          "description": "String in the format query( x ) where x can be anything"
        },
        {
          "pattern": "^column\\(.*\\)(?:\\[-?\\d+\\])?$",
          "description": "String in the format column( x ) or column( x )[n] where x can be anything and n is a positive or negative number"
        },
        {
          "pattern": "^\\$\\{.*\\}$",
          "description": "String in the format ${ x } for input references like ${ref(input).value} or ${input.value}"
        }
      ]
    },
    "xaxis": {
      "type": "object",
      "properties": {
        "anchor": {
          "description": "If set to an opposite-letter axis id (e.g. `x2`, `y`), this axis is bound to the corresponding opposite-letter axis. If set to *free*, this axis' position is determined by `position`.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "oneOf": [
                {
                  "type": "string",
                  "pattern": "^y([2-9]|[1-9][0-9]+)?( domain)?$"
                },
                {
                  "enum": [
                    "free",
                    "/^x([2-9]|[1-9][0-9]+)?( domain)?$/"
                  ]
                }
              ]
            }
          ]
        },
        "automargin": {
          "description": "Determines whether long tick labels automatically grow the figure margins.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "oneOf": [
                {
                  "type": "string",
                  "enum": [
                    true,
                    false
                  ]
                },
                {
                  "type": "string",
                  "pattern": "^(height|width|left|right|top|bottom)(\\+(height|width|left|right|top|bottom))*$"
                }
              ],
              "default": false
            }
          ]
        },
        "autorange": {
          "description": "Determines whether or not the range of this axis is computed in relation to the input data. See `rangemode` for more info. If `range` is provided and it has a value for both the lower and upper bound, `autorange` is set to *false*. Using *min* applies autorange only to set the minimum. Using *max* applies autorange only to set the maximum. Using *min reversed* applies autorange only to set the minimum on a reversed axis. Using *max reversed* applies autorange only to set the maximum on a reversed axis. Using *reversed* applies autorange on both ends and reverses the axis direction.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                true,
                false,
                "reversed",
                "min reversed",
                "max reversed",
                "min",
                "max"
              ],
              "default": true
            }
          ]
        },
        "autorangeoptions": {
          "type": "object",
          "properties": {
            "clipmax": {
              "description": "Clip autorange maximum if it goes beyond this value. Has no effect when `autorangeoptions.maxallowed` is provided."
            },
            "clipmin": {
              "description": "Clip autorange minimum if it goes beyond this value. Has no effect when `autorangeoptions.minallowed` is provided."
            },
            "include": {
              "description": "Ensure this value is included in autorange.",
              "oneOf": [
                {},
                {
                  "type": "array",
                  "items": {}
                }
              ]
            },
            "includesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `include`.",
              "type": "string"
            },
            "maxallowed": {
              "description": "Use this value exactly as autorange maximum."
            },
            "minallowed": {
              "description": "Use this value exactly as autorange minimum."
            }
          },
          "additionalProperties": false
        },
        "autotickangles": {
          "description": "When `tickangle` is set to *auto*, it will be set to the first angle in this array that is large enough to prevent label overlap.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "number",
                    "minimum": -180,
                    "maximum": 180
                  }
                ]
              },
              "minItems": 1,
              "default": [
                0,
                30,
                90
              ]
            }
          ]
        },
        "autotypenumbers": {
          "description": "Using *strict* a numeric string in trace data is not converted to a number. Using *convert types* a numeric string in trace data may be treated as a number during automatic axis `type` detection. Defaults to layout.autotypenumbers.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "convert types",
                "strict"
              ],
              "default": "convert types"
            }
          ]
        },
        "calendar": {
          "description": "Sets the calendar system to use for `range` and `tick0` if this is a date axis. This does not set the calendar for interpreting data on this axis, that's specified in the trace or via the global `layout.calendar`",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "chinese",
                "coptic",
                "discworld",
                "ethiopian",
                "gregorian",
                "hebrew",
                "islamic",
                "jalali",
                "julian",
                "mayan",
                "nanakshahi",
                "nepali",
                "persian",
                "taiwan",
                "thai",
                "ummalqura"
              ],
              "default": "gregorian"
            }
          ]
        },
        "categoryarray": {
          "description": "Sets the order in which categories on this axis appear. Only has an effect if `categoryorder` is set to *array*. Used with `categoryorder`.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "categoryarraysrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `categoryarray`.",
          "type": "string"
        },
        "categoryorder": {
          "description": "Specifies the ordering logic for the case of categorical variables. By default, plotly uses *trace*, which specifies the order that is present in the data supplied. Set `categoryorder` to *category ascending* or *category descending* if order should be determined by the alphanumerical order of the category names. Set `categoryorder` to *array* to derive the ordering from the attribute `categoryarray`. If a category is not found in the `categoryarray` array, the sorting behavior for that attribute will be identical to the *trace* mode. The unspecified categories will follow the categories in `categoryarray`. Set `categoryorder` to *total ascending* or *total descending* if order should be determined by the numerical order of the values. Similarly, the order can be determined by the min, max, sum, mean, geometric mean or median of all the values.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "trace",
                "category ascending",
                "category descending",
                "array",
                "total ascending",
                "total descending",
                "min ascending",
                "min descending",
                "max ascending",
                "max descending",
                "sum ascending",
                "sum descending",
                "mean ascending",
                "mean descending",
                "geometric mean ascending",
                "geometric mean descending",
                "median ascending",
                "median descending"
              ],
              "default": "trace"
            }
          ]
        },
        "color": {
          "description": "Sets default for all colors associated with this axis all at once: line, font, tick, and grid colors. Grid color is lightened by blending this with the plot background Individual pieces can override this.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "$ref": "#/$defs/color"
            }
          ]
        },
        "constrain": {
          "description": "If this axis needs to be compressed (either due to its own `scaleanchor` and `scaleratio` or those of the other axis), determines how that happens: by increasing the *range*, or by decreasing the *domain*. Default is *domain* for axes containing image traces, *range* otherwise.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "range",
                "domain"
              ]
            }
          ]
        },
        "constraintoward": {
          "description": "If this axis needs to be compressed (either due to its own `scaleanchor` and `scaleratio` or those of the other axis), determines which direction we push the originally specified plot area. Options are *left*, *center* (default), and *right* for x axes, and *top*, *middle* (default), and *bottom* for y axes.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "left",
                "center",
                "right",
                "top",
                "middle",
                "bottom"
              ]
            }
          ]
        },
        "dividercolor": {
          "description": "Sets the color of the dividers Only has an effect on *multicategory* axes.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "$ref": "#/$defs/color"
            }
          ]
        },
        "dividerwidth": {
          "description": "Sets the width (in px) of the dividers Only has an effect on *multicategory* axes.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": 1
            }
          ]
        },
        "domain": {
          "description": "Sets the domain of this axis (in plot fraction).",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 1
                  }
                ]
              },
              "minItems": 2,
              "maxItems": 2,
              "default": [
                0,
                1
              ]
            }
          ]
        },
        "dtick": {
          "description": "Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L<f>*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M<n>* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48*"
        },
        "exponentformat": {
          "description": "Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "none",
                "e",
                "E",
                "power",
                "SI",
                "B"
              ],
              "default": "B"
            }
          ]
        },
        "fixedrange": {
          "description": "Determines whether or not this axis is zoom-able. If true, then zoom is disabled.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": false
            }
          ]
        },
        "gridcolor": {
          "description": "Sets the color of the grid lines.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "$ref": "#/$defs/color"
            }
          ]
        },
        "griddash": {
          "default": "solid",
          "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).",
          "type": "string"
        },
        "gridwidth": {
          "description": "Sets the width (in px) of the grid lines.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0,
              "default": 1
            }
          ]
        },
        "hoverformat": {
          "default": "",
          "description": "Sets the hover text formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*",
          "type": "string"
        },
        "insiderange": {
          "description": "Could be used to set the desired inside range of this axis (excluding the labels) when `ticklabelposition` of the anchored axis has *inside*. Not implemented for axes with `type` *log*. This would be ignored when `range` is provided.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {},
              "minItems": 2,
              "maxItems": 2
            }
          ]
        },
        "labelalias": {
          "default": false,
          "description": "Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax."
        },
        "layer": {
          "description": "Sets the layer on which this axis is displayed. If *above traces*, this axis is displayed above all the subplot's traces If *below traces*, this axis is displayed below all the subplot's traces, but above the grid lines. Useful when used together with scatter-like traces with `cliponaxis` set to *false* to show markers and/or text nodes above this axis.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "above traces",
                "below traces"
              ],
              "default": "above traces"
            }
          ]
        },
        "linecolor": {
          "description": "Sets the axis line color.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "$ref": "#/$defs/color"
            }
          ]
        },
        "linewidth": {
          "description": "Sets the width (in px) of the axis line.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0,
              "default": 1
            }
          ]
        },
        "matches": {
          "description": "If set to another axis id (e.g. `x2`, `y`), the range of this axis will match the range of the corresponding axis in data-coordinates space. Moreover, matching axes share auto-range values, category lists and histogram auto-bins. Note that setting axes simultaneously in both a `scaleanchor` and a `matches` constraint is currently forbidden. Moreover, note that matching axes must have the same `type`.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "oneOf": [
                {
                  "type": "string",
                  "pattern": "^y([2-9]|[1-9][0-9]+)?( domain)?$"
                },
                {
                  "enum": [
                    "/^x([2-9]|[1-9][0-9]+)?( domain)?$/"
                  ]
                }
              ]
            }
          ]
        },
        "maxallowed": {
          "description": "Determines the maximum range of this axis."
        },
        "minallowed": {
          "description": "Determines the minimum range of this axis."
        },
        "minexponent": {
          "description": "Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0,
              "default": 3
            }
          ]
        },
        "minor": {
          "type": "object",
          "properties": {
            "dtick": {
              "description": "Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L<f>*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M<n>* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48*"
            },
            "gridcolor": {
              "description": "Sets the color of the grid lines.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "griddash": {
              "default": "solid",
              "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).",
              "type": "string"
            },
            "gridwidth": {
              "description": "Sets the width (in px) of the grid lines.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0
                }
              ]
            },
            "nticks": {
              "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 0,
                  "default": 5
                }
              ]
            },
            "showgrid": {
              "description": "Determines whether or not grid lines are drawn. If *true*, the grid lines are drawn at every tick mark.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean"
                }
              ]
            },
            "tick0": {
              "description": "Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L<f>* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears."
            },
            "tickcolor": {
              "description": "Sets the tick color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "ticklen": {
              "description": "Sets the tick length (in px).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0
                }
              ]
            },
            "tickmode": {
              "description": "Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "auto",
                    "linear",
                    "array"
                  ]
                }
              ]
            },
            "ticks": {
              "description": "Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "outside",
                    "inside",
                    ""
                  ]
                }
              ]
            },
            "tickvals": {
              "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  }
                }
              ]
            },
            "tickvalssrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.",
              "type": "string"
            },
            "tickwidth": {
              "description": "Sets the tick width (in px).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "mirror": {
          "description": "Determines if the axis lines or/and ticks are mirrored to the opposite side of the plotting area. If *true*, the axis lines are mirrored. If *ticks*, the axis lines and ticks are mirrored. If *false*, mirroring is disable. If *all*, axis lines are mirrored on all shared-axes subplots. If *allticks*, axis lines and ticks are mirrored on all shared-axes subplots.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                true,
                "ticks",
                false,
                "all",
                "allticks"
              ],
              "default": false
            }
          ]
        },
        "nticks": {
          "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "integer",
              "minimum": 0,
              "default": 0
            }
          ]
        },
        "overlaying": {
          "description": "If set a same-letter axis id, this axis is overlaid on top of the corresponding same-letter axis, with traces and axes visible for both axes. If *false*, this axis does not overlay any same-letter axes. In this case, for axes with overlapping domains only the highest-numbered axis will be visible.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "oneOf": [
                {
                  "type": "string",
                  "pattern": "^y([2-9]|[1-9][0-9]+)?( domain)?$"
                },
                {
                  "enum": [
                    "free",
                    "/^x([2-9]|[1-9][0-9]+)?( domain)?$/"
                  ]
                }
              ]
            }
          ]
        },
        "position": {
          "description": "Sets the position of this axis in the plotting space (in normalized coordinates). Only has an effect if `anchor` is set to *free*.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0,
              "maximum": 1,
              "default": 0
            }
          ]
        },
        "range": {
          "description": "Sets the range of this axis. If the axis `type` is *log*, then you must take the log of your desired range (e.g. to set the range from 1 to 100, set the range from 0 to 2). If the axis `type` is *date*, it should be date strings, like date data, though Date objects and unix milliseconds will be accepted and converted to strings. If the axis `type` is *category*, it should be numbers, using the scale where each category is assigned a serial number from zero in the order it appears. Leaving either or both elements `null` impacts the default `autorange`.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {},
              "minItems": 2,
              "maxItems": 2
            }
          ]
        },
        "rangebreaks": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "bounds": {
                "description": "Sets the lower and upper bounds of this axis rangebreak. Can be used with `pattern`.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "array",
                    "items": {},
                    "minItems": 2,
                    "maxItems": 2
                  }
                ]
              },
              "dvalue": {
                "description": "Sets the size of each `values` item. The default is one day in milliseconds.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "number",
                    "minimum": 0,
                    "default": 86400000
                  }
                ]
              },
              "enabled": {
                "description": "Determines whether this axis rangebreak is enabled or disabled. Please note that `rangebreaks` only work for *date* axis type.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "boolean",
                    "default": true
                  }
                ]
              },
              "name": {
                "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.",
                "type": "string"
              },
              "pattern": {
                "description": "Determines a pattern on the time line that generates breaks. If *day of week* - days of the week in English e.g. 'Sunday' or `sun` (matching is case-insensitive and considers only the first three characters), as well as Sunday-based integers between 0 and 6. If *hour* - hour (24-hour clock) as decimal numbers between 0 and 24. for more info. Examples: - { pattern: 'day of week', bounds: [6, 1] }  or simply { bounds: ['sat', 'mon'] }   breaks from Saturday to Monday (i.e. skips the weekends). - { pattern: 'hour', bounds: [17, 8] }   breaks from 5pm to 8am (i.e. skips non-work hours).",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "enum": [
                      "day of week",
                      "hour",
                      ""
                    ]
                  }
                ]
              },
              "templateitemname": {
                "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.",
                "type": "string"
              },
              "values": {
                "description": "Sets the coordinate values corresponding to the rangebreaks. An alternative to `bounds`. Use `dvalue` to set the size of the values along the axis.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "array",
                    "items": {},
                    "minItems": 1
                  }
                ]
              }
            },
            "additionalProperties": false
          },
          "minItems": 1
        },
        "rangemode": {
          "description": "If *normal*, the range is computed in relation to the extrema of the input data. If *tozero*`, the range extends to 0, regardless of the input data If *nonnegative*, the range is non-negative, regardless of the input data. Applies only to linear axes.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "normal",
                "tozero",
                "nonnegative"
              ],
              "default": "normal"
            }
          ]
        },
        "rangeselector": {
          "type": "object",
          "properties": {
            "activecolor": {
              "description": "Sets the background color of the active range selector button.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "bgcolor": {
              "description": "Sets the background color of the range selector buttons.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "bordercolor": {
              "description": "Sets the color of the border enclosing the range selector.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "borderwidth": {
              "description": "Sets the width (in px) of the border enclosing the range selector.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "buttons": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "count": {
                    "description": "Sets the number of steps to take to update the range. Use with `step` to specify the update interval.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "number",
                        "minimum": 0,
                        "default": 1
                      }
                    ]
                  },
                  "label": {
                    "description": "Sets the text label to appear on the button.",
                    "type": "string"
                  },
                  "name": {
                    "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.",
                    "type": "string"
                  },
                  "step": {
                    "description": "The unit of measurement that the `count` value will set the range by.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "month",
                          "year",
                          "day",
                          "hour",
                          "minute",
                          "second",
                          "all"
                        ],
                        "default": "month"
                      }
                    ]
                  },
                  "stepmode": {
                    "description": "Sets the range update mode. If *backward*, the range update shifts the start of range back *count* times *step* milliseconds. If *todate*, the range update shifts the start of range back to the first timestamp from *count* times *step* milliseconds back. For example, with `step` set to *year* and `count` set to *1* the range update shifts the start of the range back to January 01 of the current year. Month and year *todate* are currently available only for the built-in (Gregorian) calendar.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "enum": [
                          "backward",
                          "todate"
                        ],
                        "default": "backward"
                      }
                    ]
                  },
                  "templateitemname": {
                    "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.",
                    "type": "string"
                  },
                  "visible": {
                    "description": "Determines whether or not this button is visible.",
                    "oneOf": [
                      {
                        "$ref": "#/$defs/query-string"
                      },
                      {
                        "type": "boolean",
                        "default": true
                      }
                    ]
                  }
                },
                "additionalProperties": false
              },
              "minItems": 1
            },
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "family": {
                  "pattern": ".*\\S.*$",
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                "shadow": {
                  "default": "none",
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "visible": {
              "description": "Determines whether or not this range selector is visible. Note that range selectors are only available for x axes of `type` set to or auto-typed to *date*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean"
                }
              ]
            },
            "x": {
              "description": "Sets the x position (in normalized coordinates) of the range selector.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": -2,
                  "maximum": 3
                }
              ]
            },
            "xanchor": {
              "description": "Sets the range selector's horizontal position anchor. This anchor binds the `x` position to the *left*, *center* or *right* of the range selector.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "auto",
                    "left",
                    "center",
                    "right"
                  ],
                  "default": "left"
                }
              ]
            },
            "y": {
              "description": "Sets the y position (in normalized coordinates) of the range selector.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": -2,
                  "maximum": 3
                }
              ]
            },
            "yanchor": {
              "description": "Sets the range selector's vertical position anchor This anchor binds the `y` position to the *top*, *middle* or *bottom* of the range selector.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "auto",
                    "top",
                    "middle",
                    "bottom"
                  ],
                  "default": "bottom"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "rangeslider": {
          "type": "object",
          "properties": {
            "autorange": {
              "description": "Determines whether or not the range slider range is computed in relation to the input data. If `range` is provided, then `autorange` is set to *false*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": true
                }
              ]
            },
            "bgcolor": {
              "description": "Sets the background color of the range slider.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "bordercolor": {
              "description": "Sets the border color of the range slider.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "borderwidth": {
              "description": "Sets the border width of the range slider.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 0,
                  "default": 0
                }
              ]
            },
            "range": {
              "description": "Sets the range of the range slider. If not set, defaults to the full xaxis range. If the axis `type` is *log*, then you must take the log of your desired range. If the axis `type` is *date*, it should be date strings, like date data, though Date objects and unix milliseconds will be accepted and converted to strings. If the axis `type` is *category*, it should be numbers, using the scale where each category is assigned a serial number from zero in the order it appears.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {},
                  "minItems": 2,
                  "maxItems": 2
                }
              ]
            },
            "thickness": {
              "description": "The height of the range slider as a fraction of the total plot area height.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 1,
                  "default": 0.15
                }
              ]
            },
            "visible": {
              "description": "Determines whether or not the range slider will be visible. If visible, perpendicular axes will be set to `fixedrange`",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean",
                  "default": true
                }
              ]
            },
            "yaxis": {
              "type": "object",
              "properties": {
                "range": {
                  "description": "Sets the range of this axis for the rangeslider.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "array",
                      "items": {},
                      "minItems": 2,
                      "maxItems": 2
                    }
                  ]
                },
                "rangemode": {
                  "description": "Determines whether or not the range of this axis in the rangeslider use the same value than in the main plot when zooming in/out. If *auto*, the autorange will be used. If *fixed*, the `range` is used. If *match*, the current range of the corresponding y-axis on the main subplot is used.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "auto",
                        "fixed",
                        "match"
                      ],
                      "default": "match"
                    }
                  ]
                }
              },
              "additionalProperties": false
            }
          },
          "additionalProperties": false
        },
        "scaleanchor": {
          "description": "If set to another axis id (e.g. `x2`, `y`), the range of this axis changes together with the range of the corresponding axis such that the scale of pixels per unit is in a constant ratio. Both axes are still zoomable, but when you zoom one, the other will zoom the same amount, keeping a fixed midpoint. `constrain` and `constraintoward` determine how we enforce the constraint. You can chain these, ie `yaxis: {scaleanchor: *x*}, xaxis2: {scaleanchor: *y*}` but you can only link axes of the same `type`. The linked axis can have the opposite letter (to constrain the aspect ratio) or the same letter (to match scales across subplots). Loops (`yaxis: {scaleanchor: *x*}, xaxis: {scaleanchor: *y*}` or longer) are redundant and the last constraint encountered will be ignored to avoid possible inconsistent constraints via `scaleratio`. Note that setting axes simultaneously in both a `scaleanchor` and a `matches` constraint is currently forbidden. Setting `false` allows to remove a default constraint (occasionally, you may need to prevent a default `scaleanchor` constraint from being applied, eg. when having an image trace `yaxis: {scaleanchor: \"x\"}` is set automatically in order for pixels to be rendered as squares, setting `yaxis: {scaleanchor: false}` allows to remove the constraint).",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "oneOf": [
                {
                  "type": "string",
                  "pattern": "^y([2-9]|[1-9][0-9]+)?( domain)?$"
                },
                {
                  "enum": [
                    "/^x([2-9]|[1-9][0-9]+)?( domain)?$/",
                    false
                  ]
                }
              ]
            }
          ]
        },
        "scaleratio": {
          "description": "If this axis is linked to another by `scaleanchor`, this determines the pixel to unit scale ratio. For example, if this value is 10, then every unit on this axis spans 10 times the number of pixels as a unit on the linked axis. Use this for example to create an elevation profile where the vertical scale is exaggerated a fixed amount with respect to the horizontal.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0,
              "default": 1
            }
          ]
        },
        "separatethousands": {
          "description": "If \"true\", even 4-digit integers are separated",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": false
            }
          ]
        },
        "showdividers": {
          "description": "Determines whether or not a dividers are drawn between the category levels of this axis. Only has an effect on *multicategory* axes.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "showexponent": {
          "description": "If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "all",
                "first",
                "last",
                "none"
              ],
              "default": "all"
            }
          ]
        },
        "showgrid": {
          "description": "Determines whether or not grid lines are drawn. If *true*, the grid lines are drawn at every tick mark.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean"
            }
          ]
        },
        "showline": {
          "description": "Determines whether or not a line bounding this axis is drawn.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": false
            }
          ]
        },
        "showspikes": {
          "description": "Determines whether or not spikes (aka droplines) are drawn for this axis. Note: This only takes affect when hovermode = closest",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": false
            }
          ]
        },
        "showticklabels": {
          "description": "Determines whether or not the tick labels are drawn.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "showtickprefix": {
          "description": "If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "all",
                "first",
                "last",
                "none"
              ],
              "default": "all"
            }
          ]
        },
        "showticksuffix": {
          "description": "Same as `showtickprefix` but for tick suffixes.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "all",
                "first",
                "last",
                "none"
              ],
              "default": "all"
            }
          ]
        },
        "side": {
          "description": "Determines whether a x (y) axis is positioned at the *bottom* (*left*) or *top* (*right*) of the plotting area.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "top",
                "bottom",
                "left",
                "right"
              ]
            }
          ]
        },
        "spikecolor": {
          "description": "Sets the spike color. If undefined, will use the series color",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "$ref": "#/$defs/color"
            }
          ]
        },
        "spikedash": {
          "default": "dash",
          "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).",
          "type": "string"
        },
        "spikemode": {
          "description": "Determines the drawing mode for the spike line If *toaxis*, the line is drawn from the data point to the axis the  series is plotted on. If *across*, the line is drawn across the entire plot area, and supercedes *toaxis*. If *marker*, then a marker dot is drawn on the axis the series is plotted on",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "pattern": "^(toaxis|across|marker)(\\+(toaxis|across|marker))*$",
              "default": "toaxis"
            }
          ]
        },
        "spikesnap": {
          "description": "Determines whether spikelines are stuck to the cursor or to the closest datapoints.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "data",
                "cursor",
                "hovered data"
              ],
              "default": "hovered data"
            }
          ]
        },
        "spikethickness": {
          "description": "Sets the width (in px) of the zero line.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": 3
            }
          ]
        },
        "tick0": {
          "description": "Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L<f>* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears."
        },
        "tickangle": {
          "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": -180,
              "maximum": 180,
              "default": "auto"
            }
          ]
        },
        "tickcolor": {
          "description": "Sets the tick color.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "$ref": "#/$defs/color"
            }
          ]
        },
        "tickfont": {
          "type": "object",
          "properties": {
            "color": {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "family": {
              "pattern": ".*\\S.*$",
              "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
              "type": "string"
            },
            "lineposition": {
              "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "oneOf": [
                    {
                      "type": "string",
                      "enum": [
                        "none"
                      ]
                    },
                    {
                      "type": "string",
                      "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                    }
                  ],
                  "default": "none"
                }
              ]
            },
            "shadow": {
              "default": "none",
              "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
              "type": "string"
            },
            "size": {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 1
                }
              ]
            },
            "style": {
              "description": "Sets whether a font should be styled with a normal or italic face from its family.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "normal",
                    "italic"
                  ],
                  "default": "normal"
                }
              ]
            },
            "textcase": {
              "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "normal",
                    "word caps",
                    "upper",
                    "lower"
                  ],
                  "default": "normal"
                }
              ]
            },
            "variant": {
              "description": "Sets the variant of the font.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "normal",
                    "small-caps",
                    "all-small-caps",
                    "all-petite-caps",
                    "petite-caps",
                    "unicase"
                  ],
                  "default": "normal"
                }
              ]
            },
            "weight": {
              "description": "Sets the weight (or boldness) of the font.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 1,
                  "maximum": 1000,
                  "default": "normal"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "tickformat": {
          "default": "",
          "description": "Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*",
          "type": "string"
        },
        "tickformatstops": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "dtickrange": {
                "description": "range [*min*, *max*], where *min*, *max* - dtick values which describe some zoom level, it is possible to omit *min* or *max* value by passing *null*",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "array",
                    "items": {},
                    "minItems": 2,
                    "maxItems": 2
                  }
                ]
              },
              "enabled": {
                "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "boolean",
                    "default": true
                  }
                ]
              },
              "name": {
                "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.",
                "type": "string"
              },
              "templateitemname": {
                "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.",
                "type": "string"
              },
              "value": {
                "default": "",
                "description": "string - dtickformat for described zoom level, the same as *tickformat*",
                "type": "string"
              }
            },
            "additionalProperties": false
          },
          "minItems": 1
        },
        "ticklabelindex": {
          "description": "Only for axes with `type` *date* or *linear*. Instead of drawing the major tick label, draw the label for the minor tick that is n positions away from the major tick. E.g. to always draw the label for the minor tick before each major tick, choose `ticklabelindex` -1. This is useful for date axes with `ticklabelmode` *period* if you want to label the period that ends with each major tick instead of the period that begins there.",
          "oneOf": [
            {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer"
                }
              ]
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "integer"
                  }
                ]
              }
            }
          ]
        },
        "ticklabelindexsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `ticklabelindex`.",
          "type": "string"
        },
        "ticklabelmode": {
          "description": "Determines where tick labels are drawn with respect to their corresponding ticks and grid lines. Only has an effect for axes of `type` *date* When set to *period*, tick labels are drawn in the middle of the period between ticks.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "instant",
                "period"
              ],
              "default": "instant"
            }
          ]
        },
        "ticklabeloverflow": {
          "description": "Determines how we handle tick labels that would overflow either the graph div or the domain of the axis. The default value for inside tick labels is *hide past domain*. Otherwise on *category* and *multicategory* axes the default is *allow*. In other cases the default is *hide past div*.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "allow",
                "hide past div",
                "hide past domain"
              ]
            }
          ]
        },
        "ticklabelposition": {
          "description": "Determines where tick labels are drawn with respect to the axis Please note that top or bottom has no effect on x axes or when `ticklabelmode` is set to *period*. Similarly left or right has no effect on y axes or when `ticklabelmode` is set to *period*. Has no effect on *multicategory* axes or when `tickson` is set to *boundaries*. When used on axes linked by `matches` or `scaleanchor`, no extra padding for inside labels would be added by autorange, so that the scales could match.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "outside",
                "inside",
                "outside top",
                "inside top",
                "outside left",
                "inside left",
                "outside right",
                "inside right",
                "outside bottom",
                "inside bottom"
              ],
              "default": "outside"
            }
          ]
        },
        "ticklabelshift": {
          "description": "Shifts the tick labels by the specified number of pixels in parallel to the axis. Positive values move the labels in the positive direction of the axis.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "integer",
              "default": 0
            }
          ]
        },
        "ticklabelstandoff": {
          "description": "Sets the standoff distance (in px) between the axis tick labels and their default position. A positive `ticklabelstandoff` moves the labels farther away from the plot area if `ticklabelposition` is *outside*, and deeper into the plot area if `ticklabelposition` is *inside*. A negative `ticklabelstandoff` works in the opposite direction, moving outside ticks towards the plot area and inside ticks towards the outside. If the negative value is large enough, inside ticks can even end up outside and vice versa.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "integer",
              "default": 0
            }
          ]
        },
        "ticklabelstep": {
          "description": "Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "integer",
              "minimum": 1,
              "default": 1
            }
          ]
        },
        "ticklen": {
          "description": "Sets the tick length (in px).",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0,
              "default": 5
            }
          ]
        },
        "tickmode": {
          "description": "Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided). If *sync*, the number of ticks will sync with the overlayed axis set by `overlaying` property.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "auto",
                "linear",
                "array",
                "sync"
              ]
            }
          ]
        },
        "tickprefix": {
          "default": "",
          "description": "Sets a tick label prefix.",
          "type": "string"
        },
        "ticks": {
          "description": "Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "outside",
                "inside",
                ""
              ]
            }
          ]
        },
        "tickson": {
          "description": "Determines where ticks and grid lines are drawn with respect to their corresponding tick labels. Only has an effect for axes of `type` *category* or *multicategory*. When set to *boundaries*, ticks and grid lines are drawn half a category to the left/bottom of labels.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "labels",
                "boundaries"
              ],
              "default": "labels"
            }
          ]
        },
        "ticksuffix": {
          "default": "",
          "description": "Sets a tick label suffix.",
          "type": "string"
        },
        "ticktext": {
          "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "ticktextsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.",
          "type": "string"
        },
        "tickvals": {
          "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "tickvalssrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.",
          "type": "string"
        },
        "tickwidth": {
          "description": "Sets the tick width (in px).",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0,
              "default": 1
            }
          ]
        },
        "title": {
          "type": "object",
          "properties": {
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "family": {
                  "pattern": ".*\\S.*$",
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                "shadow": {
                  "default": "none",
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "standoff": {
              "description": "Sets the standoff distance (in px) between the axis labels and the title text The default value is a function of the axis tick labels, the title `font.size` and the axis `linewidth`. Note that the axis title position is always constrained within the margins, so the actual standoff distance is always less than the set or default value. By setting `standoff` and turning on `automargin`, plotly.js will push the margins to fit the axis title at given standoff distance.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0
                }
              ]
            },
            "text": {
              "description": "Sets the title of this axis.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "type": {
          "description": "Sets the axis type. By default, plotly attempts to determined the axis type by looking into the data of the traces that referenced the axis in question.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "-",
                "linear",
                "log",
                "date",
                "category",
                "multicategory"
              ],
              "default": "-"
            }
          ]
        },
        "uirevision": {
          "description": "Controls persistence of user-driven changes in axis `range`, `autorange`, and `title` if in `editable: true` configuration. Defaults to `layout.uirevision`."
        },
        "visible": {
          "description": "A single toggle to hide the axis while preserving interaction like dragging. Default is true when a cheater plot is present on the axis, otherwise false",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean"
            }
          ]
        },
        "zeroline": {
          "description": "Determines whether or not a line is drawn at along the 0 value of this axis. If *true*, the zero line is drawn on top of the grid lines.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean"
            }
          ]
        },
        "zerolinecolor": {
          "description": "Sets the line color of the zero line.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "$ref": "#/$defs/color"
            }
          ]
        },
        "zerolinewidth": {
          "description": "Sets the width (in px) of the zero line.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": 1
            }
          ]
        }
      },
      "additionalProperties": false
    },
    "yaxis": {
      "type": "object",
      "properties": {
        "anchor": {
          "description": "If set to an opposite-letter axis id (e.g. `x2`, `y`), this axis is bound to the corresponding opposite-letter axis. If set to *free*, this axis' position is determined by `position`.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "oneOf": [
                {
                  "type": "string",
                  "pattern": "^y([2-9]|[1-9][0-9]+)?( domain)?$"
                },
                {
                  "enum": [
                    "free",
                    "/^x([2-9]|[1-9][0-9]+)?( domain)?$/"
                  ]
                }
              ]
            }
          ]
        },
        "automargin": {
          "description": "Determines whether long tick labels automatically grow the figure margins.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "oneOf": [
                {
                  "type": "string",
                  "enum": [
                    true,
                    false
                  ]
                },
                {
                  "type": "string",
                  "pattern": "^(height|width|left|right|top|bottom)(\\+(height|width|left|right|top|bottom))*$"
                }
              ],
              "default": false
            }
          ]
        },
        "autorange": {
          "description": "Determines whether or not the range of this axis is computed in relation to the input data. See `rangemode` for more info. If `range` is provided and it has a value for both the lower and upper bound, `autorange` is set to *false*. Using *min* applies autorange only to set the minimum. Using *max* applies autorange only to set the maximum. Using *min reversed* applies autorange only to set the minimum on a reversed axis. Using *max reversed* applies autorange only to set the maximum on a reversed axis. Using *reversed* applies autorange on both ends and reverses the axis direction.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                true,
                false,
                "reversed",
                "min reversed",
                "max reversed",
                "min",
                "max"
              ],
              "default": true
            }
          ]
        },
        "autorangeoptions": {
          "type": "object",
          "properties": {
            "clipmax": {
              "description": "Clip autorange maximum if it goes beyond this value. Has no effect when `autorangeoptions.maxallowed` is provided."
            },
            "clipmin": {
              "description": "Clip autorange minimum if it goes beyond this value. Has no effect when `autorangeoptions.minallowed` is provided."
            },
            "include": {
              "description": "Ensure this value is included in autorange.",
              "oneOf": [
                {},
                {
                  "type": "array",
                  "items": {}
                }
              ]
            },
            "includesrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `include`.",
              "type": "string"
            },
            "maxallowed": {
              "description": "Use this value exactly as autorange maximum."
            },
            "minallowed": {
              "description": "Use this value exactly as autorange minimum."
            }
          },
          "additionalProperties": false
        },
        "autoshift": {
          "description": "Automatically reposition the axis to avoid overlap with other axes with the same `overlaying` value. This repositioning will account for any `shift` amount applied to other axes on the same side with `autoshift` is set to true. Only has an effect if `anchor` is set to *free*.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": false
            }
          ]
        },
        "autotickangles": {
          "description": "When `tickangle` is set to *auto*, it will be set to the first angle in this array that is large enough to prevent label overlap.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "number",
                    "minimum": -180,
                    "maximum": 180
                  }
                ]
              },
              "minItems": 1,
              "default": [
                0,
                30,
                90
              ]
            }
          ]
        },
        "autotypenumbers": {
          "description": "Using *strict* a numeric string in trace data is not converted to a number. Using *convert types* a numeric string in trace data may be treated as a number during automatic axis `type` detection. Defaults to layout.autotypenumbers.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "convert types",
                "strict"
              ],
              "default": "convert types"
            }
          ]
        },
        "calendar": {
          "description": "Sets the calendar system to use for `range` and `tick0` if this is a date axis. This does not set the calendar for interpreting data on this axis, that's specified in the trace or via the global `layout.calendar`",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "chinese",
                "coptic",
                "discworld",
                "ethiopian",
                "gregorian",
                "hebrew",
                "islamic",
                "jalali",
                "julian",
                "mayan",
                "nanakshahi",
                "nepali",
                "persian",
                "taiwan",
                "thai",
                "ummalqura"
              ],
              "default": "gregorian"
            }
          ]
        },
        "categoryarray": {
          "description": "Sets the order in which categories on this axis appear. Only has an effect if `categoryorder` is set to *array*. Used with `categoryorder`.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "categoryarraysrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `categoryarray`.",
          "type": "string"
        },
        "categoryorder": {
          "description": "Specifies the ordering logic for the case of categorical variables. By default, plotly uses *trace*, which specifies the order that is present in the data supplied. Set `categoryorder` to *category ascending* or *category descending* if order should be determined by the alphanumerical order of the category names. Set `categoryorder` to *array* to derive the ordering from the attribute `categoryarray`. If a category is not found in the `categoryarray` array, the sorting behavior for that attribute will be identical to the *trace* mode. The unspecified categories will follow the categories in `categoryarray`. Set `categoryorder` to *total ascending* or *total descending* if order should be determined by the numerical order of the values. Similarly, the order can be determined by the min, max, sum, mean, geometric mean or median of all the values.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "trace",
                "category ascending",
                "category descending",
                "array",
                "total ascending",
                "total descending",
                "min ascending",
                "min descending",
                "max ascending",
                "max descending",
                "sum ascending",
                "sum descending",
                "mean ascending",
                "mean descending",
                "geometric mean ascending",
                "geometric mean descending",
                "median ascending",
                "median descending"
              ],
              "default": "trace"
            }
          ]
        },
        "color": {
          "description": "Sets default for all colors associated with this axis all at once: line, font, tick, and grid colors. Grid color is lightened by blending this with the plot background Individual pieces can override this.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "$ref": "#/$defs/color"
            }
          ]
        },
        "constrain": {
          "description": "If this axis needs to be compressed (either due to its own `scaleanchor` and `scaleratio` or those of the other axis), determines how that happens: by increasing the *range*, or by decreasing the *domain*. Default is *domain* for axes containing image traces, *range* otherwise.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "range",
                "domain"
              ]
            }
          ]
        },
        "constraintoward": {
          "description": "If this axis needs to be compressed (either due to its own `scaleanchor` and `scaleratio` or those of the other axis), determines which direction we push the originally specified plot area. Options are *left*, *center* (default), and *right* for x axes, and *top*, *middle* (default), and *bottom* for y axes.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "left",
                "center",
                "right",
                "top",
                "middle",
                "bottom"
              ]
            }
          ]
        },
        "dividercolor": {
          "description": "Sets the color of the dividers Only has an effect on *multicategory* axes.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "$ref": "#/$defs/color"
            }
          ]
        },
        "dividerwidth": {
          "description": "Sets the width (in px) of the dividers Only has an effect on *multicategory* axes.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": 1
            }
          ]
        },
        "domain": {
          "description": "Sets the domain of this axis (in plot fraction).",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 1
                  }
                ]
              },
              "minItems": 2,
              "maxItems": 2,
              "default": [
                0,
                1
              ]
            }
          ]
        },
        "dtick": {
          "description": "Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L<f>*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M<n>* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48*"
        },
        "exponentformat": {
          "description": "Determines a formatting rule for the tick exponents. For example, consider the number 1,000,000,000. If *none*, it appears as 1,000,000,000. If *e*, 1e+9. If *E*, 1E+9. If *power*, 1x10^9 (with 9 in a super script). If *SI*, 1G. If *B*, 1B.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "none",
                "e",
                "E",
                "power",
                "SI",
                "B"
              ],
              "default": "B"
            }
          ]
        },
        "fixedrange": {
          "description": "Determines whether or not this axis is zoom-able. If true, then zoom is disabled.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": false
            }
          ]
        },
        "gridcolor": {
          "description": "Sets the color of the grid lines.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "$ref": "#/$defs/color"
            }
          ]
        },
        "griddash": {
          "default": "solid",
          "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).",
          "type": "string"
        },
        "gridwidth": {
          "description": "Sets the width (in px) of the grid lines.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0,
              "default": 1
            }
          ]
        },
        "hoverformat": {
          "default": "",
          "description": "Sets the hover text formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*",
          "type": "string"
        },
        "insiderange": {
          "description": "Could be used to set the desired inside range of this axis (excluding the labels) when `ticklabelposition` of the anchored axis has *inside*. Not implemented for axes with `type` *log*. This would be ignored when `range` is provided.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {},
              "minItems": 2,
              "maxItems": 2
            }
          ]
        },
        "labelalias": {
          "default": false,
          "description": "Replacement text for specific tick or hover labels. For example using {US: 'USA', CA: 'Canada'} changes US to USA and CA to Canada. The labels we would have shown must match the keys exactly, after adding any tickprefix or ticksuffix. For negative numbers the minus sign symbol used (U+2212) is wider than the regular ascii dash. That means you need to use −1 instead of -1. labelalias can be used with any axis type, and both keys (if needed) and values (if desired) can include html-like tags or MathJax."
        },
        "layer": {
          "description": "Sets the layer on which this axis is displayed. If *above traces*, this axis is displayed above all the subplot's traces If *below traces*, this axis is displayed below all the subplot's traces, but above the grid lines. Useful when used together with scatter-like traces with `cliponaxis` set to *false* to show markers and/or text nodes above this axis.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "above traces",
                "below traces"
              ],
              "default": "above traces"
            }
          ]
        },
        "linecolor": {
          "description": "Sets the axis line color.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "$ref": "#/$defs/color"
            }
          ]
        },
        "linewidth": {
          "description": "Sets the width (in px) of the axis line.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0,
              "default": 1
            }
          ]
        },
        "matches": {
          "description": "If set to another axis id (e.g. `x2`, `y`), the range of this axis will match the range of the corresponding axis in data-coordinates space. Moreover, matching axes share auto-range values, category lists and histogram auto-bins. Note that setting axes simultaneously in both a `scaleanchor` and a `matches` constraint is currently forbidden. Moreover, note that matching axes must have the same `type`.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "oneOf": [
                {
                  "type": "string",
                  "pattern": "^y([2-9]|[1-9][0-9]+)?( domain)?$"
                },
                {
                  "enum": [
                    "/^x([2-9]|[1-9][0-9]+)?( domain)?$/"
                  ]
                }
              ]
            }
          ]
        },
        "maxallowed": {
          "description": "Determines the maximum range of this axis."
        },
        "minallowed": {
          "description": "Determines the minimum range of this axis."
        },
        "minexponent": {
          "description": "Hide SI prefix for 10^n if |n| is below this number. This only has an effect when `tickformat` is *SI* or *B*.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0,
              "default": 3
            }
          ]
        },
        "minor": {
          "type": "object",
          "properties": {
            "dtick": {
              "description": "Sets the step in-between ticks on this axis. Use with `tick0`. Must be a positive number, or special strings available to *log* and *date* axes. If the axis `type` is *log*, then ticks are set every 10^(n*dtick) where n is the tick number. For example, to set a tick mark at 1, 10, 100, 1000, ... set dtick to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2. To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to log_10(5), or 0.69897000433. *log* has several special values; *L<f>*, where `f` is a positive number, gives ticks linearly spaced in value (but not position). For example `tick0` = 0.1, `dtick` = *L0.5* will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus small digits between, use *D1* (all digits) or *D2* (only 2 and 5). `tick0` is ignored for *D1* and *D2*. If the axis `type` is *date*, then you must convert the time to milliseconds. For example, to set the interval between ticks to one day, set `dtick` to 86400000.0. *date* also has special values *M<n>* gives ticks spaced by a number of months. `n` must be a positive integer. To set ticks on the 15th of every third month, set `tick0` to *2000-01-15* and `dtick` to *M3*. To set ticks every 4 years, set `dtick` to *M48*"
            },
            "gridcolor": {
              "description": "Sets the color of the grid lines.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "griddash": {
              "default": "solid",
              "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).",
              "type": "string"
            },
            "gridwidth": {
              "description": "Sets the width (in px) of the grid lines.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0
                }
              ]
            },
            "nticks": {
              "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 0,
                  "default": 5
                }
              ]
            },
            "showgrid": {
              "description": "Determines whether or not grid lines are drawn. If *true*, the grid lines are drawn at every tick mark.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "boolean"
                }
              ]
            },
            "tick0": {
              "description": "Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L<f>* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears."
            },
            "tickcolor": {
              "description": "Sets the tick color.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "ticklen": {
              "description": "Sets the tick length (in px).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0
                }
              ]
            },
            "tickmode": {
              "description": "Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "auto",
                    "linear",
                    "array"
                  ]
                }
              ]
            },
            "ticks": {
              "description": "Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "outside",
                    "inside",
                    ""
                  ]
                }
              ]
            },
            "tickvals": {
              "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ]
                  }
                }
              ]
            },
            "tickvalssrc": {
              "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.",
              "type": "string"
            },
            "tickwidth": {
              "description": "Sets the tick width (in px).",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "mirror": {
          "description": "Determines if the axis lines or/and ticks are mirrored to the opposite side of the plotting area. If *true*, the axis lines are mirrored. If *ticks*, the axis lines and ticks are mirrored. If *false*, mirroring is disable. If *all*, axis lines are mirrored on all shared-axes subplots. If *allticks*, axis lines and ticks are mirrored on all shared-axes subplots.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                true,
                "ticks",
                false,
                "all",
                "allticks"
              ],
              "default": false
            }
          ]
        },
        "nticks": {
          "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "integer",
              "minimum": 0,
              "default": 0
            }
          ]
        },
        "overlaying": {
          "description": "If set a same-letter axis id, this axis is overlaid on top of the corresponding same-letter axis, with traces and axes visible for both axes. If *false*, this axis does not overlay any same-letter axes. In this case, for axes with overlapping domains only the highest-numbered axis will be visible.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "oneOf": [
                {
                  "type": "string",
                  "pattern": "^y([2-9]|[1-9][0-9]+)?( domain)?$"
                },
                {
                  "enum": [
                    "free",
                    "/^x([2-9]|[1-9][0-9]+)?( domain)?$/"
                  ]
                }
              ]
            }
          ]
        },
        "position": {
          "description": "Sets the position of this axis in the plotting space (in normalized coordinates). Only has an effect if `anchor` is set to *free*.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0,
              "maximum": 1,
              "default": 0
            }
          ]
        },
        "range": {
          "description": "Sets the range of this axis. If the axis `type` is *log*, then you must take the log of your desired range (e.g. to set the range from 1 to 100, set the range from 0 to 2). If the axis `type` is *date*, it should be date strings, like date data, though Date objects and unix milliseconds will be accepted and converted to strings. If the axis `type` is *category*, it should be numbers, using the scale where each category is assigned a serial number from zero in the order it appears. Leaving either or both elements `null` impacts the default `autorange`.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {},
              "minItems": 2,
              "maxItems": 2
            }
          ]
        },
        "rangebreaks": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "bounds": {
                "description": "Sets the lower and upper bounds of this axis rangebreak. Can be used with `pattern`.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "array",
                    "items": {},
                    "minItems": 2,
                    "maxItems": 2
                  }
                ]
              },
              "dvalue": {
                "description": "Sets the size of each `values` item. The default is one day in milliseconds.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "number",
                    "minimum": 0,
                    "default": 86400000
                  }
                ]
              },
              "enabled": {
                "description": "Determines whether this axis rangebreak is enabled or disabled. Please note that `rangebreaks` only work for *date* axis type.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "boolean",
                    "default": true
                  }
                ]
              },
              "name": {
                "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.",
                "type": "string"
              },
              "pattern": {
                "description": "Determines a pattern on the time line that generates breaks. If *day of week* - days of the week in English e.g. 'Sunday' or `sun` (matching is case-insensitive and considers only the first three characters), as well as Sunday-based integers between 0 and 6. If *hour* - hour (24-hour clock) as decimal numbers between 0 and 24. for more info. Examples: - { pattern: 'day of week', bounds: [6, 1] }  or simply { bounds: ['sat', 'mon'] }   breaks from Saturday to Monday (i.e. skips the weekends). - { pattern: 'hour', bounds: [17, 8] }   breaks from 5pm to 8am (i.e. skips non-work hours).",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "enum": [
                      "day of week",
                      "hour",
                      ""
                    ]
                  }
                ]
              },
              "templateitemname": {
                "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.",
                "type": "string"
              },
              "values": {
                "description": "Sets the coordinate values corresponding to the rangebreaks. An alternative to `bounds`. Use `dvalue` to set the size of the values along the axis.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "array",
                    "items": {},
                    "minItems": 1
                  }
                ]
              }
            },
            "additionalProperties": false
          },
          "minItems": 1
        },
        "rangemode": {
          "description": "If *normal*, the range is computed in relation to the extrema of the input data. If *tozero*`, the range extends to 0, regardless of the input data If *nonnegative*, the range is non-negative, regardless of the input data. Applies only to linear axes.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "normal",
                "tozero",
                "nonnegative"
              ],
              "default": "normal"
            }
          ]
        },
        "scaleanchor": {
          "description": "If set to another axis id (e.g. `x2`, `y`), the range of this axis changes together with the range of the corresponding axis such that the scale of pixels per unit is in a constant ratio. Both axes are still zoomable, but when you zoom one, the other will zoom the same amount, keeping a fixed midpoint. `constrain` and `constraintoward` determine how we enforce the constraint. You can chain these, ie `yaxis: {scaleanchor: *x*}, xaxis2: {scaleanchor: *y*}` but you can only link axes of the same `type`. The linked axis can have the opposite letter (to constrain the aspect ratio) or the same letter (to match scales across subplots). Loops (`yaxis: {scaleanchor: *x*}, xaxis: {scaleanchor: *y*}` or longer) are redundant and the last constraint encountered will be ignored to avoid possible inconsistent constraints via `scaleratio`. Note that setting axes simultaneously in both a `scaleanchor` and a `matches` constraint is currently forbidden. Setting `false` allows to remove a default constraint (occasionally, you may need to prevent a default `scaleanchor` constraint from being applied, eg. when having an image trace `yaxis: {scaleanchor: \"x\"}` is set automatically in order for pixels to be rendered as squares, setting `yaxis: {scaleanchor: false}` allows to remove the constraint).",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "oneOf": [
                {
                  "type": "string",
                  "pattern": "^y([2-9]|[1-9][0-9]+)?( domain)?$"
                },
                {
                  "enum": [
                    "/^x([2-9]|[1-9][0-9]+)?( domain)?$/",
                    false
                  ]
                }
              ]
            }
          ]
        },
        "scaleratio": {
          "description": "If this axis is linked to another by `scaleanchor`, this determines the pixel to unit scale ratio. For example, if this value is 10, then every unit on this axis spans 10 times the number of pixels as a unit on the linked axis. Use this for example to create an elevation profile where the vertical scale is exaggerated a fixed amount with respect to the horizontal.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0,
              "default": 1
            }
          ]
        },
        "separatethousands": {
          "description": "If \"true\", even 4-digit integers are separated",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": false
            }
          ]
        },
        "shift": {
          "description": "Moves the axis a given number of pixels from where it would have been otherwise. Accepts both positive and negative values, which will shift the axis either right or left, respectively. If `autoshift` is set to true, then this defaults to a padding of -3 if `side` is set to *left*. and defaults to +3 if `side` is set to *right*. Defaults to 0 if `autoshift` is set to false. Only has an effect if `anchor` is set to *free*.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number"
            }
          ]
        },
        "showdividers": {
          "description": "Determines whether or not a dividers are drawn between the category levels of this axis. Only has an effect on *multicategory* axes.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "showexponent": {
          "description": "If *all*, all exponents are shown besides their significands. If *first*, only the exponent of the first tick is shown. If *last*, only the exponent of the last tick is shown. If *none*, no exponents appear.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "all",
                "first",
                "last",
                "none"
              ],
              "default": "all"
            }
          ]
        },
        "showgrid": {
          "description": "Determines whether or not grid lines are drawn. If *true*, the grid lines are drawn at every tick mark.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean"
            }
          ]
        },
        "showline": {
          "description": "Determines whether or not a line bounding this axis is drawn.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": false
            }
          ]
        },
        "showspikes": {
          "description": "Determines whether or not spikes (aka droplines) are drawn for this axis. Note: This only takes affect when hovermode = closest",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": false
            }
          ]
        },
        "showticklabels": {
          "description": "Determines whether or not the tick labels are drawn.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean",
              "default": true
            }
          ]
        },
        "showtickprefix": {
          "description": "If *all*, all tick labels are displayed with a prefix. If *first*, only the first tick is displayed with a prefix. If *last*, only the last tick is displayed with a suffix. If *none*, tick prefixes are hidden.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "all",
                "first",
                "last",
                "none"
              ],
              "default": "all"
            }
          ]
        },
        "showticksuffix": {
          "description": "Same as `showtickprefix` but for tick suffixes.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "all",
                "first",
                "last",
                "none"
              ],
              "default": "all"
            }
          ]
        },
        "side": {
          "description": "Determines whether a x (y) axis is positioned at the *bottom* (*left*) or *top* (*right*) of the plotting area.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "top",
                "bottom",
                "left",
                "right"
              ]
            }
          ]
        },
        "spikecolor": {
          "description": "Sets the spike color. If undefined, will use the series color",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "$ref": "#/$defs/color"
            }
          ]
        },
        "spikedash": {
          "default": "dash",
          "description": "Sets the dash style of lines. Set to a dash type string (*solid*, *dot*, *dash*, *longdash*, *dashdot*, or *longdashdot*) or a dash length list in px (eg *5px,10px,2px,2px*).",
          "type": "string"
        },
        "spikemode": {
          "description": "Determines the drawing mode for the spike line If *toaxis*, the line is drawn from the data point to the axis the  series is plotted on. If *across*, the line is drawn across the entire plot area, and supercedes *toaxis*. If *marker*, then a marker dot is drawn on the axis the series is plotted on",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "string",
              "pattern": "^(toaxis|across|marker)(\\+(toaxis|across|marker))*$",
              "default": "toaxis"
            }
          ]
        },
        "spikesnap": {
          "description": "Determines whether spikelines are stuck to the cursor or to the closest datapoints.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "data",
                "cursor",
                "hovered data"
              ],
              "default": "hovered data"
            }
          ]
        },
        "spikethickness": {
          "description": "Sets the width (in px) of the zero line.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": 3
            }
          ]
        },
        "tick0": {
          "description": "Sets the placement of the first tick on this axis. Use with `dtick`. If the axis `type` is *log*, then you must take the log of your starting tick (e.g. to set the starting tick to 100, set the `tick0` to 2) except when `dtick`=*L<f>* (see `dtick` for more info). If the axis `type` is *date*, it should be a date string, like date data. If the axis `type` is *category*, it should be a number, using the scale where each category is assigned a serial number from zero in the order it appears."
        },
        "tickangle": {
          "description": "Sets the angle of the tick labels with respect to the horizontal. For example, a `tickangle` of -90 draws the tick labels vertically.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": -180,
              "maximum": 180,
              "default": "auto"
            }
          ]
        },
        "tickcolor": {
          "description": "Sets the tick color.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "$ref": "#/$defs/color"
            }
          ]
        },
        "tickfont": {
          "type": "object",
          "properties": {
            "color": {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "$ref": "#/$defs/color"
                }
              ]
            },
            "family": {
              "pattern": ".*\\S.*$",
              "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
              "type": "string"
            },
            "lineposition": {
              "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "oneOf": [
                    {
                      "type": "string",
                      "enum": [
                        "none"
                      ]
                    },
                    {
                      "type": "string",
                      "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                    }
                  ],
                  "default": "none"
                }
              ]
            },
            "shadow": {
              "default": "none",
              "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
              "type": "string"
            },
            "size": {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 1
                }
              ]
            },
            "style": {
              "description": "Sets whether a font should be styled with a normal or italic face from its family.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "normal",
                    "italic"
                  ],
                  "default": "normal"
                }
              ]
            },
            "textcase": {
              "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "normal",
                    "word caps",
                    "upper",
                    "lower"
                  ],
                  "default": "normal"
                }
              ]
            },
            "variant": {
              "description": "Sets the variant of the font.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "enum": [
                    "normal",
                    "small-caps",
                    "all-small-caps",
                    "all-petite-caps",
                    "petite-caps",
                    "unicase"
                  ],
                  "default": "normal"
                }
              ]
            },
            "weight": {
              "description": "Sets the weight (or boldness) of the font.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer",
                  "minimum": 1,
                  "maximum": 1000,
                  "default": "normal"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "tickformat": {
          "default": "",
          "description": "Sets the tick label formatting rule using d3 formatting mini-languages which are very similar to those in Python. For numbers, see: <https://github.com/d3/d3-format/tree/v1.4.5#d3-format>. And for dates see: <https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format>. We add two items to d3's date formatter: *%h* for half of the year as a decimal number as well as *%{n}f* for fractional seconds with n digits. For example, *2016-10-13 09:15:23.456* with tickformat *%H~%M~%S.%2f* would display *09~15~23.46*",
          "type": "string"
        },
        "tickformatstops": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "dtickrange": {
                "description": "range [*min*, *max*], where *min*, *max* - dtick values which describe some zoom level, it is possible to omit *min* or *max* value by passing *null*",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "array",
                    "items": {},
                    "minItems": 2,
                    "maxItems": 2
                  }
                ]
              },
              "enabled": {
                "description": "Determines whether or not this stop is used. If `false`, this stop is ignored even within its `dtickrange`.",
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "boolean",
                    "default": true
                  }
                ]
              },
              "name": {
                "description": "When used in a template, named items are created in the output figure in addition to any items the figure already has in this array. You can modify these items in the output figure by making your own item with `templateitemname` matching this `name` alongside your modifications (including `visible: false` or `enabled: false` to hide it). Has no effect outside of a template.",
                "type": "string"
              },
              "templateitemname": {
                "description": "Used to refer to a named item in this array in the template. Named items from the template will be created even without a matching item in the input figure, but you can modify one by making an item with `templateitemname` matching its `name`, alongside your modifications (including `visible: false` or `enabled: false` to hide it). If there is no template or no matching item, this item will be hidden unless you explicitly show it with `visible: true`.",
                "type": "string"
              },
              "value": {
                "default": "",
                "description": "string - dtickformat for described zoom level, the same as *tickformat*",
                "type": "string"
              }
            },
            "additionalProperties": false
          },
          "minItems": 1
        },
        "ticklabelindex": {
          "description": "Only for axes with `type` *date* or *linear*. Instead of drawing the major tick label, draw the label for the minor tick that is n positions away from the major tick. E.g. to always draw the label for the minor tick before each major tick, choose `ticklabelindex` -1. This is useful for date axes with `ticklabelmode` *period* if you want to label the period that ends with each major tick instead of the period that begins there.",
          "oneOf": [
            {
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "integer"
                }
              ]
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/$defs/query-string"
                  },
                  {
                    "type": "integer"
                  }
                ]
              }
            }
          ]
        },
        "ticklabelindexsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `ticklabelindex`.",
          "type": "string"
        },
        "ticklabelmode": {
          "description": "Determines where tick labels are drawn with respect to their corresponding ticks and grid lines. Only has an effect for axes of `type` *date* When set to *period*, tick labels are drawn in the middle of the period between ticks.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "instant",
                "period"
              ],
              "default": "instant"
            }
          ]
        },
        "ticklabeloverflow": {
          "description": "Determines how we handle tick labels that would overflow either the graph div or the domain of the axis. The default value for inside tick labels is *hide past domain*. Otherwise on *category* and *multicategory* axes the default is *allow*. In other cases the default is *hide past div*.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "allow",
                "hide past div",
                "hide past domain"
              ]
            }
          ]
        },
        "ticklabelposition": {
          "description": "Determines where tick labels are drawn with respect to the axis Please note that top or bottom has no effect on x axes or when `ticklabelmode` is set to *period*. Similarly left or right has no effect on y axes or when `ticklabelmode` is set to *period*. Has no effect on *multicategory* axes or when `tickson` is set to *boundaries*. When used on axes linked by `matches` or `scaleanchor`, no extra padding for inside labels would be added by autorange, so that the scales could match.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "outside",
                "inside",
                "outside top",
                "inside top",
                "outside left",
                "inside left",
                "outside right",
                "inside right",
                "outside bottom",
                "inside bottom"
              ],
              "default": "outside"
            }
          ]
        },
        "ticklabelshift": {
          "description": "Shifts the tick labels by the specified number of pixels in parallel to the axis. Positive values move the labels in the positive direction of the axis.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "integer",
              "default": 0
            }
          ]
        },
        "ticklabelstandoff": {
          "description": "Sets the standoff distance (in px) between the axis tick labels and their default position. A positive `ticklabelstandoff` moves the labels farther away from the plot area if `ticklabelposition` is *outside*, and deeper into the plot area if `ticklabelposition` is *inside*. A negative `ticklabelstandoff` works in the opposite direction, moving outside ticks towards the plot area and inside ticks towards the outside. If the negative value is large enough, inside ticks can even end up outside and vice versa.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "integer",
              "default": 0
            }
          ]
        },
        "ticklabelstep": {
          "description": "Sets the spacing between tick labels as compared to the spacing between ticks. A value of 1 (default) means each tick gets a label. A value of 2 means shows every 2nd label. A larger value n means only every nth tick is labeled. `tick0` determines which labels are shown. Not implemented for axes with `type` *log* or *multicategory*, or when `tickmode` is *array*.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "integer",
              "minimum": 1,
              "default": 1
            }
          ]
        },
        "ticklen": {
          "description": "Sets the tick length (in px).",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0,
              "default": 5
            }
          ]
        },
        "tickmode": {
          "description": "Sets the tick mode for this axis. If *auto*, the number of ticks is set via `nticks`. If *linear*, the placement of the ticks is determined by a starting position `tick0` and a tick step `dtick` (*linear* is the default value if `tick0` and `dtick` are provided). If *array*, the placement of the ticks is set via `tickvals` and the tick text is `ticktext`. (*array* is the default value if `tickvals` is provided). If *sync*, the number of ticks will sync with the overlayed axis set by `overlaying` property.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "auto",
                "linear",
                "array",
                "sync"
              ]
            }
          ]
        },
        "tickprefix": {
          "default": "",
          "description": "Sets a tick label prefix.",
          "type": "string"
        },
        "ticks": {
          "description": "Determines whether ticks are drawn or not. If **, this axis' ticks are not drawn. If *outside* (*inside*), this axis' are drawn outside (inside) the axis lines.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "outside",
                "inside",
                ""
              ]
            }
          ]
        },
        "tickson": {
          "description": "Determines where ticks and grid lines are drawn with respect to their corresponding tick labels. Only has an effect for axes of `type` *category* or *multicategory*. When set to *boundaries*, ticks and grid lines are drawn half a category to the left/bottom of labels.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "labels",
                "boundaries"
              ],
              "default": "labels"
            }
          ]
        },
        "ticksuffix": {
          "default": "",
          "description": "Sets a tick label suffix.",
          "type": "string"
        },
        "ticktext": {
          "description": "Sets the text displayed at the ticks position via `tickvals`. Only has an effect if `tickmode` is set to *array*. Used with `tickvals`.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "ticktextsrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `ticktext`.",
          "type": "string"
        },
        "tickvals": {
          "description": "Sets the values at which ticks on this axis appear. Only has an effect if `tickmode` is set to *array*. Used with `ticktext`.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          ]
        },
        "tickvalssrc": {
          "description": "Sets the source reference on Chart Studio Cloud for `tickvals`.",
          "type": "string"
        },
        "tickwidth": {
          "description": "Sets the tick width (in px).",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "minimum": 0,
              "default": 1
            }
          ]
        },
        "title": {
          "type": "object",
          "properties": {
            "font": {
              "type": "object",
              "properties": {
                "color": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "$ref": "#/$defs/color"
                    }
                  ]
                },
                "family": {
                  "pattern": ".*\\S.*$",
                  "description": "HTML font family - the typeface that will be applied by the web browser. The web browser can only apply a font if it is available on the system where it runs. Provide multiple font families, separated by commas, to indicate the order in which to apply fonts if they aren't available.",
                  "type": "string"
                },
                "lineposition": {
                  "description": "Sets the kind of decoration line(s) with text, such as an *under*, *over* or *through* as well as combinations e.g. *under+over*, etc.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "oneOf": [
                        {
                          "type": "string",
                          "enum": [
                            "none"
                          ]
                        },
                        {
                          "type": "string",
                          "pattern": "^(under|over|through)(\\+(under|over|through))*$"
                        }
                      ],
                      "default": "none"
                    }
                  ]
                },
                "shadow": {
                  "default": "none",
                  "description": "Sets the shape and color of the shadow behind text. *auto* places minimal shadow and applies contrast text font color. See <https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow> for additional options.",
                  "type": "string"
                },
                "size": {
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "number",
                      "minimum": 1
                    }
                  ]
                },
                "style": {
                  "description": "Sets whether a font should be styled with a normal or italic face from its family.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "italic"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "textcase": {
                  "description": "Sets capitalization of text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "word caps",
                        "upper",
                        "lower"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "variant": {
                  "description": "Sets the variant of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "enum": [
                        "normal",
                        "small-caps",
                        "all-small-caps",
                        "all-petite-caps",
                        "petite-caps",
                        "unicase"
                      ],
                      "default": "normal"
                    }
                  ]
                },
                "weight": {
                  "description": "Sets the weight (or boldness) of the font.",
                  "oneOf": [
                    {
                      "$ref": "#/$defs/query-string"
                    },
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 1000,
                      "default": "normal"
                    }
                  ]
                }
              },
              "additionalProperties": false
            },
            "standoff": {
              "description": "Sets the standoff distance (in px) between the axis labels and the title text The default value is a function of the axis tick labels, the title `font.size` and the axis `linewidth`. Note that the axis title position is always constrained within the margins, so the actual standoff distance is always less than the set or default value. By setting `standoff` and turning on `automargin`, plotly.js will push the margins to fit the axis title at given standoff distance.",
              "oneOf": [
                {
                  "$ref": "#/$defs/query-string"
                },
                {
                  "type": "number",
                  "minimum": 0
                }
              ]
            },
            "text": {
              "description": "Sets the title of this axis.",
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "type": {
          "description": "Sets the axis type. By default, plotly attempts to determined the axis type by looking into the data of the traces that referenced the axis in question.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "enum": [
                "-",
                "linear",
                "log",
                "date",
                "category",
                "multicategory"
              ],
              "default": "-"
            }
          ]
        },
        "uirevision": {
          "description": "Controls persistence of user-driven changes in axis `range`, `autorange`, and `title` if in `editable: true` configuration. Defaults to `layout.uirevision`."
        },
        "visible": {
          "description": "A single toggle to hide the axis while preserving interaction like dragging. Default is true when a cheater plot is present on the axis, otherwise false",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean"
            }
          ]
        },
        "zeroline": {
          "description": "Determines whether or not a line is drawn at along the 0 value of this axis. If *true*, the zero line is drawn on top of the grid lines.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "boolean"
            }
          ]
        },
        "zerolinecolor": {
          "description": "Sets the line color of the zero line.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "$ref": "#/$defs/color"
            }
          ]
        },
        "zerolinewidth": {
          "description": "Sets the width (in px) of the zero line.",
          "oneOf": [
            {
              "$ref": "#/$defs/query-string"
            },
            {
              "type": "number",
              "default": 1
            }
          ]
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
