-
Notifications
You must be signed in to change notification settings - Fork 9
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
How to synchronize sub-plots #33
Comments
😞 Trying to help solve your issue made me realize at which point InspectDR API has gotten confusing. I should really revisit the entire architecture and clean up... but I don't see having time to do that in the near future. Anyhow, let's look at solving your issue... |
InspectDR natively knows how to keep x-axes in sync... but not through the Plots.jl interface. Plots.jl can arbitrarily link up x & y axes (though doesn't typically support zooming) - and InspectDR only supports linking up "y-strips" natively (allowing you to keep things in sync when zooming in). To link up x-axes in InspectDR (as you requested), you need to access the specialized GraphStrip() objects (which are not typically manipulated directly by the user): # example for plotting in Julia using subplots
using Plots, Gtk.ShortNames, InspectDR
function init()
inspectdr()
InspectDR.defaults.xaxiscontrol_visible = false
default(width=1, xtickfontsize=12, ytickfontsize=12, legendfontsize=12)
end
init()
x = 0:0.01:100
y1 = sin.(x)
y2 = cos.(x)
p = plot(x, y1, link=:x, legend=false)
#Add y2 to >>SAME<< plot:
plot!(p, x, y2, legend=false, color=:red)
#pIDR = display(p) # Display with InspectDR and keep plot object
pIDR = gui() #Alternative to display(p)
#InspectDR direct manipulations----------------------------
sp1_IDR = pIDR.subplots[1].src #Reference to subplot 1
strip2 = InspectDR.GraphStrip()
push!(sp1_IDR.strips, strip2)
strip2.yscale = InspectDR.AxisScale(:lin)
data_orig = sp1_IDR.data
wfrm2 = sp1_IDR.data[2] #2nd waveform added to plot (assuming `Plots` maintains order).
wfrm2.strip=2 #Assign to a separate strip number
#EO InspectDR direct manipulations----------------------------
resize!(pIDR.wnd, 1200, 700) # Resize GTK window directly
G_.keep_above(pIDR.wnd, true) # show the window on top
#Not necessary: p.src.layout.values.ncolumns = 1 # Use 1 column only
InspectDR.refresh(pIDR)
nothing |
But at this point, you might want to start using InspectDR directly (not using Plots.jl at all). InspectDR-only solution# example for plotting in Julia using subplots
using InspectDR, Gtk.ShortNames, Colors
function init()
InspectDR.defaults.xaxiscontrol_visible = false
#Plots.jl uses "sans-serif":
InspectDR.overwritefont!(InspectDR.defaults.plotlayout, fontname="sans-serif")
dlyt = InspectDR.defaults.plotlayout
#Available: font_annotation, font_axislabel, font_legend, font_striplabel, font_ticklabel, font_time, font_title
dlyt.font_title._size = 18
dlyt.font_ticklabel._size = 12
dlyt.font_legend._size = 12
end
init()
x = 0:0.01:100
y1 = sin.(x)
y2 = cos.(x)
x = collect(x) #InspectDR needs Vector{} (doesn't support ranges)
#Create a multi-strip plot:
plot1 = InspectDR.Plot2D(:lin, [:lin, :lin], title="Title",
xlabel="x-label", ylabels=["y1-label", "y2-label"]
)
plot1.layout[:enable_legend] = false
wfrm = add(plot1, x, y1, strip=1, id="y1")
wfrm.line = line(style=:solid, width=2, color=colorant"blue")
wfrm = add(plot1, x, y2, strip=2, id="y2")
wfrm.line = line(style=:solid, width=2, color=colorant"red")
gtkplot = display(InspectDR.GtkDisplay(), plot1)
resize!(gtkplot.wnd, 1200, 700) # Resize GTK window directly
G_.keep_above(gtkplot.wnd, true) # show the window on top
InspectDR.refresh(gtkplot) #Just in case
nothing |
Windows/Cairo font bug?I've found that text will render as strange boxes if the font size is not "correct". Ex:
I will likely have to open an issue on that. |
I have the following code:
It works nicely, displaying two plots above each other, like in a 2 channel scope.
Now I want to be able to zoom into the time axes (x-axes). But I can only zoom one plot or the other.
How can I synchronize zoom factor (in x) and x-offset of both plots?
The text was updated successfully, but these errors were encountered: