Graph Component
You can display a graph of a sensor value(s) using this component. The states used for the graph are stored in memory at the time the sensor updates and will be lost when the device reboots.
Examples:

Graph component with options for grids, border and line-types.
graph:
  # Show bare-minimum auto-ranged graph
  - id: single_temperature_graph
    sensor: my_temperature
    duration: 1h
    width: 151
    height: 51
  # Show multi-trace graph
  - id: multi_temperature_graph
    duration: 1h
    x_grid: 10min
    y_grid: 1.0     # degC/div
    width: 151
    height: 51
    traces:
      - sensor: my_inside_temperature
        line_type: DASHED
        line_thickness: 2
        color: my_red
      - sensor: my_outside_temperature
        line_type: SOLID
        continuous: true
        line_thickness: 3
        color: my_blue
      - sensor: my_beer_temperature
        line_type: DOTTED
        line_thickness: 2
        color: my_greenConfiguration variables
id (Required, ID): The ID with which you will be able to reference the graph later in your display code.
width (Required, int): The graph width in pixels
height (Required, int): The graph height in pixels
duration (Required, Time): The total graph history duration.
border (Optional, boolean): Specifies if a border will be drawn around the graph. Default is True.
x_grid (Optional): Specifies the time per division. If not specified, no vertical grid will be drawn.
y_grid (Optional, float): Specifies the number of units per division. If not specified, no horizontal grid will be drawn.
max_range (Optional): Specifies the maximum Y-axis range.
min_range (Optional): Specifies the minimum Y-axis range.
max_value (Optional): Specifies the maximum Y-axis value.
min_value (Optional): Specifies the minimum Y-axis value.
traces (Optional): Use this to specify more than a single trace.
legend (Optional): Configures a legend for the graph traces. See Legend Options.
Trace specific fields:
- sensor (Optional, ID): The sensor value to plot
 - line_thickness (Optional): Defaults to 3
 - line_type (Optional): Specifies the plot line-type. Can be one of the following: 
SOLID,DOTTED,DASHED. Defaults toSOLID. - continuous (Optional): connects the individual points to make a continuous line. Defaults to 
false. - color (Optional): Sets the color of the sensor trace.
 
Legend Options
The legend displays trace names, current values, units, and line style samples. Only one legend per graph is supported.
- name_font (Required, Font): Font used for trace names.
 - value_font (Optional, Font): Font used for current values. If not specified, values are not displayed.
 - width (Optional, int): Legend width in pixels. If not specified, width is automatically calculated.
 - height (Optional, int): Legend height in pixels. If not specified, height is automatically calculated.
 - border (Optional, boolean): Draw a border around the legend. Defaults to 
true. - show_lines (Optional, boolean): Display line style samples. Defaults to 
true. - show_values (Optional): Position of current values. Can be 
NONE,AUTO,BESIDE,BELOW. Defaults toAUTO. - show_units (Optional, boolean): Include units with values. Defaults to 
true. - direction (Optional): Layout direction. Can be 
AUTO,HORIZONTAL,VERTICAL. Defaults toAUTO. 
Example with legend:
graph:
  - id: temperature_graph_with_legend
    duration: 1h
    width: 151
    height: 51
    traces:
      - sensor: indoor_temp
        name: "Indoor"
        line_type: SOLID
        color: my_red
      - sensor: outdoor_temp  
        name: "Outdoor"
        line_type: DASHED
        color: my_blue
    legend:
        name_font: legend_font
        value_font: value_font
        show_values: BELOW
        border: true
        show_lines: true
        show_units: true
font:
  - file: "arial.ttf"
    id: legend_font
    size: 10
  - file: "arial.ttf" 
    id: value_font
    size: 8And then later in code:
display:
  - platform: ...
    # ...
    pages:
      - id: page1
        lambda: |-
          // Draw the graph at position [x=10,y=20]
          it.graph(10, 20, id(single_temperature_graph));
      - id: page2
        lambda: |-
          // Draw the graph at position [x=10,y=20]
          it.graph(10, 20, id(multi_temperature_graph), my_yellow);
      - id: page3
        lambda: |-
          // Draw graph and legend
          it.graph(10, 20, id(temperature_graph_with_legend));
          it.graph_legend(170, 20, id(temperature_graph_with_legend), my_yellow);
color:
  - id: my_red
    red: 100%
    green: 0%
    blue: 0%
  - id: my_green
    red: 0%
    green: 100%
    blue: 0%
  - id: my_blue
    red: 0%
    green: 0%
    blue: 100%
  - id: my_yellow
    red: 100%
    green: 100%
    blue: 0%ℹ️ Note
Here are some things to note:
- Setting
 y_gridwill expand any specified range to the nearest multiple of grid spacings.- Axis labels are currently not possible without manually placing them.
 - The grid and border color is set with
 it.graph(), while the traces are defined separately.- Legends are drawn separately using
 it.graph_legend()and can be positioned independently of the graph.- Legend dimensions are automatically calculated if not specified, based on font sizes and trace count.