We want to support many different plot types with many different ways to define what and how it should be plotted. There is a high overlap of settings that can be used for each plot type. Here is an attempt to group everything. Presentation * subplots (n x m) * single plot * gallery * table * p-values / ANOVA / Chi-Square Plot Types * x-y relation ** Scatter ** Bubble (?) * x-y relation for high number of points ** contour ** 2d bins ** hex bins * distributions: only one can be drawn ** histogram (bar) (?) ** density plot (filled) (?) * distributions: many can be drawn ** histogram (line) ** density plot (line) ** cumulative distribution ** quantile-quantile plot (?) ** boxplots ** violins ** strip charts / sina plots ** overlapping densities (?) ** ridgeline plots * proportions ** pie chart ** bars (horizontal / vertical / stacked) * custom ** parallel requests Filters * query * group by ** field ** intervals (1m, 5m, 15m, 1h, ...) * split by * limit * date ranges (1...n) * find all method calls active at a specific time Axis * log/linear * y-range options * error bars * trend lines (cubic splines, B-splines, thin-plate splines, Gaussian process splines) Metrics * min/max * count * average * percentiles (median, 90-percentile, ...) Format * color palette * highlight selected lines The presentation defines how many plots you can define. It also influences some of the available filters. E.g. the gallery requires to define a 'split by' field. Each plot type defines which subset of filters, axis definitions, decorations and metrics is available. It also defines which plot types are available for the X2 axis. For example, you cannot combine a pie chart with a scatter plot. Plots in more detail Scatter x: time y: duration filters (required): query, date range filters (optional): group by, limit, intervals filters (forbidden): axis: log/linear, y-range options: trend lines metrics: min/max, count, average, percentiles combine: contour X2-axis: cumulative distribution, histogram (line), density plot (line), Parallel Requests Cumulative Distribution: x: percent y: duration filters (required): query, date range filters (optional): group by, limit, intervals filters (forbidden): axis: log/linear, y-range options: metrics: min/max, count, average, percentiles combine: X2-axis: scatter, Parallel Requests Contour: x: time y: duration filters (required): query, date range filters (optional): intervals filters (forbidden): group by, limit options: combine: scatter X2:axis: Parallel Requests: x: time y: count filters (required): query, date range filters (optional): filters (forbidden): group by, limit, intervals axis: log/linear, y-range options: metrics: min/max, average combine: X2-axis: scatter, cumulative distribution, Violin: x: group y: duration filters (required): query, date range, group by, limit, intervals filters (optional): filters (forbidden): axis: log/linear, y-range decorations: options: combine: strip charts bar chart: x: group y: metric filters (required): query, date range, group by, limit, intervals filters (optional): filters (forbidden): axis: log/linear, y-range decorations: options: combine: Use Cases: * Find slow requests * Find requests with unusually slow requests. ** max value > x ** 95-percentile/90-percentile > x ** num values > x * How many requests were active at some point in time? * Understand the distribution of response times. * Identify locking issues. * Find regressions.