金融量化学习---Python, MySQL, Pandas

这里用来记录一些在金融领域,尤其是银行相关的资金、债券、票据中应用到的数据管理与分析, 编程等心得或笔记,以及个人的一点小小兴趣(易经八卦、藏密禅修)等

导航

python画图软件Graphics和turtle使用心得

Graphics

graphics 是一个简单的面向对象的图形库, 旨在使新手程序员能够很容易地以面向对象的方式试验计算机图形。
【注意:python没有内置graphic模块,需要单独下载安装】
graphics库可以从http://mcsp.wartburg.edu/zelle/python/graphics.py下载,或者https://pypi.org/project/graphics.py/5.0.1/

将下载好的graphics.py文件放在poython库安装目录(xxx\python\Lib\site-packages)下即可,如果使用的是anaconda, 则放在Anaconda\Lib\site-packages下面。
【在dos界面命令行输入:where python,可返回本机的python的安装路径】
还有官方的使用手册,连同graphics.py文件,我打包放在这里:下载地址

【运行代码时总是出现卡死或白屏,记得添加下列代码到末尾】

win.getMouse()
win.close()

使用前,导入模块

from graphics import *

1. GraphWin对象(设置画布窗口名和尺寸)

GraphWin(title,width,height) 构造一个新的图形窗口,用于在屏幕上绘图。

win = GraphWin("Investment Grownth", 640,480)

plot(x,y,color) 在窗口中(x,y)处绘制像素。

win.plot(35,128,"blue")

plotPixel(x,y,color) 在“原始”位置(x,y)处绘制像素,忽略setCoords设置的任何坐标变换

win.plotPixel(35,128,"blue")

setBackground(color) 将窗口背景设置为给定的颜色。默认背景颜色取决于系统。

win.setBackground("white")

close() 关闭屏幕窗口

win.close()

getMouse() 暂停等待用户在窗口中单击鼠标,并用Point对象返回鼠标点击的位置

clickPoint = win.getMouse()

checkMouse() 与getMouse()类似,但不会暂停等待用户单击。返回鼠标点击的最后一个点,如果自上次调用checkMouse或getMouse后未点击窗口,则返回None。(这对于控制动画循环特别有用)

clickPoint = win.checkMouse()

getKey() 暂停等待用户在键盘上键入一个键,并返回一个表示被按下键的字符串

keyString = win.getKey()

checkKey() 与getKey()类似,但不会暂停等待用户按下一个键。返回被按下的最后一个键,如果从上一次调用checkKey或getKey后没有按下任何键,则返回" "。(这对于控制简单的动画循环特别有用)
keyString = win.checkKey()

setCoords(xll,yll,xur,yur) 设置窗口的坐标系。当前绘制的对象被重绘,而后续的绘制将相对于新的坐标系统(除plotPixel以外)

win.setCoords(0,0,200,100)

2.图形对象1
setFill(color) 将对象的内部设置为给定的颜色
someObject.setFill("red")

setOutline(color) 将对象的轮廓设置为给定的颜色
someObject.setOutline("yellow")

setWidth(pixel) 将对象的轮廓宽度设置为所需的像素数。(不适用于Point)
someObject.setWidth(3)

draw(aGraphWin) 将对象绘制到给定的GraphWin中并返回绘制对象。
someObject.draw(someGraphWin)

undraw() 从图形窗口中擦除对象。如果对象当前未绘制,则不采取任何操作
someObeject.undraw()

move(dx,dy) 在x方向上移动对象dx单位,在y方向上移动dy单位。如果对象当前已绘制,则将图像调整到新位置。
someObject.move(10,15.5)

clone() 返回对象的副本。克隆始终以未绘制状态创建,除此之外,它们与被克隆的对象一样。
objectCopy = someObject.clone()

Point 方法
Point(x,y) 构造具有给定坐标的点
aPoint = Point(3.5,8)

get() 返回点的x坐标
xValue = aPoint.getX()

getY() 返回点的y坐标
yValue = aPoint.getY()

Line 方法
Line(point1,point2) 构造从point1到point2的线段
aLine = Line(Point(1,3),Point(7,4))

setArrow(endString) 设置线段的箭头状态。 箭头可以在第一端点、最后端点或两个duandian行绘制。
aLine.setArrow("both")

