Python画图小案例之多啦A梦叮当猫超详细注释

一步步教你怎么用Python画多啦A梦叮当猫,进一步熟悉Python的基础画图操作。

分析:叮当猫由头、脸、眼、眼珠、鼻子、嘴、胡子、项带、铃当、身子、围嘴、手臂、手、脚组成。 其中:头、脸、眼、眼珠、鼻子、嘴、胡子组成一个部件;其余元件组成一个部件。废话不多说,上代码。

希望您给个关注给个赞,也算对我们的支持了。

import math
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *

class Shape:     # 图形基类(叮当猫各部件(形状)共有的属性)
    def __init__(self, qp, QRect, QColor=QColor("#07bbee")):     # 构造方法参数:形状,位置坐标,颜色, color="#07bbee"
        self.qp = qp                  #qpainter()的实例
        self.rect = QRect             # 坐标(x1, y1, x2, y2)
        self.color = QColor               #颜色
        self.qp.setPen(QPen(Qt.black, 3))  #边线

class Liner:     #直线类
    def __init__(self, qp, QRect):
        self.qp = qp
        self.rect = QRect
        self.width = 1

class Arc:    #弧线类
    def __init__(self, qp, QRect, startAngle, spanAngle):
        self.qp = qp
        self.rect = QRect
        self.startAngle = startAngle
        self.spanAngle = spanAngle

class eyeball(Shape):    #眼珠
    def draw(self):
        self.qp.setBrush(self.color)       #设置画刷
        self.qp.drawEllipse(self.rect)       #画圆形x,y,w,h  120, 25, 160, 160

class mouth(Arc):
    def draw(self):
        self.qp.drawArc(self.rect,self.startAngle,self.spanAngle)  #后面两个参数分别为 起始角与跨度角

class beard(Liner):    #中央竖线
    def draw(self):
        self.qp.drawLine(self.rect)

class Beards:         #胡须组合
    def __init__(self, qp, start_point):        # w,h 宽、高
        self.qp = qp                            #
        self.start_point = start_point          #起始坐标

        self.bd0 = beard(self.qp, self.bd0_cacu())
        self.bd1 = beard(self.qp, self.bd1_cacu())
        self.bd2 = beard(self.qp, self.bd2_cacu())
        self.bd00 = beard(self.qp, self.bd00_cacu())
        self.bd11 = beard(self.qp, self.bd11_cacu())
        self.bd22 = beard(self.qp, self.bd22_cacu())

    def draw(self):                # 绘制
        self.bd1.draw()
        self.bd0.draw()
        self.bd2.draw()
        self.bd11.draw()
        self.bd00.draw()
        self.bd22.draw()

    def bd0_cacu(self):             # 计算胡须的坐标
        x1 = self.start_point[0] - 40
        y1 = self.start_point[1] - 5
        x2 = x1 - 58
        y2 = y1 - 20
        return QLineF(x1, y1, x2, y2)

    def bd1_cacu(self):             # 计算中间胡须的坐标
        x1 = self.start_point[0] - 40
        y1 = self.start_point[1] + 5
        x2 = x1 -65
        y2 = y1
        return QLineF(x1, y1, x2, y2)

    def bd2_cacu(self):             # 计算胡须的坐标
        x1 = self.start_point[0] - 40
        y1 = self.start_point[1] + 15
        x2 = x1 -58
        y2 = y1 + 20
        return QLineF(x1, y1, x2, y2)

    def bd00_cacu(self):             # 计算胡须的坐标
        x1 = self.start_point[0] + 40
        y1 = self.start_point[1] - 5
        x2 = x1 + 58
        y2 = y1 - 20
        return QLineF(x1, y1, x2, y2)

    def bd11_cacu(self):             # 计算胡须的坐标
        x1 = self.start_point[0] + 40
        y1 = self.start_point[1] + 5
        x2 = x1 + 65
        y2 = y1
        return QLineF(x1, y1, x2, y2)

    def bd22_cacu(self):             # 计算胡须的坐标
        x1 = self.start_point[0] + 40
        y1 = self.start_point[1] + 15
        x2 = x1 + 58
        y2 = y1 + 20
        return QLineF(x1, y1, x2, y2)

