有两个使用matplotlib创建的绘图示例(均来自matplotlib网页):
The first one(右)。The second one(错误)。
第二个边角(放大后)缺少一小块。线的终点是垂直线的中心,而不是更远的边。
然而,即使我使用的图片源代码是正确的网络:

import matplotlib.pyplot as plt
import numpy as np

x, y = np.random.randn(2, 100)
fig = plt.figure()
ax1 = fig.add_subplot(211)
ax1.xcorr(x, y, usevlines=True, maxlags=50, normed=True, lw=2)
ax1.grid(True)
ax1.axhline(0, color='black', lw=2)

ax2 = fig.add_subplot(212, sharex=ax1)
ax2.acorr(x, usevlines=True, normed=True, maxlags=50, lw=2)
ax2.grid(True)
ax2.axhline(0, color='black', lw=2)

plt.show()

我得到了错误的结果。为什么会这样?我的matplotlib/python版本中有什么bug?还有别的吗?
我使用python 3.4.3和matplotlib 1.3.1。
提前谢谢。

最佳答案

这不是一个bug,而是由于用于轴脊椎的默认capstylecapstyle定义了一条线的终止方式,以及两条线连接在一起时的外观。
您可以将capstyle设置为butt(默认)、roundprojecting。可以通过为每个轴脊椎调用spines.set_capstyle来更改此设置。

for spine in ax.spines.values():
    spine.set_capstyle('projecting')

对于特定版本的matplotlib(1.3),当它们将修补程序对象的默认capstyle更改为butt时,似乎无法设置spines的capstyle,因为当前版本中有:
对于面片,现在使用的capstyle是butt,以便与大多数其他对象的默认值保持一致,并避免在使用较大的线宽时出现非实线样式为实线的问题。以前,Patch使用capstyle'projection'。

08-24 23:46