getCenter() 返回线段中点的克隆
midPoint = aLine.getCenter()

getP1()、getP2() 返回线段中的对应端点的克隆
startPoint = aLine.getP1()

Circle方法
Circle(centerPoint,radius) 构造具有给定圆心和半径的圆。
aCircle = Circle(Point(3,4),10.5)

getCenter() 返回圆心的克隆
centerPoint = aCircle.getCenter()

getRadius() 返回圆的半径
radius = aCircle.getRadius()

getP1()、getP2() 返回圆的边界框的对应角落的克隆。它们是围绕圆的正方形的对角点
cornerPoint = aCircle.getP1()

Rectangle 方法
Rectangle(point1,point2) 构造一个对角点在point1和point2的矩形
aRectangle = Rectangle(Point(1,3),Point(4,7))

getCenter 返回矩形中心点的克隆
centerPoint = aRectangle.getCenter()

gerP1()、getP2() 返回用于构造矩形的对应点的克隆
cornerPoint = aRectangle.getP1()

Oval 方法
Oval(point1,point2) 在由point1 和point2确定的边界框中构造一个椭圆
anOval = Oval(Point(1,2),Point(3,4))

getCenter() 返回椭圆形中心点的克隆
centerPoint = anOval.getCenter()

getP1()、getP2() 返回用于构造椭圆的对应点的克隆
cornerPoint = anOval.getP1()

Polygon 方法
Polygon(point1,point2,point3,…) 构造一个以给定点为顶点的多边形。也接受单个参数,即顶点的列表。
aPolygon = Polygon(Point(1,2),Point(3,4),Point(5,6))
aPolygon = Polygon([Point(1,2),Point(3,4),Point(5,6)])

getPoints() 返回一个列表,包含用于构造多边形的点的克隆
pointList = aPolygon.getPoints()

Text 方法
Text(anchorPoint,textString) 构造一个文本对象,显示以anchorPoint为中心的文本字符串。文本水平显示。
message = Text(Point(3,4),"Hello")

setText(string) 将对象的文本设置为字符串
message.setText("Goodbye!")

getText() 返回当前字符串
msgString = message.getText()

getAnchor() 返回锚点的克隆
centerPoint = message.getAnchor()

setFace(family) 将字体更改为给定的系列。可能值有“helvatica”、“courier”、“times”、“roman”和“arial”
message.setFace("arial")

setSize(point) 将字体大小更改为给定的点大小,从5点到36点是合法的
message.setSize(7)

setStyle(style) 将字体更改为给定的样式。可能值有“normal”、“bold”、“italic”和“bold italic”
message.setStyle("bold")

setTextColor(color) 将文本的颜色设置为彩色。注意:setFill有同样的效果
message.setTextColor("pink")

  1. Entry 对象
    Entry对象支持通用的图形方法move()、draw(graphwin)、undraw()、setFill(color)和clone()。
    特有方法如下:

Entry(centerPoint,width) 构造具有给定中心点和宽度的Entry。宽度用可显示的文本字符数指定。
inputBox = Entry(Point(3,4),5)

getAnchor() 返回输入框居中点的克隆
centerPoint = inputBox.getAnchor()

getText() 返回当前在输入框中的文本字符串
inputStr = inputBox.getText()

setText(string) 将输入框中的文本设置为给定字符串
inputBox.setText("32.0")

setFace(family) 将字体更改为给定的系列。可能的值是“helvetica”、“courier”、“times roman”和“arial”
inputBox.setFace("courier")

setSize(point) 将字体更改为给定的点大小。从5点到36点是合法的。
inputBox.setSize(12)

setStyle(style) 将字体更改为给定的样式。可能的值有“normal”、“bold”、“italic”、“bold italic”
inputBox.setStyle("italic")

setTextColor(color) 设置文本的颜色
inputBox.setTextColor("green")

  1. 显示图像2
    显示是使用Image对象完成的。图像支持通用方法move(dx,dy)、draw(graphwin)、undraw()和clone()。

Image特有的方法如下:

Image(anchorPoint,filename) 利用给定文件的内容构造图像,以给定锚点为中心。也可以使用width和height参数而不是filename来调用。在这种情况下,将创建给定宽度和高度(以像素为单位)的空白(透明)图像。
flowerImage = Image(Point(100,100),"flower.gif")
blankImage = Image(320,240)