class head(Shape):   # 头
    def draw(self):
        ##实例:x1,y1,x2,y2,即渐变的起始点和终止点
        linearGradient = QLinearGradient(420, 0, 100, 280)
        #线性渐变色的效果,以整个图形区间为100%,
        #分成多段设置颜色,各颜色按百分比分配。
        linearGradient.setColorAt(0.1, Qt.white)   #10%处白色
        linearGradient.setColorAt(0.2, self.color)   #60%处绿色 #07bbee
        linearGradient.setColorAt(0.8, self.color)   #60%处绿色 #07bbee
        linearGradient.setColorAt(1.0, Qt.black)       #100%处黑色
        self.qp.setBrush(linearGradient)       #设置画刷
        # self.qp.setBrush(self.color)
        # qp.drawRoundedRect(120, 25, 160, 160, 40, 40, Qt.RelativeSize)  #画圆角矩形x1,y1,x2,y2,圆角的角度
        self.qp.drawEllipse(self.rect)       #画圆形x,y,w,h  120, 25, 160, 160

class nose(Shape):    #鼻子
    def draw(self):
        RadialGradient = QRadialGradient(265, 144, 6, 265, 144)  #辐射渐变
        #参数分别为中心坐标,半径长度和焦点坐标,
        #如果需要对称那么中心坐标和焦点坐标要一致  #c93300
        #辐射渐变色的效果,以整个图形区间为100%,
        #分成多段设置颜色,各颜色按百分比分配。
        RadialGradient.setColorAt(0.0, Qt.white)   #10%处白色
        RadialGradient.setColorAt(1.0, self.color)   #60%处绿色 #07bbee
        # RadialGradient.setColorAt(1.0, Qt.black)   #100%处黑色
        self.qp.setPen(QPen(Qt.black, 2))            #边线
        self.qp.setBrush(RadialGradient)       #设置画刷
        self.qp.drawRoundedRect(self.rect, 80, 80, Qt.RelativeSize)  #画圆角矩形x,y,w,h,圆角的角度

class face(Shape):
    def draw(self):
        self.qp.setPen(Qt.NoPen)           #无边线
        self.qp.setBrush(self.color)       #设置画刷
        self.qp.drawEllipse(self.rect)     #画圆形x,y,w,h  120, 25, 160, 160

class eye(Shape):    #眼框
    def draw(self):
        self.qp.setBrush(self.color)       #设置画刷
        self.qp.drawRoundedRect(self.rect, 90, 90, Qt.RelativeSize)  #画圆角矩形x1,y1,x2,y2,圆角的角度

