File: simplification_clipping_test.py

package info (click to toggle)
matplotlib 0.99.3-1
  • links: PTS, VCS
  • area: main
  • in suites: squeeze
  • size: 33,060 kB
  • ctags: 28,162
  • sloc: python: 79,063; cpp: 64,496; objc: 4,513; ansic: 1,948; makefile: 146; sh: 7
file content (72 lines) | stat: -rw-r--r-- 1,833 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
from pylab import *
import numpy as np
from matplotlib import patches, path
nan = np.nan
Path = path.Path

t = arange(0.0, 2.0, 0.01)
s = sin(2*pi*t)
plot(t, s, linewidth=1.0)

ylim((-0.20, -0.28))

title('Should see four lines extending from bottom to top')

figure()

x = np.array([1.0,2.0,3.0,2.0e5])
y = np.arange(len(x))
plot(x,y)
xlim(xmin=2,xmax=6)
title("Should be monotonically increasing")

figure()

x = np.array([0.0, 1.0, 0.0, -1.0, 0.0])
y = np.array([1.0, 0.0, -1.0, 0.0, 1.0])
plot(x, y)
xlim(xmin=-0.6, xmax=0.6)
ylim(ymin=-0.6, ymax=0.6)
title("Diamond shape, with segments visible in all four corners")

figure()

np.random.seed(0)
x = np.random.uniform(size=(5000,)) * 50

rcParams['path.simplify'] = True
p1 = plot(x,solid_joinstyle='round',linewidth=2.0)

path = p1[0].get_path()
transform = p1[0].get_transform()
path = transform.transform_path(path)
simplified = list(path.iter_segments(simplify=(800, 600)))

title("Original length: %d, simplified length: %d" % (len(path.vertices), len(simplified)))

figure()

x = np.sin(np.linspace(0, np.pi * 2.0, 1000)) + np.random.uniform(size=(1000,)) * 0.01

rcParams['path.simplify'] = True
p1 = plot(x,solid_joinstyle='round',linewidth=2.0)

path = p1[0].get_path()
transform = p1[0].get_transform()
path = transform.transform_path(path)
simplified = list(path.iter_segments(simplify=(800, 600)))

title("Original length: %d, simplified length: %d" % (len(path.vertices), len(simplified)))

figure()
pp1 = patches.PathPatch(
    Path([(0, 0), (1, 0), (1, 1), (nan, 1), (0, 0), (2, 0), (2, 2), (0, 0)],
         [Path.MOVETO, Path.CURVE3, Path.CURVE3, Path.CURVE3, Path.CURVE3, Path.CURVE3, Path.CURVE3, Path.CLOSEPOLY]),
    fc="none")

gca().add_patch(pp1)
gca().set_xlim((0, 2))
gca().set_ylim((0, 2))
title("Should be one line with two curves below it")

show()