1 | initial version |

The best idea I can come up with is to write a new function which interpolates between the values in your list. Here's one easy (and probably too slow) example using linear interpolation:

```
def interpolate_num_func(x, num_dict):
if x in num_dict.keys():
return num_func[x]
K = num_dict.keys()
K.sort()
# outside the range of inputs, return the first or last value
if x < K[0]:
return num_dict[K[0]]
if x > K[-1]:
return num_dict[K[-1]]
# step through the known values until we find the two which x is between
for i in range(1,len(K)-1):
A = num_dict[K[i]]
B = num_dict[K[i+1]]
if x > K[i] and x < K[i+1]:
t = (x-K[i])/(K[i+1]-K[i])
return t*A + (1-t)*B # interpolate linearly
```

Now let's make a dict of data to plot: the keys are 'inputs' -- random numbers between 0 and 1; the values are 'outputs' -- random numbers between 0 and 10.

```
rand_dict = dict((random(),randrange(0,10)) for a in range(15))
```

And now plot the function:

```
var('t')
plot(lambda t: interpolate_num_func(t,rand_dict),t,0,1)
```

Copyright Sage, 2010. Some rights reserved under creative commons license. Content on this site is licensed under a Creative Commons Attribution Share Alike 3.0 license.