class Heads:         # 头部整体(组合头、脸、眼、鼻、嘴、胡子)
    def __init__(self, qp, start_point,w, h):    # w,h是帽子的宽、高
        self.qp = qp                            #
        self.start_point = start_point          #起始坐标
        self.w = w
        self.h = h
        self.hd = head(self.qp, self.hd_cacu(), QColor('#07bbee'))      # 例化头
        self.fc = face(self.qp, self.fc_cacu(), Qt.white)      #脸
        self.nos = nose(self.qp, self.nos_cacu(), QColor("#c93300"))    #鼻子
        self.eye0 = eye(self.qp, self.ey0_cacu(), Qt.white)    # 实例化眼0
        self.eye1 = eye(self.qp, self.ey1_cacu(), Qt.white)    #眼1
        self.bds = Beards(self.qp, (260, 185))         #胡须组合的起始位置
        self.bd = beard(self.qp, self.bd_cacu())       #中央竖线
        self.mt = mouth(self.qp, self.mt_cacu(), 230 * 16, 80 * 16)  #弧线的起始角度, 弧线角度(角度*16)
        self.mt2 = mouth(self.qp, self.mt2_cacu(), 230 * 16, 80 * 16)  #弧线的起始角度, 弧线角度(角度*16)
        self.eb0 = eyeball(self.qp, self.eb0_cacu(), Qt.black)   #眼珠0
        self.eb1 = eyeball(self.qp, self.eb1_cacu(), Qt.black)   #眼珠1

    def draw(self):                # 绘制
        self.hd.draw()             #调用头方法绘制
        self.fc.draw()             # 调用脸方法绘制
        self.nos.draw()              # 调用底部方法绘制
        self.eye0.draw()
        self.eye1.draw()
        self.bds.draw()
        self.bd.draw()            #调用头方法绘制
        self.mt.draw()
        self.mt2.draw()
        self.eb0.draw()            #眼珠
        self.eb1.draw() 

    def eb0_cacu(self):             # 计算眼珠的坐标
        x = self.start_point[0] + self.w / 2 - 25
        y = self.start_point[1] + 70
        w = 12
        h = 12
        return QRect(x, y, w, h)

    def eb1_cacu(self):             # 计算眼珠的坐标
        x = self.start_point[0] + self.w / 2 + 15
        y = self.start_point[1] + 70
        w = 12
        h = 12
        return QRect(x, y, w, h)

    def bd_cacu(self):             # 计算中央竖线的坐标
        x1 = self.start_point[0] + self.w / 2
        y1 = self.start_point[1] + 135
        x2 = x1
        y2 = y1 + 95
        return QLineF(x1, y1, x2, y2)

    def mt_cacu(self):             # 计算嘴的坐标
        x = self.start_point[0] + 50
        y = self.start_point[1] + 45
        w = 220
        h = 186
        return QRect(x, y, w, h)

    def mt2_cacu(self):             # 计算嘴的坐标
        x = self.start_point[0] + 60
        y = self.start_point[1] + 49
        w = 200
        h = 185
        return QRect(x, y, w, h)

    def nos_cacu(self):             # 计算鼻子的坐标
        # r = self.h / 3 / 2
        x = self.start_point[0] + self.w /2 -15
        y = self.start_point[1] + 105
        w = 30
        h = 30
        return QRect(x, y, w, h)

    def hd_cacu(self):             # 计算头的坐标
        x = self.start_point[0]
        y = self.start_point[1]
        w = self.w
        h = self.h
        return QRect(x, y, w, h)

    def fc_cacu(self):             # 计算脸的坐标
        x = self.start_point[0] + 35
        y = self.start_point[1] + 65
        w = self.w - 65
        h = self.h - 100
        return QRect(x, y, w, h)

    def ey1_cacu(self):              # 计算眼1的坐标(圆角矩形)
        x = self.start_point[0] + self.w / 2
        y = self.start_point[1] + 40
        w = 70
        h = 80
        return QRect(x, y, w, h)

    def ey0_cacu(self):              # 计算眼0的坐标(圆角矩形)
        x = self.start_point[0] + self.w / 2 - 70
        y = self.start_point[1] + 40
        w = 70
        h = 80
        return QRect(x, y, w, h)

class collar(Shape):    #项圈
    def draw(self):
        linearGradient = QLinearGradient(140, 280, 140, 310)
        #参数分别为中心坐标,半径长度和焦点坐标,
        #如果需要对称那么中心坐标和焦点坐标要一致  #c93300
        #辐射渐变色的效果,以整个图形区间为100%,
        #分成多段设置颜色,各颜色按百分比分配。
        linearGradient.setColorAt(0.2, QColor("#c40"))     #10%处
        linearGradient.setColorAt(1.0, QColor("#800400"))   #
        # linearGradient.setColorAt(1.0, Qt.black)   #100%处黑色
        self.qp.setPen(QPen(Qt.black, 2))            #边线
        self.qp.setBrush(linearGradient)       #设置画刷
        self.qpp = QPainterPath()              #路径
        self.qpp.moveTo(self.rect[0] + self.rect[2], self.rect[1] + 20)
        self.qpp.arcTo(self.rect[0] + self.rect[2] - 10, self.rect[1] , 20.0, 20.0, 270.0, 180.0)  #(70, 30, R*2, R*2, 0, 180);(70,30)是起始位置,R是半径,270是起始角度,180是要画的角度
        self.qpp.lineTo(self.rect[0], self.rect[1])
        self.qpp.arcTo(self.rect[0]-10, self.rect[1], 20.0, 20.0, 90.0, 180.0)
        self.qpp.closeSubpath()
        self.qp.drawPath(self.qpp)

class bell(Shape):    #铃铛
    def draw(self):
        #参数分别为中心坐标,半径长度和焦点坐标,
        #如果需要对称那么中心坐标和焦点坐标要一致  #c93300
        RadialGradient = QRadialGradient(270, 308, 40, 260, 300)  #辐射渐变
        #辐射渐变色的效果,以整个图形区间为100%,
        #分成多段设置颜色,各颜色按百分比分配。
        RadialGradient.setColorAt(0.0, QColor("#f9f12a"))   #10%处白色
        RadialGradient.setColorAt(0.75, QColor("#e9e11a"))   #60%处绿色 #07bbee
        RadialGradient.setColorAt(1.0, QColor("#a9a100"))   #100%处黑色
        self.qp.setPen(QPen(Qt.black, 2))            #边线
        self.qp.setBrush(RadialGradient)       #设置画刷
        self.qp.drawRoundedRect(self.rect, 90, 90, Qt.RelativeSize)  #画圆角矩形x1,y1,x2,y2,圆角的角度

class body(Shape):    #身体
    def draw(self):
        self.qp.setPen(QPen(Qt.black, 2))           #边线
        self.qp.setBrush(self.color)       #设置画刷
        self.qpp = QPainterPath()     #路径
        self.qpp.moveTo(self.rect[0] + 228, self.rect[1] - 15)
        self.qpp.lineTo(self.rect[0] + 230 + 45, self.rect[1] + 25)
        self.qpp.lineTo(self.rect[0] + 230 + 20, self.rect[1] + 60)
        self.qpp.lineTo(self.rect[0] + 230  - 2, self.rect[1] + 40)
        self.qpp.lineTo(self.rect[0] + 230  - 2, self.rect[1] + 170)
        self.qpp.arcTo(self.rect[0] + 105,self.rect[1] + 170-10, 20, 20, 0, 180)   #中间半圆
        self.qpp.lineTo(self.rect[0] -2, self.rect[1] + 170)
        self.qpp.lineTo(self.rect[0] - 2, self.rect[1] + 40)
        self.qpp.lineTo(self.rect[0] - 20, self.rect[1] + 60)
        self.qpp.lineTo(self.rect[0] - 40, self.rect[1] + 25)
        self.qpp.lineTo(self.rect[0] + 2, self.rect[1] - 14)
        self.qpp.closeSubpath()
        self.qp.drawPath(self.qpp)

class foot(Shape):    #脚
    def draw(self):
        linearGradient = QLinearGradient(140, 280, 140, 310)
        linearGradient.setColorAt(0.2, QColor("#c40"))     #10%处
        linearGradient.setColorAt(1.0, QColor("#800400"))   #
        # linearGradient.setColorAt(1.0, Qt.black)   #100%处黑色
        self.qp.setPen(QPen(Qt.black, 2))            #边线
        # self.qp.setBrush(linearGradient)       #设置画刷
        self.qpp = QPainterPath()              #路径
        self.qpp.moveTo(self.rect[0] + self.rect[2] - 40, self.rect[1] + self.rect[3] - 2)
        self.qpp.arcTo(self.rect[0] + self.rect[2] - 40, self.rect[1] - 2 , 30.0, 30.0, 270.0, 180.0)  #(70, 30, R*2, R*2, 0, 180);(70,30)是起始位置,R是半径,270是起始角度,180是要画的角度
        self.qpp.lineTo(self.rect[0], self.rect[1]-2)
        self.qpp.arcTo(self.rect[0]-15, self.rect[1] - 3, 60.0, 40.0, 90.0, 125.0)
        # self.qpp.arcTo(self.rect[0]-20, self.rect[1] + 26, 20.0, 20.0, 90.0, 30.0)
        self.qpp.closeSubpath()
        self.qp.drawPath(self.qpp)

