Python Forum
How to draw rectangles in pyplot?
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
How to draw rectangles in pyplot?
#1
Hey,

from mpl_toolkits.mplot3d import Axes3D
import numpy as np

from mpl_toolkits.mplot3d import Axes3D 
from mpl_toolkits.mplot3d.art3d import Poly3DCollection 
import matplotlib.pyplot as plt

zs = []
xs = []
ys = []

fig = plt.figure()
axrec = Axes3D(fig)
ax = fig.add_subplot(111, projection='3d')

points =  [
(1.2,5,6),
(1.2,7,6),
(1.2,5,6),
(1.2,8,6),
(7,8,5),
(5,7,6),
(1,2,3),
(4,5,6),
(2,1,1),
]

rectangle =  [
((1,1,1),(2,2,2),(1,3,4)),
((2,3,4),(9,9,9),(3,4,5)),
]

for val in points:
  (x,y,z) = val
  xs.append(x)
  ys.append(y)
  zs.append(z)

for val in rectangle:
  (a,b,c) = val
  verts = [a,b,c]
  axrec.add_collection3d(Poly3DCollection(verts))

ax.scatter(xs, ys, zs, marker='o')

plt.show()
this code is supposed to draw all rectangles and points. However, I am not sure how to command the library to draw rectangles.
Thanks for your help!
Reply
#2
Hey, I am still looking for help.

Thank you!
Reply
#3
bump

Thank you!
Reply
#4
You need to be sure about points that forms a rectangle. Look at the simplest example below:

from mpl_toolkits.mplot3d import Axes3D                                                                                                                                                                                                                                                                                     
import numpy as np                                                                                                                                                                                                                                                                                                          
                                                                                                                                                                                                                                                                                                                            
from mpl_toolkits.mplot3d import Axes3D                                                                                                                                                                                                                                                                                     
from mpl_toolkits.mplot3d.art3d import Poly3DCollection                                                                                                                                                                                                                                                                     
import matplotlib.pyplot as plt                                                                                                                                                                                                                                                                                             
                                                                                                                                                                                                                                                                                                                            
                                                                                                                                                                                                                                                                                                                            
fig = plt.figure()                                                                                                                                                                                                                                                                                                          
ax = fig.add_subplot(111, projection='3d')                                                                                                                                                                                                                                                                                  
                                                                                                                                                                                                                                                                                                                            
rects  = [[[0, 0, 0], [0, 0, 1], [0, 1, 1], [0, 1, 0 ], [0, 0, 0]]]                                                                                                                                                                                                                                                               
# Each rectangle is presented as a set of points
# array rects consist of rectangles
                                                                                                                                                                                                                                                                                                                            
ax.add_collection3d(Poly3DCollection(rects))                                                                                                                                                                                                                                                                                
                                                                                                                                                                                                                                                                                                                            
vv = np.array(rects)                                                                                                                                                                                                                                                                                                        
ax.scatter(vv[0][:, 0], vv[0][:, 1], vv[0][:, 2], color='r')
plt.show()
Reply
#5
Uff, my fault !!!

I confused triangle with a rectangle! I would like to draw triangles... Sorry, not a foreigner...
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  Add multiple vertical rectangles to a chart in plotly? devansing 2 1,141 Jun-20-2023, 07:55 AM
Last Post: snippsat
  matplotlib.pyplot issue lonaveia 2 2,314 Jul-28-2020, 02:40 PM
Last Post: hussainmujtaba
  How does pyplot know what was plotted by the output of pandas.DataFrame(...).cumprod( codeowl 2 2,163 Mar-28-2020, 08:27 AM
Last Post: j.crater
  zooming in pyplot window SchroedingersLion 0 2,170 Aug-02-2019, 02:59 PM
Last Post: SchroedingersLion
  How to arrange the four pictures of a matplotlib.pyplot? vokoyo 0 2,737 Apr-04-2019, 10:58 PM
Last Post: vokoyo
  matplotlib pyplot ginput issue MLiljeroth 0 3,514 Oct-12-2018, 07:12 AM
Last Post: MLiljeroth
  Problem with Matplotlib.pyplot LTMP 1 2,806 Aug-21-2018, 04:50 AM
Last Post: ichabod801
  Different templates for different rectangles python Akhou 0 1,911 May-03-2018, 01:57 PM
Last Post: Akhou

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020