仅更改散点图中标记的宽度而不更改高度的方法?

Way to change only the width of marker in scatterplot but not height?

我想制作一个标记类型为矩形(不是正方形)的散点图,这样宽度大于高度。使用 "s" 我可以控制标记的整体大小,但它在两个维度上都会增加。

我不能直接传递高度和宽度,因为它们是散点图的未知属性。

import numpy as np
import matplotlib.pyplot as plt

fig, ax = plt.subplots()
ax.scatter(np.arange(1,6), np.random.normal(size=5), marker='s', s=16)

试试下面的代码片段。

import numpy as np
import matplotlib.pyplot as plt
width = 60
height = 30
verts = list(zip([-width,width,width,-width],[-height,-height,height,height]))
fig, ax = plt.subplots()
ax.scatter(np.arange(1,6), np.random.normal(size=5), marker=(verts,0),s=40)

这里,参数 s 改变了散点的大小。绘制的矩形保持比例 width/height.

输出:

更新

自 matplotlib 3.2x 起,(verts, 0) 的使用已弃用。工作代码应更改为

fig, ax = plt.subplots()
ax.scatter(np.arange(1,6), np.random.normal(size=5), marker=verts, s=40)