Matplotlib对数x轴和填充

时间:2016-10-15 11:21:24

标签: python matplotlib padding

我正在使用matplotlib和x轴上的填充以及对数刻度(参见第一张图片)。 没有对数刻度,填充很好地适用(参见第二个)。 任何建议如何在绘图线和左下角的轴线之间进行填充,以便人们可以看到线上的点?

感谢。

代码:

import matplotlib.pyplot as plt
import numpy as np
from matplotlib.pyplot import *
from matplotlib.ticker import ScalarFormatter

style.use('fivethirtyeight')

fig, ax = plt.subplots()

T = np.array([2**x for x in range(0,7+1)])
opt1 = np.array([x for x in range(0,7+1)])
opt2 = np.array([x*2 for x in range(0,7+1)])
opt3 = np.array([x*4 for x in range(0,7+1)])

ax.grid(True) 
xlabel("#nodes")
ylabel("time(s)")
legend(loc="best") 
title(r"Node start times") 

plt.xticks([2**x for x in range(0,7+1)])

plt.plot(T,opt1,"o-", label="opt1")
plt.plot(T,opt2, "s-", label="opt2")
plt.plot(T,opt3, "d-", label="opt2")
plt.legend(loc="upper left")
# This should be called after all axes have been added
plt.tight_layout()
plt.margins(0.05, 0.05)
# 1, 2, 4, ...
ax.set_xscale('log', basex=2)
ax.xaxis.set_major_formatter(matplotlib.ticker.FormatStrFormatter("%d"))
plt.show()
#savefig("plot_1.pdf")

Plot Log Scale Plot Normal

1 个答案:

答案 0 :(得分:0)

这不能解决您的填充问题,但您可以使用clip_on=False来防止这些点被切断。您似乎还需要确保他们使用zorder

在轴上方
plt.plot(T,opt1,"o-", label="opt1", clip_on=False, zorder=10)
plt.plot(T,opt2, "s-", label="opt2", clip_on=False, zorder=10)
plt.plot(T,opt3, "d-", label="opt2", clip_on=False, zorder=10)