# Plot a line according to an equation?

Is there any way to plot a line based on an equation? e.g.: y = 2x + 5?
I guess that one workaround would be to create a CSV file with the respective x and y values and then plotting from it but I was wondering if there is any other way?

Something like this should work:

``````{
let f = (x) => 2 * x + 5;
let [a, b] = [-5, 5];
return Plot.plot({
marks: [
Plot.line([
[a, f(a)],
[b, f(b)]
]),
Plot.axisX({ y: 0 }),
Plot.axisY({ x: 0 }),
Plot.ruleX([0]),
Plot.ruleY([0])
]
});
}
``````

If you’d like the slope of the line to “look” like it’s two, then you need to set the `width` and `height` of the plot as well to match the domain and range of your graph.

1 Like

For a more general solution for plotting any function, see

``````https://observablehq.com/d/a35b4c47e65337bc
``````
1 Like

Thank you! This works so well for me although I was hopping for something like:

``````Plot.plot({
marks: [
Plot.function(function, {xmin: -5, xmax: 5, int: 0.05})
]
})
``````

Where the equation is defined from:

``````f = (x) => 1 + x + 2 * x*x
``````

This is basically a new `mark` only for plotting functions.

Plotting a line and plotting a more general function are two very different things. If I had known that was your objective, I would probably have pointed you here:

I really should update that in light of some improvements, though - the axis mark, in particular.

1 Like