class hand(Shape):    #手
    def draw(self):
        self.qp.setBrush(self.color)       #设置画刷
        self.qp.drawEllipse(self.rect)     #画圆形x,y,w,h  120, 25, 160, 160

class chest(Shape):    #白色肚兜
    def draw(self):
        self.color = Qt.white
        self.qp.setPen(QPen(Qt.black, 2))           #边线
        self.qp.setBrush(self.color)       #设置画刷
        self.qpp = QPainterPath()     #路径
        self.qpp.moveTo(self.rect[0] + 30 , self.rect[1] + 20)
        self.qpp.arcTo(self.rect[0] , self.rect[1] , 170.0, 170.0, 130.0, 280.0)  #(70, 30, R*2, R*2, 0, 180);(70,30)是起始位置,R是半径,270是起始角度,180是要画的角度
        self.qpp.closeSubpath()
        self.qp.drawPath(self.qpp)

class half(Shape):    #口袋
    def draw(self):
        self.color = Qt.white
        self.qp.setPen(QPen(Qt.black, 2))           #边线
        self.qp.setBrush(self.color)       #设置画刷
        self.qpp = QPainterPath()     #路径
        self.qpp.moveTo(self.rect[0] , self.rect[1] + 10)
        self.qpp.arcTo(self.rect[0] , self.rect[1] - 55 , self.rect[2], self.rect[3], 180.0, 180.0)  #(70, 30, R*2, R*2, 0, 180);(70,30)是起始位置,R是半径,270是起始角度,180是要画的角度
        self.qpp.closeSubpath()
        self.qp.drawPath(self.qpp)

class bellc(Shape):    #铃铛中心
    def draw(self):
        self.qp.setBrush(self.color)       #设置画刷
        self.qp.drawEllipse(self.rect)       #画圆形x,y,w,h  120, 25, 160, 160

class bellv(Liner):    #铃铛竖线
    def draw(self):
        self.qp.drawLine(self.rect)

class bellh(Liner):    #横线
    # def __init__(self, qp, start_point, w, c=0):
    #     self.qp = qp                            #
    #     self.start_point = start_point          #起始坐标
    #     self.w = w
    #     self.c = c

    def draw(self):
        self.qp.drawLine(self.rect)

class Bells:                      # 铃铛组合
    def __init__(self, qp, start_point, w, h):    # w,h是铃铛的宽、高
        self.qp = qp                            #
        self.start_point = start_point          #起始坐标
        self.w = w
        self.h = h
        self.be = bell(self.qp, self.be_cacu(), QColor("#a9a100"))  #铃铛
        self.bec = bellc(self.qp, self.bec_cacu(),Qt.black)         #铃铛中心
        self.belv = bellv(self.qp, self.belv_cacu())      #铃铛竖线
        self.belh1 = bellh(self.qp, self.belh1_cacu())
        self.belh2 = bellh(self.qp, self.belh2_cacu()) 

    def draw(self):
        self.be.draw()
        self.bec.draw()
        self.belv.draw()
        self.belh1.draw()
        self.belh2.draw()

    def belh1_cacu(self):              # 计算铃铛横线的坐标
        x = self.start_point[0] + 2
        y = self.start_point[1] -3
        w = x + 36
        h = y
        return QLineF(x, y, w, h)

    def belh2_cacu(self):              # 计算铃铛横线的坐标
        x = self.start_point[0]
        y = self.start_point[1] + 2
        w = x + 40
        h = y
        return QLineF(x, y, w, h)

    def belv_cacu(self):              # 计算铃铛竖线的坐标
        x = self.start_point[0] + 20
        y = self.start_point[1] + 20
        w = x
        h = y + 8
        return QLineF(x, y, w, h)

    def bec_cacu(self):              # 计算铃铛的坐标(圆角矩形)
        x = self.start_point[0] + self.w /2 - 5
        y = self.start_point[1] + 8
        w = 10
        h = 10
        return QRect(x, y, w, h)

    def be_cacu(self):              # 计算铃铛的坐标(圆角矩形)
        x = self.start_point[0] + self.w /2 - 20
        y = self.start_point[1] - 12
        w = 40
        h = 40
        return QRect(x, y, w, h)

