python – 理解matplotlib顶点
我正在尝试在matplotlib中为散点图创建自定义标记,其中标记是具有固定高度和不同宽度的矩形.每个标记的宽度是y值的函数.我尝试使用
this code作为模板,并假设如果给出了一个N 2-D元组的列表,它会绘制具有相应第一个值的宽度和第二个值的高度的矩形(可能这已经错了,但是那怎么办呢?)
我有一个x和y值列表,每个值包含以度为单位的角度.然后,我计算每个标记的宽度和高度 field_size = 2. symb_vec_x = [(field_size / np.cos(i * np.pi / 180.)) for i in y] symb_vec_y = [field_size for i in range(len(y))] 并构建顶点列表并绘制所有内容 symb_vec = list(zip(symb_vec_x,symb_vec_y)) fig = plt.figure(1,figsize=(14.40,9.00)) ax = fig.add_subplot(1,1,1) sc = ax.scatter(ra_i,dec_i,marker='None',verts=symb_vec) 但结果图是空的,但没有错误信息.任何人都可以告诉我在定义顶点时做错了什么以及如何正确操作? 解决方法
如上所述’marker =’无’需要删除,然后指定带有顶点的矩形的适当方式就像
verts = list(zip([-10.,10.,-10],[-5.,-5.,5.,5])) ax.scatter([0.5,1.0],[1.0,2.0],marker=(verts,0)) 顶点定义为([x1,x2,x3,x4],[y1,y2,y3,y4]),因此必须注意哪些得到减号等. 这个(verts,0)在文档中提到
但是我发现只使用verts并没有给出正确的形状. 要使过程自动化,您需要执行类似的操作 v_val=1.0 h_val=2.0 verts = list(zip([-h_val,h_val,-h_val],[-v_val,-v_val,v_val,v_val])) 基本示例: import pylab as py ax = py.subplot(111) v_val=1.0 h_val=2.0 verts = list(zip([-h_val,v_val])) ax.scatter([0.5,0)) * 编辑 个别标记 因此,您需要为每个案例手动创建一个顶点.这显然取决于您希望矩形如何逐点变化.这是一个例子 import pylab as py ax = py.subplot(111) def verts_function(x,y,r): # Define the vertex's multiplying the x value by a ratio x = x*r y = y return [(-x,-y),(x,y),(-x,y)] n=5 for i in range(1,4): ax.scatter(i,i,marker=(verts_function(i,0.3),0)) py.show() 所以在我的简单情况下,我绘制点i,i并在它们周围绘制矩形.指定vert标记的方式不直观.在the documentation,它描述如下:
因此,以下是等效的: vert = [(-300.0,-1000),(300.0,1000),(-300.0,1000)] vert = [(-0.3,-1),(0.3,1),(-0.3,1)] 例如,他们将产生相同的标记.因此我使用了比率,这是你需要做的工作. r(比率)的值将改变哪个轴保持不变. 这一切都变得非常复杂,我敢肯定必须有更好的方法来做到这一点. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |