# How can matplotlib graph axis be moved?

Hello! I created test simple plot with matplotlib on www.sagenb.com using the following sintax:

import matplotlib.pyplot as plt
plt.plot([1, 3, 2, 4])
plt.savefig('1.png')


By default the axes are around the graph. But I want axes to be intersected at (0,0) point. I tried to find answer at matplotlib online documentation but not found.

Upd_1:

I would like to explain my problem more detail. Original graph has frame around it. Axes of this graph are located on the graph bordes. I want frame to be switched off and axis lines to be intersected at (0,0) point. Such graphs are drawn with Sage by default (I'm glad to upload some pictures, but my karma isn't enough to do it). Thanks to the help of fidelbc I typed the following code:

import matplotlib.pyplot as plt
plt.clf()
plt.plot([0, 5, 10, 15,20,25], [0, 5, 0, -5, 0, 5], linewidth=2, color='blue')
plt.box('off')
plt.grid(True)
plt.axhline(y=0, color='black')
plt.axvline(x=0, color='black')
plt.savefig('1.png')


New graph responds my idea at more extent and I want to draw arrows on axes and ticks with its label to be located near new horisontal axes. Please help me to set these parameters or just move graph axis. Thanks.

edit retag close merge delete

I'll just point out that this really isn't a Sage question at all... though we're happy to be a place to share info!

Sort by » oldest newest most voted Hi! You can find more details about pyplot here: x0.no/5yi3

You can try adding two lines to your code to get the axis intersected at (0,0), like this.

import matplotlib.pyplot as plt
plt.plot([1, 3, 2, 4])
plt.axhline(y=0)
plt.axvline(x=0)
plt.savefig('1.png')


This produces: The original plot was: Maybe creating the plots using functions from sage might be easier than using matplotlib.

more

Sorry, but your code don't solve this ploblem. I tried it and didn't see any difference from my graph.

Sorry, I might've missunderstood your question. I've added some images to contrast the differences. Is this what you wanted to produce?

Fidelbc, thank you for your help! Your link helped me at some extent. I realized my question wasn't detailed and I updated my question.

I founded answer for my question! It can be founded at http://commons.wikimedia.org/wiki/Fil... . More results can be founded at http://commons.wikimedia.org/wiki/Cat... . The code is below:

import matplotlib.pyplot as plt
plt.clf()
fig=figure(figsize=(5,3))
for direction in ["left","bottom"]:
ax.spines[direction].set_position('zero')
ax.spines[direction].set_smart_bounds(True)
for direction in ["right","top"]:
ax.spines[direction].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
ax.grid(True)
plt.plot([0, 5, 10, 15,20,25], [0, 5, 0, -5, 0, 5], linewidth=2, color='blue')
plt.savefig('1.png')


Thanks to anyone!

more