我是python的初学者,只有这种语言的基础知识,这个问题可能不是很难,但它会让我失望。
现在我有一个'dict'数据结构,我们假设它是{(0,0):'red'},只是一个元素。
我想在2D平面上绘制以点(0,0)为中心的红色单位正方形,并将结果输出为.png文件。一旦失败,人们就可以很容易地完成dict中许多点的情况。
我认为代码应该非常简单(最好不要使用libs,例如matplotlib cairo等),但我不知道如何与图形交互,任何人都可以给我一个提示吗?
我用谷歌搜索,但结果大多是matplotlib,pyplot ...使用lib文件,我认为必须有一个只有普通python代码的简单解决方案,所以我在这里发帖求助。
答案 0 :(得分:-1)
我个人认为cairo是最容易的。您只需要设置画布并用形状填充它。对于矩形,您需要将X,Y位置作为起点,宽度和高度才能完成绘图。颜色用于rgb float。如果要使用它们,则必须将命名颜色转换为rgb。
我为你做了一个例子:
#!/usr/bin/python
# -*- coding: utf-8 -*-
import cairo
# You need colors in rgb floats
Dict= {(70,60): (1,1,0), (100,90): (0,1,0), (130,120): (0,0,1)}
your_dict={(0,0): (1,0,0)}
radius=10 # The radius of the dot
w=100 # width of the square
h=100 # height of the square
WIDTH, HEIGHT = 200, 200 # Canvas size
surface = cairo.ImageSurface (cairo.FORMAT_ARGB32, WIDTH, HEIGHT)
context = cairo.Context (surface)
# Background Neutral Gray ----------
context.set_source_rgb(0.25, 0.25, 0.25)
context.rectangle(0, 0, WIDTH, HEIGHT)
context.fill()
# Your Square -----------------------
for e in your_dict:
posX = e[0]
posY = e[1]
r = your_dict[e][0]
g = your_dict[e][1]
b = your_dict[e][2]
context.set_source_rgb(r, g, b) # rgb color
context.rectangle(posX, posY, w, h)
context.fill()
# White Example Circle -------------------
context.set_source_rgb(1, 1, 1) # rgb color
context.arc(20, 20, 10.0, 0, 360)
context.fill()
# Dots from Dict -------------------
for e in Dict:
posX = e[0]
posY = e[1]
r = Dict[e][0]
g = Dict[e][1]
b = Dict[e][2]
context.set_source_rgb(r, g, b) # rgb color
context.arc(posX, posY, radius, 0, 360)
context.fill()
surface.write_to_png ("img.png") # Output to PNG
您将获得一张图片:http://oi59.tinypic.com/2yy2iv7.jpg