Python学习笔记_day08

一、数据可视化

    数据可视化指的是通过可视化表示来探索数据。

    数据挖掘指的是使用代码来探索数据集的规律和关联。

二、安装matplotlib

    具体的安装方法参照百度。

三、绘制简单的折线图

import matplotlib.pyplot as plt

squares=[1,4,9,16,25]
plt.plot(squares)
plt.show()

    首先将matplotlib中的pyplot模块导入,pyplot模块中的plot()函数接收一个列表参数,并尝试将其绘制成有意义的折线图,然后通过pyplot模块中的show()函数将matplotlib的查看器打开,这样plot()函数绘制的折线图就在查看器中显示出来了。

四、修改标签文字和线条粗细

import matplotlib.pyplot as plt

squares=[1,4,9,16,25]
plt.plot(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()

    导入的pyplot模块就相当于一个查看器,而图是显示在查看器上的,所以对于图的设置,只需要直接来操作pyplot模块中的函数即可。其中title()函数时用来设置查看器的标题,xlabel()和ylabel()是用来设置x和y轴的标签的,tick_params()是用来设置坐标轴上刻度的,其形参axis表示指定的实参将影响多少个坐标轴上的刻度。

五、校正图形

    当向plot()函数提供一系列的数据时,其默认第一个数据对应的x坐标点为0,而我们上面的第一个数据是1,却被默认为了0,所以上面绘出的图形不正确。为避免这种情况,我们可以给plot()函数既提供输入值又提供输出值,例如:

扫描二维码关注公众号,回复: 1462668 查看本文章
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()
    这样plot()就会建立起这些数据之间的真实对应关系。

六、绘制单个点

import matplotlib.pyplot as plt

plt.scatter(2,4,s=200)
plt.show()

    函数scatter()会在指定坐标(2,4)处绘制一个单点。其中s=200表示绘制的单点的大小。

七、绘制一系列的点

import matplotlib.pyplot as plt

x_values = [1, 2, 3, 4, 5]
y_values = [1, 4, 9, 16, 25]  
plt.scatter(x_values, y_values, s=100)
plt.show()

    其中scatter()函数会依次从每个列表中读取一个值组成坐标来绘制一个单点,以上代码一共绘制了5个单点。

八、生成数据来绘制图

import matplotlib.pyplot as plt

x=list(range(1,1001))
y=[m**2 for m in x]

plt.scatter(x,y,s=40)
plt.axis([0,1100,0,1100000])
plt.show()

    其中需要解释的就是axis()了,它指定了x和y轴刻度的起始范围。

九、删除单点的轮廓

    scatter()函数默认绘制的点是蓝色点和黑色轮廓,如果想要将轮廓删除,其实就是修改轮廓的颜色为无色,例如plt.scatter(x,y,edgecolor='none',s=40)。

十、修改绘制的点的颜色

    例如:plt.scatter(x,y,c=p,edgecolor='none',s=40)其中p可以是字符串,比如'red'等,还可以是元组,比如(0,0,0.8),其中各值越接近0则颜色越深,越接近1则颜色越浅。

十一、颜色映射

    颜色映射个人理解为就是根据数据值来设置对应的颜色,形成数据值与颜色的一一映射。在pyplot中内置了一组颜色映射。例如:

import matplotlib.pyplot as plt

x=list(range(1,1001))
y=[m**2 for m in x]

plt.scatter(x,y,c=y,cmap=plt.cm.Blues,edgecolor='none',s=40)
plt.axis([0,1100,0,1100000])
plt.show()

    其中给c指定值为y轴数据,y轴的数据是由小变大的,再指定cmap使用的是Blues颜色映射,这样就会让绘制出来的点中值小的颜色浅,值大的颜色深。

十二、自动保存图表

    要实现这个功能,需要注意是使用plt.savefig('hh',bbox_inches='tight')替换掉plt.show(),这样就会将图表保存为当前工作目录下的hh.png图片,并且第二个参数bbox_inches='tight'表示将图表多余的空白区域裁剪掉。

十三、随机漫步

    1.首先需要知道什么是随机漫步,随机漫步就是这样行走得到的路径:每次行走都完全是随机的,并没有明确的方向,而这样行走的结果是由一系列随机决策决定的。再简单地理解为随机漫步就是一只蚂蚁在晕头转向的情况下,每次都沿着随机的方向前行所经过的路径。这些解释完全是书本上的,不过通俗易懂,直接抄来了。

    2.我们首先创建一个RandomWalk类,来产生随机漫步后生成的一系列点的坐标(每走一步,就会到达一个新的点)。RandomWalk类如下:

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_diatance=choice([0,1,2,3,4])
            x_step=x_direction*x_diatance

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

            if x_step==0 and y_step==0:
                continue

            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)

    要生成随机的数字,首先需要导入random模块中的choice函数,这个函数接收一个列表,并随机选择列表中的一个元素作为返回值。既然是随机漫步,那么就需要知道下一步往哪个方向走多少距离,这样每一次就叫做一次决策,使用choice就实现了随机决策。每到达一个新点,就将该点的坐标存入列表。

十四、设置坐标轴不可见

    可以使用

plt.axes().get_xaxis().set_visible(False)
plt.axes().get_yaxis().set_visible(False)    

    来将坐标轴隐藏,其中axes表示坐标轴,axis就表示某一个坐标轴

十五、调整查看器的尺寸

    可以使用plt.figure(dpi=128, figsize=(10, 6)) 来调整查看器的大小,其中dpi表示屏幕的分辨率,可以省略。figsize是来设置查看器的大小的,它是一个元组。

十六、Pygal介绍

    使用Pygal可以用来绘制可以缩放的矢量图。这种图可以跟随不同的屏幕尺寸自动调整图的大小。

十七、安装Pygal

    在Windows中使用python -m pip install --user pygal来安装。

十八、使用pygal来绘制直方图

    1.我们来模拟一个六面的骰子投掷100次,记录下这100次中每一个面出现的频率,并将频率用直方图显示出来。首先需要建立一个die模块,里面包含有一个Die类,它用来获得模拟投骰子的结果。例如:

from random import randint

class Die():
    def __init__(self,num_sides=6):
        self.num_sides=num_sides

    def roll(self):
        return randint(1,self.num_sides)

    这段代码没有什么难点。

    2.接下来,我们在die_visual.py中来绘制直方图,例如:

import pygal

from die import Die

die=Die()

results=[]

for roll_num in range(100):
    result=die.roll()
    results.append(result)

frequencies=[]
for value in range(1,die.num_sides+1):
    frequency=results.count(value)
    frequencies.append(frequency)

hist=pygal.Bar()
hist.title='结果'
hist.x_labels=['1','2','3','4','5','6']
hist.x_title='Result'
hist.y_title='频率'

hist.add('D6',frequencies)
hist.render_to_file('die_visual.svg')
    这里新出现了一个方法results.count(p),这个方法会计算p在列表results中出现的次数。

猜你喜欢

转载自blog.csdn.net/qq_26593465/article/details/80568075