class Bodys:                      # 身体组合
    def __init__(self, qp, start_point, w, h):    # w,h是帽子的宽、高
        self.qp = qp                            #
        self.start_point = start_point          #起始坐标
        self.w = w
        self.h = h
        self.bod = body(self.qp, self.bod_cacu())        #实例化身体
        self.che = chest(self.qp, self.che_cacu())       #实例化白色肚兜
        self.ha = half(self.qp, self.ha_cacu())          #实例化口袋
        self.coll = collar(self.qp, self.col_cacu())     # 实例化项圈
        self.hnd0 = hand(self.qp, self.hnd0_cacu(), Qt.white)      #左手
        self.hnd1 = hand(self.qp, self.hnd1_cacu(), Qt.white)      #左手
        self.ft1 = foot(self.qp, self.ft1_cacu(), Qt.white)      #脚
        self.ft2 = foot(self.qp, self.ft2_cacu(), Qt.white)      #脚
        self.bels = Bells(self.qp, (240, 300), 40, 40)

    def draw(self):                # 绘制
        self.bod.draw()             #调用项圈方法绘制
        self.che.draw()
        self.ha.draw()
        self.coll.draw()
        self.hnd0.draw()
        self.hnd1.draw()
        self.ft1.draw()
        self.ft2.draw()
        self.bels.draw()

    def ft1_cacu(self):              # 计算脚的坐标
        x1 = self.start_point[0]
        y1 = self.start_point[1] + 170
        x2 = 120
        y2 = 30
        return (x1, y1, x2, y2)

    def ft2_cacu(self):              # 计算脚的坐标(圆角矩形)
        x1 = self.start_point[0] + 130
        y1 = self.start_point[1] + 170
        x2 = 120
        y2 = 30
        return (x1, y1, x2, y2)

    def hnd0_cacu(self):              # 计算手的坐标(圆角矩形)
        x = self.start_point[0] - 78
        y = self.start_point[1] + 25
        w = 60
        h = 60
        return QRect(x, y, w, h)

    def hnd1_cacu(self):              # 计算手的坐标(圆角矩形)
        x = self.start_point[0] + self.h + 20
        y = self.start_point[1] + 25
        w = 60
        h = 60
        return QRect(x, y, w, h)

    def ha_cacu(self):              # 计算口袋的坐标(圆角矩形)
        x = self.start_point[0] + 48
        y = self.start_point[1] + 40
        w = 130
        h = 130
        return (x, y, w, h)

    def che_cacu(self):              # 计算白色肚兜的坐标(圆角矩形)
        x = self.start_point[0] + 28
        y = self.start_point[1] - 30
        w = 170
        h = 170
        return (x, y, w, h)

    def col_cacu(self):              # 计算项圈的坐标(圆角矩形)
        x1 = self.start_point[0]
        y1 = self.start_point[1] - 20
        x2 = 230
        y2 = 20
        return (x1, y1, x2, y2)

    def bod_cacu(self):              # 计算身体的坐标
        x = self.start_point[0]
        y = self.start_point[1]
        w = 230
        h = 165
        return (x, y, w, h)

