如何在Matplotlib中绘制散点图后修改标记大小?
解决Matplotlib散点图绘制后修改标记大小的问题
嘿,这个问题我之前调试代码时也踩过坑!你用plt.setp()的思路没问题,但问题出在参数名上——咱们来一步步解决它。
首先得明确:ax.scatter()返回的是一个PathCollection对象,这个对象用来管理所有散点标记的样式。你之前尝试的s=10是调用scatter()时的初始化参数,但修改已绘制完成的标记时,对应的对象属性名是sizes,不是s,这就是为什么你的代码没生效。
下面是两种可行的解决方法:
方法1:使用set_sizes()方法(推荐)
这是最直观的方式,PathCollection对象自带set_sizes()方法,你只需要传入一个和数据点数量匹配的大小列表即可。如果想让所有标记大小一致,就生成一个全是目标数值的列表:
fig, ax = plt.subplots() a = list(range(20)) b = list(range(20, 40)) p = ax.scatter(a, b) # 把所有标记改成大小10 p.set_sizes([10] * len(a)) plt.show()
要是想给不同点设置不同大小,直接把列表换成对应数值的数组就好,比如p.set_sizes([5, 10, 15, ..., 100])。
方法2:用plt.setp()指定sizes参数
如果你习惯用plt.setp(),只要把参数名改成sizes就能生效:
plt.setp(p, sizes=[10] * len(a))
补充说明:如果是在Jupyter这类交互环境中修改,修改后可以调用plt.draw()让更新立刻生效;如果是脚本运行,直接plt.show()就能看到调整后的效果。
内容的提问来源于stack exchange,提问作者user2968773
相关产品推荐
相关产品推荐

