Plotting more than one data set and adding a graph key In this example we demonstrate how to plot more than one data set in a graph. Furthermore, adding a graph key labelling the data is explained. ... In order to display more than one data set, we pass a list of data sets to the `plot` method of the graph. In the present case, we contruct this list out of three lists of `graph.data.function` instances. For each data set we also set a title using the corresponding keyword argument of the data class. For a more colorful output, we pass the `color.gradient.Rainbow` color gradient to the `graph.style.line` class. PyX then automatically chooses color spanning the whole range of the rainbow gradient. ! If you look at the output, you will notice that not only the colors are cycled through, but also the line style changes. The reason for this behavior is that the default line attributes of the `graph.style.line` style contain an `attr.changelist` comprising a couple of different line styles. When you pass additional line attributes, these are appended to the default attributes (this is generally the case in PyX). Consequently, you get a change of both the color and the line style. If you only want to change the color, either pass the desired line style explicitly, i.e., use graph.style.line([style.linestyle.solid, color.gradient.Rainbow]) or clear a previous setting of the line style using the `clear` attribute of the corresponding class: graph.style.line([style.linestyle.clear, color.gradient.Rainbow]) !! It is also possible to call the `plot` method several times. Note that the changing of the styles is also performed when the style instances are used on several plot commands within the same graph as long as the same set of style instances are passed at the `plot` method calls. Finally, when plotting more than one data set you might want to label them in your graph. We already have passed titles identifying each data set, so we only have to add a graph key. This is done by passing a `graph.key.key` instance as the `key` keyword argument to the graph. Usually, you only need to specify the position of the key using the `pos` argument of the `graph.key.key` constructor. The syntax should be self-explaining; here we use `br` to put the key at the bottom-right position of the graph. In order to save some space, we furthermore decreases the distance between the key entries a little bit by passing a value of 0.1 to the `dist` argument.