在带有 matplotlib 的 PDF 散点输出中不考虑标记大小
Marker size not respected in scatter output to PDF w/ matplotlib
似乎 pylab 散点图的标记大小在导出为 PDF 时有不同的行为?请注意,在图像中,左下角的 X 很大(PDF 的屏幕截图)。在 png 输出和屏幕 show() 中看起来不错。不过,根据附加的代码,它们应该匹配。 PDF 输出有问题吗?
import numpy as np
import pylab as plt
x=np.arange(1,10)
y=np.arange(1,10)
s=np.arange(1,100,10)
fig, ax = plt.subplots(figsize=(5, 5))
ax.scatter(x,y, marker='x', color='gray',s=s)
plt.savefig('test.png')
plt.savefig('test.pdf')
plt.show()
PDF 输出:
PNG 输出:
您的 s
与 x
和 y
的长度不同。
len(s) # 10
len(x) # 9
len(y) # 9
为什么这会导致这种行为,不知道。但是如果你设置 s
为相同的长度,可能会像这样:
s = np.arange(1,100,11)
应该可以。
因此,完整代码:
import numpy as np
import pylab as plt
x = np.arange(1, 10)
y = np.arange(1, 10)
s = np.arange(1, 100, 11)
fig, ax = plt.subplots(figsize = (5, 5))
ax.scatter(x, y, marker = 'x', color = 'gray', s = s)
plt.savefig('test.png')
plt.savefig('test.pdf')
plt.show()
将给予:
PNG:
PDF:
我不知道您当前使用的是哪个版本,但最新版本 (3.3.3) 会在 运行 您的原始代码:
时给出 ValueError
ValueError: s must be a scalar, or the same size as x and y
这基本上描述了我的答案。
似乎 pylab 散点图的标记大小在导出为 PDF 时有不同的行为?请注意,在图像中,左下角的 X 很大(PDF 的屏幕截图)。在 png 输出和屏幕 show() 中看起来不错。不过,根据附加的代码,它们应该匹配。 PDF 输出有问题吗?
import numpy as np
import pylab as plt
x=np.arange(1,10)
y=np.arange(1,10)
s=np.arange(1,100,10)
fig, ax = plt.subplots(figsize=(5, 5))
ax.scatter(x,y, marker='x', color='gray',s=s)
plt.savefig('test.png')
plt.savefig('test.pdf')
plt.show()
PDF 输出:
PNG 输出:
您的 s
与 x
和 y
的长度不同。
len(s) # 10
len(x) # 9
len(y) # 9
为什么这会导致这种行为,不知道。但是如果你设置 s
为相同的长度,可能会像这样:
s = np.arange(1,100,11)
应该可以。
因此,完整代码:
import numpy as np
import pylab as plt
x = np.arange(1, 10)
y = np.arange(1, 10)
s = np.arange(1, 100, 11)
fig, ax = plt.subplots(figsize = (5, 5))
ax.scatter(x, y, marker = 'x', color = 'gray', s = s)
plt.savefig('test.png')
plt.savefig('test.pdf')
plt.show()
将给予:
PNG:
PDF:
我不知道您当前使用的是哪个版本,但最新版本 (3.3.3) 会在 运行 您的原始代码:
时给出 ValueErrorValueError: s must be a scalar, or the same size as x and y
这基本上描述了我的答案。