2D plotting, drawing, and GUIs using Qwt and Qt
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
src
test
.gitignore
.travis.yml
LICENSE.md
README.md
REQUIRE

README.md

Qwt.jl

Author: Thomas Breloff (@tbreloff)

NOTE: I recommend using Plots.jl as the plotting interface for Qwt.

Plotting using PyQt/PyQwt and a clean interface for 2D scenes using QCanvas. Add to PyQt GUIs and compose many widgets together for complex visualizations.

Install

  • Install python and PyQt4
  • Install PyQwt. If you can't find a bundled package through brew, yum, apt-get, etc:

Tip: On OS X, brew install pyqt and brew install pyqwt might be all you need.

Zooming

  • Click and drag with the left mouse button to select a rectangle to zoom into
  • To undo 1 zoom, hold ALT and click the right mouse button
  • To redo 1 zoom, hold SHIFT and click the right mouse button
  • To reset the zoom stack, click the middle mouse button

Panning

  • Click and drag with the right mouse button

Other

  • Click on legend labels to hide/show individual series

Examples:

using Qwt

# simple 2D line plot
plot(1:10)

# these are equivalent
x = randn(100) * 5
y = sin(x)
plot(x, y, linetype=:dots)
scatter(x, y)

# create a heatmap (and optionally fine-tune coloring)
# heatmap_n is the number of bins on each axis
# heatmap_c is the cutoff points of the color range
heatmap(randn(10000), randn(10000); heatmap_n = 20, heatmap_c = (0.05, 0.3))

# pass in vectors or matrices, and it should slice it up properly
Y = rand(100,9)  												# matrix with series in columns
subplot(Y) 															# creates a 3x3 grid of subplots, (one per column)
subplot(rand(100), Y, linetype=:dots)		# same, but has shared x-data
plot(Y)																	# plots 5 lines on the same axis (one per column)

# use both axes
plot(Y[:,1:2], axiss=[:left, :right], colors=[:blue, :green])

# you could also add it after the fact
y1, y2 = Y[:,1], Y[:,2]
plt = plot(y1, color = :blue)
oplot(plt, y2, axis = :right, color = :green)

# there are lots of things to adjust
plot(y1, axis = :right,
				 color = :red,
				 label = "my line",
				 width = 5,
				 linetype = :step,
				 linestyle = :dashdot,
				 marker = :ellipse,
				 markercolor = :cyan,
				 markersize = 20,
				 title = "my title",
				 xlabel = "my x label",
				 ylabel = "my y label"
				 yrightlabel = "my right axis y label",
				 reg = true  # adds a regression line for each series
				 ) 

# and anything can be pluralized by adding an "s" to the end and passing a vector
plot(Y[:,1:2], colors = [:red, :blue])

# add to a plot in real time
plt = plot([0],[0])
for x in 0:0.1:100
	push!(plt, 1, x, sin(x))
	refresh(plt)
	sleep(0.01)
end


# save a png
savepng(plt, "/tmp/png/plot0001.png")


# save an animated gif (requires ffmpeg... saves to $dir/out.gif)
empty!(plt)
a = animation(plt, "/tmp/png")
for x in 0:0.1:5
	push!(plt, 1, x, sin(x))
	refresh(plt)
	saveframe(a)
end
makegif(a)