# Multiple Chart Types in Julia

How to design figures with multiple chart types in julia.

### Chart Types versus Trace Types

Plotly figures support defining subplots of various types (e.g. cartesian, polar, [3-dimensional], [maps] etc) with attached traces of various compatible types (e.g. scatter, bar, choropleth, surface etc). This means that Plotly figures are not constrained to representing a fixed set of "chart types" such as scatter plots only or bar charts only or line charts only: any subplot can contain multiple traces of different types.

### Multiple Trace Types

The first argument to the plot function accepts and array of traces. Each of these traces can be of a different (but compatible) type. For example, below we have a line and bar chart in the same figure:

using PlotlyJS

fruits = ["apples", "oranges", "bananas"]
plot([
scatter(x=fruits, y=[1, 3, 2], name="This year", mode="lines"),
bar(x=fruits, y=[2, 1, 3], name="Last year", mode="lines")
])

#### A Contour and Scatter Plot of the Method of Steepest Descent

The example below shows how to display both a scatter plot and contour plot on the same axes.

This is useful for demonstrating progress in a steepest descent algorithm

using PlotlyJS, HTTP, JSON

response = HTTP.get("https://raw.githubusercontent.com/plotly/datasets/master/steepest.json")
data = JSON.parse(String(response.body))

plot([
contour(
z=data["contour_z"][1],
y=data["contour_y"][1],
x=data["contour_x"][1],
ncontours=30,
showscale=false
),
scatter(
x=data["trace_x"], y=data["trace_y"], mode="markers+lines",
name="steepest", line_color="black"
)
])