class Example(QWidget):
    def __init__(self, w, h):
        super().__init__()
        self.qp = QPainter()     # 画笔实例
        self.rect = QRect()
        self.color = QColor()
        self.start_point = (100,30)   #头部的起始位置
        self.w = w
        self.h = h
        self.initUI()
        self.heads = Heads(self.qp,self.start_point, 320, 300)  # w,h
        self.bo = Bodys(self.qp, (145,300), 230, 230)  #start_point,w,h

    def initUI(self):
        self.setGeometry(100, 300, self.w, self.h)  # 窗口在屏幕上的坐标和大小:x,y,w,h
        self.setWindowTitle('叮当猫')
        self.show()
        # rect = QRect(120, 25, 160, 160)
        # self.hd = head(self.qp, self.rect, self.color)

    def paintEvent(self, e):
        self.qp.begin(self)
        self.drawBrushes(self.qp)  #调用方法
        self.qp.end()

    def drawBrushes(self, qp):
        self.heads.draw()
        self.bo.draw()
        # brush.setStyle(Qt.Dense1Pattern)   #设置style
        # qp.setBrush(brush)                 #设置画刷
        # self.qp.drawEllipse(self.rect, self.color)       #画矩形x,y,w,h

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Example(520, 760)       #窗体大小
    sys.exit(app.exec_())

