M_kaj
M_kaj

Reputation: 101

Plot piecewise data, x-axis limits

I use Julia with Plots , to generate my plots.

I want to plot data (A,B) and i know that all interesting data lies in two region of A. The two regions should be plotted between each other in one plot. My A-data is evenly spaced. So what i did was cutting out my interesting pieces and glued them into one object.

My problem is that i don't know how to manipulate the scale on the x-axis. When I just plot the B data against their array index, I basically get the form I want. I just need the numbers from A on the x-axis.

I give here a toy example

using Plots

N=5000
B=rand(N)
A=(1:1:N)
xl_1=100
xu_1=160
xl_2=600
xu_2=650

A_new=vcat(A[xl_1:xu_1],A[xl_2:xu_2])
B_new=vcat(B[xl_1:xu_1],B[xl_2:xu_2])

plot(A_new,B_new)     # This leaves the spacing between the data explicit

plot(B_new)           # This creats basically the right spacing, but   
                      # without the right x axis grid

I did not find anything how one can use two successive xlims, therefore i try it this way.

Upvotes: 0

Views: 297

Answers (1)

Michael K. Borregaard
Michael K. Borregaard

Reputation: 8044

You can't pass two successive xlims, because you can't have a break in the axis. That is by design in Plots. So your possibilities are: 1) to have two subplots with different parts of the plot, or 2) to plot with the index, and just change the axis labels. The second approach would use a command like xticks = ([1, 50, 100, 150], ["1", "50", "600", "650"], but I'd recommend the first as it's strictly speaking a more correct way of displaying the data:

plot(
       plot(A[xl_1:xu_1], B[xl_1:xu_1], legend = false),
       plot(A[xl_2:xu_2], B[xl_2:xu_2], yshowaxis = false),
       link = :y
)

Upvotes: 0

Related Questions