# How to Plot Rays on a Graph using Bokeh in Python

To plot rays on a graph using Bokeh in Python, you can follow these steps:

1. Import the necessary libraries:
```import numpy as np
from bokeh.io import output_notebook, show
from bokeh.plotting import figure
```
1. Define the starting and ending points of the rays:
```x_start = [0, 1, 2, 3, 4]
y_start = [0, 0, 0, 0, 0]

x_end = [2, 3, 4, 5, 6]
y_end = [1, 2, 3, 4, 5]
```
1. Create a Bokeh figure:
```p = figure(plot_width=400, plot_height=400)
```
1. Plot the rays using the `ray` function:
```for i in range(len(x_start)):
p.ray(x=x_start[i], y=y_start[i], angle=np.arctan2(y_end[i]-y_start[i], x_end[i]-x_start[i]), length=0, line_width=2)
```
1. Show the plot:
```show(p)
```

This will create a plot with rays starting at the coordinates `(x_start[i], y_start[i])` and ending at the coordinates `(x_end[i], y_end[i])`. The `angle` parameter is calculated using `np.arctan2()` to find the angle between the starting and ending points, and the `length` parameter is set to `0` to draw the rays infinitely long. The `line_width` parameter controls the thickness of the rays.

### plotting.figure.ray()

`plotting.figure.ray()` is a function in Bokeh, which is used to plot a ray on a figure. A ray is a line segment that extends infinitely in one direction from a given starting point.

The `plotting.figure.ray()` function takes several arguments:

• `x`: the x-coordinate of the starting point of the ray
• `y`: the y-coordinate of the starting point of the ray
• `length`: the length of the ray (can be set to `0` to draw a ray that extends infinitely)
• `angle`: the angle (in radians) of the direction in which the ray extends
• `color`: the color of the ray
• `line_width`: the width of the line used to draw the ray
• `line_dash`: the dash pattern of the line used to draw the ray

Here’s an example of how to use `plotting.figure.ray()` to plot a ray on a Bokeh figure:

```from bokeh.plotting import figure, show

# Create a Bokeh figure
p = figure(plot_width=400, plot_height=400)

# Plot a ray from (0,0) to (1,1)
p.ray(x=0, y=0, angle=45, length=0, line_width=2)

# Show the plot
show(p)
```

This will plot a ray starting at the point `(0,0)` and extending in the direction of 45 degrees (i.e., northeast) indefinitely.

### Conclusion:

In this conversation, we discussed how to plot rays on a graph using Bokeh in Python. We outlined the steps involved, including importing the necessary libraries, defining the starting and ending points of the rays, creating a Bokeh figure, and using the `ray()` function to plot the rays on the figure. We also provided an example of how to use the `ray()` function to plot a ray on a Bokeh figure. Overall, Bokeh is a powerful Python library that allows for the creation of interactive visualizations and can be used to create a wide range of plots, including rays, lines, scatter plots, and more.