Python数据可视化

绘制简单的折线图

导入模块pyplot,指定别名plt,模块pyplot包含很多生成图表的函数

修改标签文字和线条粗细

参数linewidth决定了plot()绘制的线条的粗细。函数title()给图标指定标题。fontsize指定图标中文字的大小,xlabel()和ylabel()为每条轴设置标题;tick_params()设置刻度的样式,即x轴和y轴上的刻度,labelsize设置刻度标记的字号

矫正图形

同时给plot()输入值和输出值

import matplotlib.pyplot as plt

input_values = [1,2,3,4,5]
squares = [1,4,9,16,25]
plt.plot(input_values,squares,linewidth = 5)

#设置图标标题,并给坐标轴加上标签
plt.title("Square Numbers",fontsize = 24)
plt.xlabel("Value",fontsize = 14)
plt.ylabel("Square of Value",fontsize = 14)

#设置刻度标记的大小
plt.tick_params(axis='both',labelsize = 14)
plt.show()

image-20230104193255754

使用scatter()绘制散点图并设置其样式

实参s设置了绘制图形时使用的点的尺寸

使用scatter()绘制一系列点
import matplotlib.pyplot as plt

x_vlaues = [1,2,3,4,5]
y_vlaues = [1,4,9,16,25]
plt.scatter(x_vlaues,y_vlaues,s = 100)
#设置图标标题并给坐标轴加上标签
plt.title("Square Numbers",fontsize = 24)
plt.xlabel("Values",fontsize = 14)
plt.ylabel("Square of Value",fontsize = 14)

#设置刻度标记的大小
plt.tick_params(axis='both',which = 'major',labelsize = 14)
plt.show()

image-20230104194146907

自动计算数据

创建了一个包含x值的列表,包含数字1~1000.接下来生成y值的列表,遍历x计算平方值并将结果储存到列表y_vlaues中,axis()指定每个坐标轴的取决范围,axis()要求提供四个参数,x和y坐标轴的最小值和最大值

删除数据点地轮廓

matplotlib允许给图中各个点指定颜色,默认为蓝色点和黑色轮廓,要删除数据点地轮廓时,可使用参数edgecolor=’none‘

自定义颜色

修改数据点的颜色,可向scatter()传递参数c,还可以使用RGB颜色模式自定义颜色,传入参数c,设置为一个元组,其中包含三个0~1之间的小数值

import matplotlib.pyplot as plt

x_vlaues = list(range(1,1001))
y_vlaues = [x**2 for x in x_vlaues]
plt.scatter(x_vlaues,y_vlaues,c = 'red',edgecolors='none',s = 40)
#设置图标标题并给坐标轴加上标签
plt.title("Square Numbers",fontsize = 24)
plt.xlabel("Values",fontsize = 14)
plt.ylabel("Square of Value",fontsize = 14)

#设置刻度标记的大小
plt.tick_params(axis='both',which = 'major',labelsize = 14)

#设置每个坐标轴的取值范围
plt.axis([0,1100,0,1100000])
plt.show()

image-20230104195411902

使用颜色映射

颜色映射用于突出数据的规律,例如,用较浅的颜色显示较小的值,用较深的颜色显示较大的值,将参数c设置为一个y值列表使用参数cmap告诉pyplot使用哪种颜色映射

import matplotlib.pyplot as plt

x_vlaues = list(range(1,1001))
y_vlaues = [x**2 for x in x_vlaues]
plt.scatter(x_vlaues,y_vlaues,c = y_vlaues,cmap = plt.cm.Blues,edgecolors='none',s = 40)
#设置图标标题并给坐标轴加上标签
plt.title("Square Numbers",fontsize = 24)
plt.xlabel("Values",fontsize = 14)
plt.ylabel("Square of Value",fontsize = 14)

#设置刻度标记的大小
plt.tick_params(axis='both',which = 'major',labelsize = 14)

#设置每个坐标轴的取值范围
plt.axis([0,1100,0,1100000])
plt.show()

image-20230104195758154

自动保存图表

让程序自动将图表保存到文件中,将plt.show()替换成plt.savefig()

import matplotlib.pyplot as plt

x_vlaues = list(range(1,1001))
y_vlaues = [x**2 for x in x_vlaues]
plt.scatter(x_vlaues,y_vlaues,c = y_vlaues,cmap = plt.cm.Blues,edgecolors='none',s = 40)
#设置图标标题并给坐标轴加上标签
plt.title("Square Numbers",fontsize = 24)
plt.xlabel("Values",fontsize = 14)
plt.ylabel("Square of Value",fontsize = 14)

