Python中矩形的可视化

Python中矩形的可视化,python,python-3.x,data-visualization,visualization,Python,Python 3.x,Data Visualization,Visualization,所以,我有一个10x10的网格。关于如何在其中可视化2025个矩形有什么想法吗? 我的意思是,我想把它们放在一页上(也许是一张图片),但我不知道应该使用哪个库。 我想用字母来形象化所有的东西,比如当更多的边界在彼此上方时,我也想形象化它们。我的意思是我不知道怎么做。我不需要给我代码或任何东西,我只想使用一个库名 编辑: 我的矩形在一个包含4个元组的列表中定义,其中一个元组具有一个角的x,y坐标,如:[(x,y),(x2,y),(x,y2),(x2,y2)] EDIT2: 现在我的代码是: mul

所以,我有一个10x10的网格。关于如何在其中可视化2025个矩形有什么想法吗? 我的意思是,我想把它们放在一页上(也许是一张图片),但我不知道应该使用哪个库。 我想用字母来形象化所有的东西,比如当更多的边界在彼此上方时,我也想形象化它们。我的意思是我不知道怎么做。我不需要给我代码或任何东西,我只想使用一个库名

编辑: 我的矩形在一个包含4个元组的列表中定义,其中一个元组具有一个角的x,y坐标,如:
[(x,y),(x2,y),(x,y2),(x2,y2)]

EDIT2: 现在我的代码是:

multipler = 100
canvasH = 10 * multipler  # 10 == Y in squares.py
canvasW = 10 * multipler  # 10 == X in squares.py

img = numpy.zeros((canvasH, canvasW, 3), numpy.uint8)
# img = cv2.line(img, (0, 0), (511, 511), (255, 0, 0), 5)

rectangles = [[(0, 0), (1, 0), (0, 1), (1, 1)], [(0, 0), (1, 0), (0, 2), (1, 2)], [(0, 0), (1, 0), (0, 3), (1, 3)]...]

for rectangle in rectangles:
    cv2.rectangle(img, (rectangle[0][0] * multipler, rectangle[0][1] * multipler), (rectangle[3][0] * multipler, rectangle[3][1] * multipler), (206, 220, 242))

cv2.imshow('img', img)

cv2.waitKey(0)
cv2.destroyAllWindows()
但是我只看到了
9x9
pics,所以我不能看到所有的图片(我有2025)

谢谢,
Marci

你的问题中有很多未知数。这里有一个可能的解释

一些评论:

  • 存在许多用于绘制矩形的库。Matplotlib经常用于可视化,并具有方便的功能
  • 存在许多颜色表示法,例如,对于红、绿、蓝(更多信息),在0和1之间有3个值
  • alpha可以合并为第四个元素,也可以单独给出
  • 如果只想查看边,请将facecolor设置为“无”
  • 无需缩放这些值。matplotlib等库通过设置dpi(每英寸点数,标准值:100300600)自动执行此操作
  • 如果您不想只在屏幕上使用结果,
    savefig
    可以保存为多种格式。png“最适合纯图像格式。”。svg’是一种高质量的矢量格式
  • 最终结果现在看起来像一幅抽象画,但可以作为探索的起点
从matplotlib导入pyplot作为plt
从matplotlib.patches导入矩形
随机输入
矩形=[]
对于范围内的(2025年):
x=随机均匀(0.0,10.0)
y=随机均匀(0.0,10.0)
w=随机均匀(0.1,1.0)
h=随机均匀(0.1,1.0)
矩形。附加([(x,y),(x+w,y),(x,y+h),(x+w,y+h)])
颜色=[c/256表示(206、220、242)中的c]#rgb值介于0和1之间
图,ax=plt.子批次(图尺寸=(10,10))
ax.set(xlim=(0,10),ylim=(0,10))
ax.轴(“关闭”)
对于矩形中的矩形:
xy=矩形[0]
宽度=矩形[3][0]-矩形[0][0]
高度=矩形[3][1]-矩形[0][1]
rect=矩形(xy,宽度,高度,线宽=1,边色=none,面色=color,alpha=0.3)
ax.add_补丁(rect)
plt.savefig(“test.png”,bbox_inches='tight',dpi=300)
plt.show()

PS1:对于您在评论中关于网格上许多重叠矩形的附加问题,您可以绘制一个由覆盖每个单位正方形的矩形数量着色的图像。一些示例代码:

from matplotlib import pyplot as plt

rectangles = [[(0, 0), (1, 0), (0, 1), (1, 1)], [(0, 0), (1, 0), (0, 2), (1, 2)], [(0, 0), (1, 0), (0, 3), (1, 3)],
              [(0, 0), (1, 0), (0, 4), (1, 4)], [(0, 0), (1, 0), (0, 5), (1, 5)], [(0, 0), (1, 0), (0, 6), (1, 6)],
              [(0, 0), (1, 0), (0, 7), (1, 7)], [(0, 0), (1, 0), (0, 8), (1, 8)], [(0, 0), (1, 0), (0, 9), (1, 9)],
              ... ]

grid = [[0 for y in range(10)] for x in range(10)]
for r in rectangles:
    for x in range(r[0][0], r[3][0] + 1):
        for y in range(r[0][1], r[3][1] + 1):
            grid [x][y] += 1

plt.imshow(grid, cmap='magma_r')
plt.show()
PS2:对于你的例子,在10x10的网格上,几乎所有的矩形都有整数坐标,一个想法是只画边,使用随机颜色区分和随机移动所有点,这样它们就不再重叠了。即使如此,仍然有大量几乎重叠的矩形

从matplotlib导入pyplot作为plt
从matplotlib.patches导入矩形
从matplotlib导入cm
随机输入
矩形=。。。
图,ax=plt.子批次(图尺寸=(10,10))
ax.set(xlim=(0,11),ylim=(0,11))
ax.轴(“关闭”)
cmap=cm.get\u cmap(“彩虹”)
对于矩形中的矩形:
x0=矩形[0][0]+随机均匀(-.45,.45)
y0=矩形[0][1]+随机均匀(-.45,45)
x1=矩形[3][0]+随机均匀(-.45,45)
y1=矩形[3][1]+随机均匀(-.45,.45)
宽度=x1-x0
高度=y1-y0
矩形=矩形((x0,y0),宽度,高度,线宽=1,
facecolor='none',edgecolor=cmap(随机均匀(0,1)),alpha=0.5)
ax.add_补丁(rect)
plt.savefig(“test.png”,bbox_inches='tight',dpi=300)
plt.show()

您可以使用
opencv
如何定义矩形?是否要填充矩形?还是只显示边缘?所有矩形都是整数坐标吗?你怎么能看到有这么多颜色相同的矩形的东西?这个答案有用吗?是的,是的!谢谢你的回答。对,所以我有另一个问题。我有另一个数据文件:我得到的图片是:问题是什么?你希望得到什么?也许散点图更有意义?还是只画矩形的轮廓,让内部空白?你的矩形有什么意义?我只是想把它们很好地可视化。要想喜欢,就去看看他们每个人。我不能解决这个问题吗?