getAnchor() 返回图像居中点的克隆
centerPoint = flowerImage.getAnchor()

getWidth() 返回图像的宽度
widthInPixels = flowerImage.getWidth()

getHeighh() 返回图像的高度
heighInPixels = flowerImage.getHeight()

getPixel(x,y) 返回位置(x,y)处的像素的RGB值的列表[红,绿,蓝]。注意,像素位置是相对于图像本身的,而不是绘制图像的窗口。图像的左上角始终是像素(0,0)。
red,green,blue = flowerImage.getPixel(32,18)

setPixel(x,y,color) 将位置(x,y)处的像素设置为给定颜色。 注意:这是一个缓慢的操作。
flowerImage.setPixel(32,18,"blue")

save(filename) 将图像保存为文件。所得文件类型(如GIF或PPM)由文件名的扩展名确定
flowerImagae.save("mypic.ppm")

  1. 生成颜色
    颜色由字符串表示。
    最常见的颜色,如“red”、“pruple”、“green”、“cyan”等,应该直接可用。许多颜色具有各种色调,例如“red1”、“red2”、“red3”、“red4”,这是越来越暗的红色。关于完整列表,可在网络上查找X11颜色名称3
    color_rgb(red,green,blue) 返回一个表示颜色的字符串,该颜色是指定的红色、绿色和蓝色的强度的混合。它们应该是在0-255范围内的int。因此,color_rgb(255,0,0)是亮红色,而(130,0,130)是中等品红色。
    aCircle.setFill(color rgb(130,0,130))

控制显示更新(高级)
通常,每当任何图形对象的可见状态以某种方式改变时,GraphWin的可视显示就会更新。然而,在某种情况下,例如在一些交互式shell中使用graphics库时,可能需要强制窗口更新以便看到改变。update() 函数用于执行此操作

update() 导致所有挂起的图形操作得到执行,并显示结果

出于效率的原因,有时期望关闭每当一个对象改变时窗口所进行的自动更新。例如,在动画中,你可能需要在显示动画的下一“帧”之前更改多个对象的外观。GraphWin构造函数包括了一个名为autoflush 的特殊额外参数,用于控制这种自动更新。默认情况下,创建窗口时,自动更新将打开。要关闭它,autoflush参数应该设置为False,像这样:

win = GraphWin("My Animation",400,400,autoflush = False)

现在对win中对象的更改只会在图形系统由一些空闲时间通过调用update()强制更改时显示。

update()方法还接受一个可选参数,指定可以进行更新的最大速率(每秒)。这对于以独立于硬件的方式控制动画的速度是有用的。例如,将命令update(30)放置在循环的底部,确保循环将每秒“回转”最多30次。update命令将每次插入一个适当的暂停,以保持相对恒定的速率。当然,只在循环本身的执行少于1/30秒时,速率调节才起作用。

示例: 1000帧, 每秒30帧

win = GraphWin("Update Example", 320,200, autofulsh = False)
for i in range(1000):
#
update(30)

给模块提供了类Point、Line、Circle、Oval、Rectangle、Polygon、Text 的可绘制对象。最初创建的所有对象都有未填充的黑色轮廓。所有图形对象都支持以下的通用的方法集。graphics模块还提供了在GraphWin中显示和操作图像的最小支持。大多数平台至少支持PPM和GIF图像。 ↩︎

对象参考

GraphWin对象常用方法

方法名称 方法含义
plot(x, y, color) 在窗口中(x,y)位置绘制像素。 颜色参数可选, 默认值为黑色。
plotPixel(x, y, Color) 在 “原 始 ” 位 置 (x,y)处 绘 制 像 素 , 忽 略setCoords()方法设置的坐标变换。
setBackground(color) 将窗口背景颜色设为指定颜色, 默认值为灰色。
close() 关闭屏幕上的窗口。
getMouse() 程序等待用户在窗口内点击鼠标, 返回值为点击处的位置, 并以Point对象返回。
setCoords(xll, yll, xur,yur) 设置窗口的坐标系。 左下是(xll,yll), 右上角是(xur,yur)。 所有后面的绘制都以这个坐标系做参照(plotPexil除外)

