Sage Math如何不使用列表设置散点图的不同点大小
不同大小散点图无额外列表实现方案
匹配你当前代码语法的SageMath环境实现
方案1:逐点叠加绘制(完全无额外列表)
不需要定义任何存储坐标或大小的列表,直接在循环内计算坐标和对应大小,叠加到画布即可:
p = Graphics() for k in range(1, 101): p += point((k, k*sin(k**2)), pointsize=k, color='red') p.show()
你可以按需调整pointsize后的大小计算逻辑,比如用pointsize=k/2缩小整体点尺寸,或者用pointsize=abs(k*sin(k**2))让点大小和y值挂钩。
方案2:直接传入可迭代对象作为点大小
不需要单独定义size变量/列表,直接把range对象或生成式传入pointsize参数即可:
f = [(k,k*sin(k^2)) for k in range(1,101)] p = points(f, pointsize=range(1,101), color='red') p.show()
如果你使用的是Python matplotlib环境
同样不需要额外定义大小列表,直接把大小规则传入scatter的s参数即可:
import matplotlib.pyplot as plt import numpy as np k = np.arange(1, 101) plt.scatter(k, k*np.sin(k**2), s=k, c='red') plt.show()
效果示意图

内容的提问来源于stack exchange,提问作者Joan Carles Montero Jiménez
相关产品推荐
相关产品推荐