#设置刻度标记的大小
plt.tick_params(axis='both',which = 'major',labelsize = 14)

#设置每个坐标轴的取值范围
plt.axis([0,1100,0,1100000])
plt.savefig('squares_plot.png',bbox_inches = 'tight')

随机漫步

随机漫步是这样行走得到的路径:每次行走都是随机的,没有明确的方向,结果是由一系列随机决策来决定的。随机漫步就是蚂蚁在晕头转向的情况下,每次都沿随机的方向前行所经过的路径

创建RandomWalk()类

这个类需要三个属性,其中一个是存储随机漫步次数的变量,其他两个是列表,分别存储随机漫步经过的每个点的x和y坐标,为做出随机决策,将尽可能的选择都存储在一个列表中,在每次做决策时都使用choice()来决定使用哪种选择,将随机漫步的默认点数设置为5000,创建存储x和y的列表,让每次漫步都从(0,0)出发

选择方向
from random import choice

class RandomWalk():
    """一个生成随机漫步数据的类"""
    def __init__(self,num_points = 5000):
        """初始化随机漫步的属性"""
        self.num_points = num_points

        #所有随机漫步都始于(0,0)
        self.x_values = [0]
        self.y_values = [0]

    def fill_walk(self):
        """计算随机漫步包含的所有点"""

        #不断漫步,直到列表到达指定的长度
        while len(self.x_values) < self.num_points:

            #决定前进方向以及沿这个方向前进的距离
            x_direction = choice([1,-1])
            x_distance = choice([0,1,2,3,4])
            x_step = x_direction * x_distance

            y_direction = choice([1, -1])
            y_distance = choice([0, 1, 2, 3, 4])
            y_step = y_direction * y_distance

            #拒绝原地踏步
            if x_step == 0 and y_step == 0:
                continue

            #计算下一个点的x和y值
            next_x = self.x_values[-1] + x_step
            next_y = self.y_values[-1] + y_step

            self.x_values.append(next_x)
            self.y_values.append(next_y)

绘制随机漫步图

image-20230104202559149

设置随机漫步的样式
给点着色
import matplotlib.pyplot as plt

from random_walk import RandomWalk
#只要程序处于活动状态,就不断地模拟随机漫步
while True:
    #创建一个RandomWalk实例
    rw = RandomWalk()
    rw.fill_walk()
    point_numbers = list(range(rw.num_points))
    plt.scatter(rw.x_values,rw.y_values,c = point_numbers,cmap = plt.cm.Blues,edgecolors='none',s=15)
    plt.show()

    keep_running = input("Make another walk?(y/n):")
    if keep_running == 'n':
        break

image-20230104203547489

重新绘制起点和终点

让起点和终点更大并显示为不同的颜色

import matplotlib.pyplot as plt

from random_walk import RandomWalk
#只要程序处于活动状态,就不断地模拟随机漫步
while True:
    #创建一个RandomWalk实例
    rw = RandomWalk()
    rw.fill_walk()
    point_numbers = list(range(rw.num_points))
    plt.scatter(rw.x_values,rw.y_values,c = point_numbers,cmap = plt.cm.Blues,edgecolors='none',s=15)
    #突出起点和终点
    plt.scatter(0,0,c='green',edgecolors='none',s = 100)
    plt.scatter(rw.x_values[-1],rw.y_values[-1],c='red',edgecolors='none',s=100)
    plt.show()

    keep_running = input("Make another walk?(y/n):")
    if keep_running == 'n':
        break

image-20230104203940664

隐藏坐标轴
import matplotlib.pyplot as plt

from random_walk import RandomWalk
#只要程序处于活动状态,就不断地模拟随机漫步
while True:
    #创建一个RandomWalk实例
    rw = RandomWalk(50000)
    rw.fill_walk()
    #设置绘图窗口的尺寸
    plt.figure(dpi = 128,figsize=(10,6))
    point_numbers = list(range(rw.num_points))
    plt.scatter(rw.x_values,rw.y_values,c = point_numbers,cmap = plt.cm.Blues,edgecolors='none',s=1)
    #突出起点和终点
    plt.scatter(0,0,c='green',edgecolors='none',s = 100)
    plt.scatter(rw.x_values[-1],rw.y_values[-1],c='red',edgecolors='none',s=100)
    #隐藏坐标轴
    # plt.axes().get_xaxis().set_visible(False)
    # plt.axes().get_yaxis().set_visible(False)
    plt.show()

    keep_running = input("Make another walk?(y/n):")
    if keep_running == 'n':
        break

image-20230104204459889

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

计算机小混子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值