Python绘制高级图表(1):绘制条形统计图

2023-12-31 09:47:04

一、初始化

1. 引入库,设置画笔

from turtle import *
t = Turtle()
t.color("black")
t.width(3)

2. 为了美观,画出xy轴

(1) 普通型
from turtle import *
t = Turtle()
t.color("black")
t.width(3)

# 以画布为600 * 600为例
# 1. x轴
t.penup()
t.goto(-300, -300)
t.pendown()
# 1.1 画出直线
t.forward(600)
# 1.2 画出右半边箭头
t.right(150)
t.forward(20)
t.backward(20)
# 1.3 画出左半边箭头
t.left(300)
t.forward(20)
t.backward(20)
t.right(150)
# 1.4 退回xy轴交接点
t.backward(600)

# 2. y轴
t.left(90)
# 2.1 画出直线
t.forward(600)
# 2.2 画出右半边箭头
t.right(150)
t.forward(20)
t.backward(20)
# 2.3 画出左半边箭头
t.left(300)
t.forward(20)
t.backward(20)
t.right(150)
# 2.4 退回xy轴交接点
t.backward(600)
(2) 标准型
from turtle import *
t = Turtle()
t.color("black")
t.width(3)

# 以画布为600 * 600为例
# 1. x轴
t.penup()
t.goto(-350, -350)
t.pendown()
# 1.1 画出直线
t.forward(650)
# 1.2 画出右半边箭头
t.right(150)
t.forward(20)
t.backward(20)
# 1.3 画出左半边箭头
t.left(300)
t.forward(20)
t.backward(20)
t.right(150)
# 退回xy轴交接点
t.backward(600)

# 2. y轴
t.left(90)
t.backward(50)
# 2.1 画出直线
t.forward(650)
# 2.2 画出右半边箭头
t.right(150)
t.forward(20)
t.backward(20)
# 2.3 画出左半边箭头
t.left(300)
t.forward(20)
t.backward(20)
t.right(150)
# 退回xy轴交接点
t.backward(600)

3. 准备数据

data = [10, 20, 30]

二、尝试绘制一个柱子

1. 初步尝试

# 我们可以将其写进一个函数里
def draw(num):
    t.color("skyblue")
    t.fillcolor("skyblue")
    t.begin_fill()
    for i in range(2):
        t.forward(50)
        t.left(90)
        t.forward(150)
        t.left(90)
    t.end_fill()

# 调试函数
draw(data[0])

效果:
2.1 效果图

2. 所有数据的绘制

# 全代码展示
from turtle import *
t = Turtle()
t.color("black")
t.width(3)
t.speed(0)

# 我们可以将其写进一个函数里
def draw(num):
    t.color("skyblue")
    t.fillcolor("skyblue")
    t.penup()
    t.forward(20)
    t.pendown()
    t.begin_fill()
    for i in range(2):
        t.forward(50)
        t.left(90)
        t.forward(num * 10)
        t.left(90)
    t.end_fill()
    t.setheading(0)
    t.penup()
    t.forward(50)
    t.pendown()

# 以画布为600 * 600为例
# 1. x轴
t.penup()
t.goto(-350, -350)
t.pendown()
# 1.1 画出直线
t.forward(650)
# 1.2 画出右半边箭头
t.right(150)
t.forward(20)
t.backward(20)
# 1.3 画出左半边箭头
t.left(300)
t.forward(20)
t.backward(20)
t.right(150)
# 退回xy轴交接点
t.backward(600)

# 2. y轴
t.left(90)
t.backward(50)
# 2.1 画出直线
t.forward(650)
# 2.2 画出右半边箭头
t.right(150)
t.forward(20)
t.backward(20)
# 2.3 画出左半边箭头
t.left(300)
t.forward(20)
t.backward(20)
t.right(150)
# 退回xy轴交接点
t.backward(600)

data = [10, 20, 30, 40, 50, 60]
t.setheading(0)
# 调试函数
for i in data:
    draw(i)

三、最终代码

from turtle import *
t = Turtle()
t.color("black")
t.width(3)
t.speed(0)

# 我们可以将其写进一个函数里
def draw(num):
    t.color("skyblue")
    t.fillcolor("skyblue")
    t.penup()
    t.forward(20)
    t.pendown()
    t.begin_fill()
    for i in range(2):
        t.forward(50)
        t.left(90)
        t.forward(num * 10)
        t.left(90)
    t.end_fill()
    t.setheading(0)
    t.penup()
    t.forward(50)
    t.pendown()

# 以画布为600 * 600为例
# 1. x轴
t.penup()
t.goto(-350, -350)
t.pendown()
# 1.1 画出直线
t.forward(650)
# 1.2 画出右半边箭头
t.right(150)
t.forward(20)
t.backward(20)
# 1.3 画出左半边箭头
t.left(300)
t.forward(20)
t.backward(20)
t.right(150)
# 退回xy轴交接点
t.backward(600)

# 2. y轴
t.left(90)
t.backward(50)
# 2.1 画出直线
t.forward(650)
# 2.2 画出右半边箭头
t.right(150)
t.forward(20)
t.backward(20)
# 2.3 画出左半边箭头
t.left(300)
t.forward(20)
t.backward(20)
t.right(150)
# 退回xy轴交接点
t.backward(600)

data = [10, 20, 30, 40, 50, 60]
t.setheading(0)
# 调试函数
for i in data:
    draw(i)

效果:

文章来源:https://blog.csdn.net/joe_g12345/article/details/134041405
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。