This file is indexed.

/usr/share/doc/python-scitools/examples/grab_backend_demo.py is in python-scitools 0.9.0-1.

This file is owned by root:root, with mode 0o755.

The actual contents of the file can be viewed below.

  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
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
#!/usr/bin/env python

"""
Demonstration on how to grab the backend after some Easyviz commands
and add some backend specific commands. The example is based on the
legend_demo.py file from Matplotlib.
"""

from scitools.std import *

a = linspace(0,3,150)
b = linspace(0,3,150)
c = exp(a)
d = c.tolist()
d.reverse()
d = array(d)

setp(interactive=False)
plot(a,c,'k--',a,d,'k:',a,c+d,'k')
legend('Model length', 'Data length', 'Total message length')
ylim([-1,20])
xlabel('Model complexity --->')
ylabel('Message length --->')
title('Minimum Message Length')
show()

print "Let us now tune the plot by grabbing the backend."
raw_input('Press Return key to continue:')

# Grab the backend and fine tune the plot:
if backend == 'matplotlib':
    pyplot = get_backend()
    ax = pyplot.gca()
    # Remove tick labels:
    ax.set_xticklabels([])
    ax.set_yticklabels([])
    # The arrows in the x and y labels does not look good. Here we use
    # some LaTeX arrows instead:
    ax.set_xlabel(r'Model complexity $\longrightarrow$')
    ax.set_ylabel(r'Message length $\longrightarrow$')
    # Change legend box location:
    l = ax.get_legend()
    l._loc = 9  # upper center (is there a better way to set location?)
    # Add shadow to legend box:
    l.shadow = True
    pyplot.draw()

elif backend == 'gnuplot':
    g = get_backend()
    # Remove tick labels:
    g('set xtics ("" 0, "" 0.5, "" 1, "" 1.5, "" 2, "" 2.5, "" 3)')
    g('set ytics ("" 0, "" 5, "" 10, "" 15, "" 20)')
    # Change location of legends:
    g('set key top center')
    # Create a box around the legends:
    g('set key box lt -1 lw 1 height 1 width 1')
    # Make the axes frame nice and thick:
    g('set border 1+2+4+8+16 linetype -1 linewidth 2')
    g.replot()

elif backend == 'veusz': 
    g = get_backend()
    # Remove tick labels:
    g.Set('/page1/graph1/x/TickLabels/hide', True)
    g.Set('/page1/graph1/y/TickLabels/hide', True)
    # Turn off minor tick marks:
    g.Set('/page1/graph1/x/MinorTicks/hide', True)
    g.Set('/page1/graph1/y/MinorTicks/hide', True)
    # Change legend box location:
    g.Set('/page1/graph1/key1/horzPosn', 'centre')
    g.Set('/page1/graph1/key1/vertPosn', 'top')
    # Adjust the placement of the title:
    g.Set('/page1/graph1/label1/xPos', 0.3)
    g.Set('/page1/graph1/label1/yPos', 1.02)
    g.window.showNormal()
    # We could also have done the changes interactively by saving the
    # session to a native Veusz file (.vsz) and open the file in Veusz:
    #save('tmp1.vsz')
    #os.system('veusz tmp1.vsz')

elif backend == 'grace':
    # In Grace we can do the changes interactively in the GUI.
    pass

elif backend == 'matlab':
    g = get_backend()
    # Remove tick labels:
    g.set_(g.gca(), 'XTickLabel', [], 'YTickLabel', [], nout=0)
    # Change legend location:
    h = g.findobj('Tag', 'legend', nout=1)  # find the legend handle
    g.set_(h, 'Location', 'North', nout=0)

elif backend == 'matlab2':
    g = get_backend()
    s = get_script()
    # Remove tick labels:
    s += "set(gca, 'XTickLabel', [], 'YTickLabel', [])\n"
    # Change legend location:
    s += "set(findobj('Tag', 'legend'), 'Location', 'North')\n"
    # Save the Matlab commands to a Matlab .m file:
    save('tmp1.m')
    # We can now open this file in Matlab (if Matlab is available):
    #os.system('matlab -r tmp1')

elif backend == 'pyx':
    # There is currently no way to change properties in the PyX backend
    # after having made the plot.
    pass

elif backend == 'blt':
    pass

print "Now we store a hardcopy of the tuned plot."
raw_input('Press Return key to continue:')

#hardcopy('grab_backend1.eps')  # Will destroy all changes!
#hardcopy('grab_backend1.png')  # Will destroy all changes!

# We have made changes in the backend directly and a call to hardcopy in
# Easyviz would normally destroy all these changes. However, setting the
# keyword argument replot to False in the hardcopy function will make sure
# that the changes are not destroyed:
if backend == 'gnuplot':
    # Unfortunately, setting replot to False does not currently work in the
    # Gnuplot backend. So, in this case we must use the hardcopy command from
    # the Gnuplot.py module:
    g.hardcopy(filename='tmp_grab_backend1.eps', terminal='postscript', mode='eps')
    g.hardcopy(filename='tmp_grab_backend1.png', terminal='png')
else:
    savefig('grab_backend1.eps', replot=False)
    if not backend == 'pyx':
        savefig('grab_backend1.png', replot=False)