图形对象通用方法

方法名称 方法含义
setFill(color) 设置对象内部填充颜色。
setOutline(color) 设置对象边框颜色。
setWidth(pixels) 设置对象的宽度(对Point类不起用)。
draw(aGraphWin) 在指定的窗口中绘制对象。
undraw() 从窗口中删除该对象。如该对象没有在窗口中画出将会报错。
move(dx,dy) 将对象沿x轴和y轴分别移动dx和dy单位长度。
clone() 返回该对象的副本。

Point对象方法

方法名称 方法含义
Point(x,y) 以指定坐标的值(x, y)构造一点
getX() 返回该点的x坐标值
getY() 返回该点的y

Line对象方法

方法名称 方法含义
Line(point1, point2) 构造一个从点point1到点point2的线段
setArrow(string) 设置线段的箭头样式。箭头可以绘制在左端,右端,或者两端都有string参
数值为’first’, ’last’, ’both’,或’none’默
认值为’none’。
getCenter() 返回线段中点的坐标值。
getP1(), getP2() 返回线段相应端点的坐标值。

Circle对象方法:

方法名称 方法含义
Circle(centerPoint,radius) 根据给定圆心和半径构建圆
getCenter() 返回圆心的值
getRadius() 返回圆的半径长度
getP1(), getP2() 返回值为该圆边框对应点, 对应点指的是该圆外接正方形的对角点。

Rectangle对象方法

方法名称 方法含义
Rectangle(point1, point2) 以point1和point2为对角点创建一个矩形。
getCenter() 返回矩形的中心点的克隆值。
getP1(), getP2() 返回构造矩形的对角点的克隆

Oval对象方法

方法名称 方法含义
Oval(point1, point2) 在点point1和point2指定的边界框中创建一个椭圆。
getCenter() 返回椭圆的中心点的坐标值
getP1(), getP2() 返回构造椭圆的对角点的坐标值

Polygon 对象方法

方法名称 方法含义
Polygon(point1, point2,point3, ...) 根据给定的顶点构造一个多边形。 也可以只用一个顶点列表作为参数
getPoints() 返回构造多边形的顶点值的列表

Text 对象方法

GraphWin对象常用方法

方法名称 方法含义
plot(x, y, color) 在窗口中(x,y)位置绘制像素。 颜色参数可选, 默认值为黑色。
plotPixel(x, y, Color) 在 “原 始 ” 位 置 (x,y)处 绘 制 像 素 , 忽 略setCoords()方法设置的坐标变换。
setBackground(color) 将窗口背景颜色设为指定颜色, 默认值为灰色。
close() 关闭屏幕上的窗口。
getMouse() 程序等待用户在窗口内点击鼠标, 返回值为点击处的位置, 并以Point对象返回。
setCoords(xll, yll, xur,yur) 设置窗口的坐标系。 左下是(xll,yll), 右上角是(xur,yur)。 所有后面的绘制都以这个坐标系做参照(plotPexil除外)

图形对象通用方法
方法名称 方法含义
setFill(color) 设置对象内部填充颜色。
setOutline(color) 设置对象边框颜色。
setWidth(pixels) 设置对象的宽度(对Point类不起用)。
draw(aGraphWin) 在指定的窗口中绘制对象。
undraw() 从窗口中删除该对象。如该对象没有在窗口中画出将会报错。
move(dx,dy) 将对象沿x轴和y轴分别移动dx和dy单位长度。
clone() 返回该对象的副本。

Point对象方法
方法名称 方法含义
Point(x,y) 以指定坐标的值(x, y)构造一点
getX() 返回该点的x坐标值
getY() 返回该点的y

Line对象方法
方法名称 方法含义
Line(point1, point2) 构造一个从点point1到点point2的线段
setArrow(string) 设置线段的箭头样式。箭头可以绘制在左端,右端,或者两端都有string参
数值为’first’, ’last’, ’both’,或’none’默
认值为’none’。
getCenter() 返回线段中点的坐标值。
getP1(), getP2() 返回线段相应端点的坐标值。

Circle对象方法:
方法名称 方法含义
Circle(centerPoint,radius) 根据给定圆心和半径构建圆
getCenter() 返回圆心的值
getRadius() 返回圆的半径长度
getP1(), getP2() 返回值为该圆边框对应点, 对应点指的是该圆外接正方形的对角点。