到此这篇关于Python画图小案例之多啦A梦叮当猫超详细注释的文章就介绍到这了,更多相关Python 多啦A梦内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python基础之画图神器matplotlib

    Python画图(线条颜色.大小.线形) 先放基础代码,下面讲述效果: import matplotlib.pyplot as plt import numpy as np list1=[1,2,6,4,5,6,2,4,4,5,7] list2=[2,3,5,8,12,1,3,4,6,2,4] plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签 plt.title('显示中文标题') plt.xlabel("横坐标") plt.

  • Python画图工具Matplotlib库常用命令简述

    目录 1. 简单例程柱状图 2. 读取exal方法 2.1  数据处理常用库:pandas 2.2 提取列表数组 3. 论文图片的类型和格式 4. 柱状图扩展 4.1 堆叠柱状图 4.2 分解柱状图 5. Python绘制折线图坐标无法显示负号 6.  Python坐标轴显示汉字 matplotlib官网 matplotlib库默认英文字体 添加黑体('SimHei')为绘图字体 代码: plt.rcParams['font.sans-serif']=['SimHei'] 1. 简单例程柱状图

  • Python中matplotlib如何改变画图的字体

    事情是这样的:平时我汇报或者写论文需要画图,都会喜欢用Python的 matplotlib 和 seaborn 把数据

  • python绘图模块之利用turtle画图

    模块之turtle 小故事 前两天朋友说:"常文啊!听说你会python,那能不能用python画一些好看的图呢?"然后我特意去学了一下turtle模块,现在给大家分享一下. 一.什么是turtle Turtle是python内嵌的绘制线.圆以及其他形状(包括文本)的图形模块. 二.turtle函数的使用 import turtle turtle.pendown() # 放下画笔 turtle.penup() # 抬起画笔 turtle.pensize(int) # 设置画笔宽度,值为

  • Python超简单容易上手的画图工具库推荐

    今天,在网上发现一款很棒的python画图工具库.很简单的api调用就能生成漂亮的图表.并且可以进行一些互动. pyecharts 是一个用于生成 Echarts 图表的类库.Echarts 是百度开源的一个数据可视化 JS 库.用 Echarts 生成的图可视化效果非常棒.废话不多说下来直接看效果(对于我这种没审美感的人来是我觉得挺漂亮的). 使用之前需要安装一下:安装命令很简单:Pip就可以安装: 这里我安装在我的虚拟环境中了:pip install pyecharts . 官方的文档和de

  • Python画图小案例之多啦A梦叮当猫超详细注释

    一步步教你怎么用Python画多啦A梦叮当猫,进一步熟悉Python的基础画图操作. 分析:叮当猫由头.脸.眼.眼珠.鼻子.嘴.胡子.项带.铃当.身子.围嘴.手臂.手.脚组成. 其中:头.脸.眼.眼珠.鼻子.嘴.胡子组成一个部件:其余元件组成一个部件.废话不多说,上代码. 希望您给个关注给个赞,也算对我们的支持了. import math import sys from PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5.QtWi

  • Python画图小案例之小雪人超详细源码注释

    一步步教你怎么用Python画雪人,进一步熟悉Python的基础画图操作,废话不多说,上代码. 希望您给个关注给个赞,也算对我们的支持了. class Shape: # 基类(雪人各部件(形状)共有的属性) def __init__(self, cvns, points, fill): # 构造方法 画布 位置坐标 颜色 self.cvns = cvns # 画布 self.points = points # 坐标(x1, y1, x2, y2) self.fill = fill self.pi

  • Python画图练习案例分享

    目录 话不多说,直接上源码: # 多边形的绘制案例 import turtle def main(): turtle.color("green") # steps代表多边形的绘制 turtle.circle(50,steps=6) turtle.exitonclick() if __name__ == "__main__": main() # 太阳花案例*********************************************************

  • Python7个爬虫小案例详解(附源码)中篇

    目录 前言 题目三: 分别使用XPath和Beautiful Soup4两种方式爬取并保存非异步加载的“豆瓣某排行榜”如https://movie.douban.com/top250的名称.描述.评分和评价人数等数据 题目四: 实现某东商城某商品评论数据的爬取(评论数据不少于100条,包括评论内容.时间和评分) 本次的7个python爬虫小案例涉及到了re正则.xpath.beautiful soup.selenium等知识点,非常适合刚入门python爬虫的小伙伴参考学习. 前言 关于Pyth

  • Python7个爬虫小案例详解(附源码)上篇

    目录 前言 题目一: 使用正则表达式和文件操作爬取并保存“百度贴吧”某帖子全部内容(该帖不少于5页) 题目二: 实现多线程爬虫爬取某小说部分章节内容并以数据库存储(不少于10个章节) 本次的7个python爬虫小案例涉及到了re正则.xpath.beautiful soup.selenium等知识点,非常适合刚入门python爬虫的小伙伴参考学习. 前言 关于Python7个爬虫小案例的文章分为三篇,本篇为上篇,共两题,其余两篇内容请关注! 题目一: 使用正则表达式和文件操作爬取并保存“百度贴吧

  • Python实战小程序利用matplotlib模块画图代码分享

    Python中的数据可视化 matplotlib 是python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地进行制图.而且也可以方便地将它作为绘图控件. 实战小程序:画出y=x^3的散点图 样例代码如下: #coding=utf-8 import pylab as y #引入pylab模块 x = y.np.linspace(-10, 10, 100) #设置x横坐标范围和点数 y.plot(x, x*x*x,'or') #生成图像 ax = y.gca() a

  • python画图--输出指定像素点的颜色值方法

    如下所示: # -*- coding: utf-8 -*- #------------------------------------------------------------------------------- # Name: module1 # Purpose: # # Author: leniy_tsan # # Created: 10-04-2012 # Copyright: (c) leniy_tsan 2012 # Licence: GPL v2 #-------------

  • Python画图实现同一结点多个柱状图的示例

    如下所示: import numpy as np x = [1,2] #横坐标 y = [3,4] #第一个纵坐标 y1 = [5,6] #第二个纵坐标 x = np.arange(len(x)) #首先用第一个的长度作为横坐标 width = 0.05 #设置柱与柱之间的宽度 fig,ax = plt.subplots() ax.bar(x,y,width,alpha = 0.9) ax.bar(x+width,y1,width,alpha = 0.9,color= 'red') ax.set

  • python画图把时间作为横坐标的方法

    1.需要将时间字符串转换成datetime类型,语法:data['time'] = pd.to_datetime(data['time']) 2.将时间列设置成索引列data.set_index('time') 3.画图分两种 (1) matplotlib.pyplot方式 打印某一列数据,直接data['some_columns'].plot(),会自动将时间作为横坐标 (2) pycharts方式 from pyecharts import Bar bar = Bar("数据分析"

  • python画图——实现在图上标注上具体数值的方法

    比如当前的表格数据是 df['resultRate'].plot(style='-.bo') plt.grid(axis='y') #设置数字标签** for a,b in zip(df['num'],df['resultRate']): plt.text(a, b+0.001, '%.4f' % b, ha='center', va= 'bottom',fontsize=9) plt.show() 结果如图 以上这篇python画图--实现在图上标注上具体数值的方法就是小编分享给大家的全部内容

随机推荐