Hi there,
I want to examine a vector field and therefore i used "quiver" to
visualize said field:
import numpy as np
import matplotlib.pyplot as plt# points
x, y = np.meshgrid(np.arange(0, 2*np.pi, 0.1),
np.arange(0, 1*np.pi, 0.1))
# derivatives
dx = -2*np.sin(x)*np.cos(y)
dy = np.cos(x)*np.sin(y)# plot
plt.figure()
plt.quiver(dx, dy, color='b')# beautiful axis
a = plt.gca()
x_a, y_a = a.get_xaxis(), a.get_yaxis()
a.axis('tight')
# TODO: We should not multiply with 10 here.
x_a.set_ticks(np.arange(0, 2*np.pi*10+1, np.pi*10/4))
y_a.set_ticks(np.arange(0, 1*np.pi*10+1, np.pi*10/4))
labels = [
r'0',
r'\\frac\{1\}\{4\}\\pi',
r'\\frac\{1\}\{2\}\\pi',
r'\\frac\{3\}\{4\}\\pi',
r'\\pi',
r'\\frac\{5\}\{4\}\\pi',
r'\\frac\{3\}\{2\}\\pi',
r'\\frac\{7\}\{4\}\\pi',
r'2 \\pi']
a.set_xticklabels(labels)
a.set_yticklabels(labels[:5])# show
plt.show()
(The plot looks like a double swirl, if anyone is interested in that
information)
At first I do not know why I have to multiply with 10 at the ticks, but
thats not the point.
It is much more important that I would like to set the image to a
certain width before saving. It should be both "tight" and "equal", so
after setting the width the height could be calculated automatically.
As a workaround I use the images and strech them vertically, but then
the x/y axis tick labels look strange.
So: How to set a certain width?
Thanks and a merry Christmas,
Keba