Rectangle对象方法
方法名称 方法含义
Rectangle(point1, point2) 以point1和point2为对角点创建一个矩形。
getCenter() 返回矩形的中心点的克隆值。
getP1(), getP2() 返回构造矩形的对角点的克隆

Oval对象方法
方法名称 方法含义
Oval(point1, point2) 在点point1和point2指定的边界框中创建一个椭圆。
getCenter() 返回椭圆的中心点的坐标值
getP1(), getP2() 返回构造椭圆的对角点的坐标值

Polygon 对象方法
方法名称 方法含义
Polygon(point1, point2,point3, ...) 根据给定的顶点构造一个多边形。 也可以只用一个顶点列表作为参数
getPoints() 返回构造多边形的顶点值的列表

Text 对象方法

方法名称 方法含义
Text(anchorPoint, string) 以anchorPoint点的位置为中心, 构建了一个内容为string的文本对象。
setText(string) 设置文本对象的内容
getText() 返回当前文本内容。
getAnchor() 返回文本显示中间位置点anchor的坐标值。
setFace(family) 设置文本字体。 family可选值为:’helvetica’,’courier’, ’times
roman’, 以及 ’arial’.
setSize(point) 设置字体大小为给定点point的大小。 合法数值为5-36。
setStyle(style) 设置字体的风格。 可选值为’normal’, ’bold’, ’italic’,以及’bold italic’。
setTextColor(color)
设置文本颜色。 与setFill效果相同。

color_rgb(red,green,blue)函数
 设定颜色数值获得颜色
 三个参数为0-255范围内的整数
 返回一个字符串
color_rgb(255,0,0) 亮红色,
color_rgb(130,0,130) 中度洋红色。

GrapgWin 对象表示屏幕上可绘制图像图像的窗口

方法 参考
GraphWin(title="Grapthics Window", width=200, height=200, autoflush=True) 构造一个新的图形窗口, autoflush 用于自动刷新画面
plot(x, y, color="black") 在窗口中 (x,y) 处绘制一个 color 色彩的像素
plotPixel(x, y, color="black") 在原始位置 (x,y) 处绘制像素,忽略 setCoords() 设置的任何坐标变换
setBackground(color) 设置窗口背景色
close() 关闭屏幕
getMouse() 暂停等待用户在窗口中点击鼠标,并用 Point 对象返回鼠标单击的位置
checkMouse() 与 getMouse() 类似,但不会暂停等待用户单击返回鼠标点击的最后一个点,如果上次调用 checkMouse() 或 getMouse() 后未点击窗口,则返回None
setCoords(x1, y1, x2, y2) 设置窗口的坐标系,从左下角 (x1,y1) 到右上角 (x2,y2)
GraphicsObject 是所有可绘制对象的基类
| | | |

方法 参考
setFill(color) 设置填充颜色
setOutline(color) 设置轮廓颜色
setWidth(width) 设置轮廓宽度 (像素)
draw(graphwin) 将对象绘制到指定窗口
undraw() 擦除对象
move(dx, dy) 在 x 轴上移动 dx 单位, 在 y 轴上移动 dy 单位,如果对象当前已绘制,则将图像重新调整到新位置
clone() 返回对象的副本
GraphicsObject 子类- GraphicsObject 是所有可绘制对象的基类
对象 描述 方法 参考
Point 表示点 Point(x, y) 创建点对象
getX() 返回点的 X 坐标
getY() 返回点的 Y 坐标
Line 表示线段 Line(p1, p2) 构造从 p1 到 p2 的线段
setArrow(option) 设置线段的箭头状态, option in ["first","last","both","none"]
getCenter() 返回圆心的克隆
getP1() 返回内切圆外正方形左下角顶点的克隆
getP2() 返回内切圆外正方形右上角顶点的克隆
Circle 表示圆 Circle(center, radius) 构造以 center 为圆心,半径为 radius 的圆
getCenter() 返回圆心的克隆
getRadius() 返回圆的半径
getP1() 返回内切圆外正方形左下角顶点的克隆
getP2() 返回内切圆外正方形右上角顶点的克隆
Rectangle 表示矩形 Rectangle(p1, p2) 构造一个对角点在 p1 和 p2 的矩形
getCenter() 返回矩形中心点的克隆
getP1() 返回 p1 对角点的克隆
getP2() 返回 p2 对角点的克隆
Oval 表示椭圆 Oval(p1, p2) 在由 p1 和 p2 确定的边界框中构造一个椭圆
getCenter() 返回椭圆型的中心点的克隆
getP1() 返回 p1 对角点的克隆
getP2() 返回 p2 对角点的克隆
Polygon 表示多边形 Polygon(*points) 构造一个以指定点为顶点的多边形 (可以接受列表)
getPoints() 返回顶点组成的列表
Text 表示文本 Text(p, text) 构造一个文本对象,显示以 p 点为中心的文本字符串,文本水平显示
setText(text) 设置文本
getText() 返回文本
getAnchor() 返回描点的克隆
setFace(face) 设置字体为指定的系列, face in ['helvetica','arial','courier','times roman']
setSize(size) 设置字体尺寸, 有效区间为[5,36]
setStyle(style) 设置字体样式, style in ['bold','normal','italic', 'bold italic']
setTextColor(color) 设置文本的颜色 (等价于 setFill())
Entry 表示文本输入框 Entry(p, width) 构造具有指定中心点和宽度的文本输入框
getAnchor() 返回输入框居中点的克隆
getText() 返回当前在输入框内的文本
setText(t) 设置文本框内的文本
setFace(face) 设置字体为指定的系列, face in ['helvetica','arial','courier','times roman']
setSize(size) 设置文本宽度
setStyle(style) 设置文本样式, style in ['bold','normal','italic', 'bold italic']
setTextColor(color) 设置文本颜色
Image 表示图像 Image(p, *pixmap) 构造一个以 p 点为中心的图像, *pixmap 接受文件路径或 width 和 height 创建一个透明图
getAnchor() 返回图像的中点的克隆
getWidth() 返回图像的跨度
getHeight() 返回图像的高度
getPixel(x,y) 返回位置 (x,y) 处的像素的RGB值 (像素位置相对于图像本身,左上角始终是 (0,0))
setPixel(x,y,color) 设置位置 (x,y) 处的像素为指定颜色
save(filename) 将图像保存为文件
其它模块
方法 参考
color_rgb(r,g,b) 用于产生RGB常量
update() 强制刷新画面
————————————————
版权声明:本文为CSDN博主「LUWic」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_45940395/article/details/111704989

代码范例

选五个点,画出五边形

from graphics import *

win = GraphWin("Investment Grownth", 640,480)
message=Text(Point(150,50),"click on five points")
message.draw(win)


p1=win.getMouse()#等待鼠标点击
p1.draw(win)
p2=win.getMouse()
p2.draw(win)
p3=win.getMouse()
p3.draw(win)
p4=win.getMouse()
p4.draw(win)
p5=win.getMouse()
p5.draw(win)
#绘制多边形
polyon=Polygon(p1,p2,p3,p4,p5)
polyon.setOutline("green")
polyon.setFill("yellow")
polyon.draw(win)
#等待鼠标响应,退出程序
message.setText("Click anywhere to quit")

win.getMouse()
#close() 关闭屏幕窗口
win.close()

求和实例

# -*- coding: utf-8 -*-
from math import *
from turtle import *
from graphics import *
 
 
def main():
    win=GraphWin("Calculate the sum of two numbers",300,300)
    Text(Point(100,50),"数1:").draw(win)
    input1=Entry(Point(150,50),5)
    input1.setText(0.0)
    input1.draw(win)
    Text(Point(100, 100), "数2:").draw(win)
    input2=Entry(Point(150,100),5)
    input2.setText(0.0)
    input2.draw(win)
    Text(Point(80, 150), "两数之和:").draw(win)
    input3 = Entry(Point(150, 150), 5)
    input3.draw(win)
    #点击屏幕求和,求和运算必须是点击鼠标之后,否则参加计算的是默认值
    win.getMouse()
    sum = eval(input1.getText()) + eval(input2.getText())
    input3.setText(sum)
    win.getMouse()
    win.close()
 
 
main()

posted on 2022-10-11 09:39  chengjon  阅读(829)  评论(0编辑  收藏  举报