目录

前言

一、matplotlib.pyplot的基本应用

二、使用步骤

1.引入库

2.如何应用(csdn手打可能有错)

总结





前言

总结一下这几天学习的数据可视化


一、matplotlib.pyplot的基本应用

python可以完成数据密集型工作,而且运算速度非常快。数据科学家们编写了一系列令人印象深刻的可视化和分析工具。这里我们主要用的是matplotlib工具,matplotllib是一个数学绘图库。我们可以用它来绘制直线图,散点图,随机漫步等等。

二、使用步骤

1.引入库

import matplotlib.pyplot as plt

2.如何应用(csdn手打可能有错)

1.

x_values=[1,2,3,4]
y_values=[1,4,9,16]
plt.plot(x_values,y_vallues,linewidth=10)#绘制折线,参数一是x轴的值,参数二是y轴的值

#设置折线图的格式
plt.title('平方折线图',fontsize=10)
plt.xlabel('数值',fontsize=10)
plt.ylabel('平方值',fontsize=10)

#设置刻度标记的大小
plt.tick_params(axis='both',labelsize=14)
 
plt.show()#将折线图显示

 这里的代码主要是绘制折线图,当然绘制散点图与上述代码类似

注意点:x_values,y_values可以是list,也可以是int,对应个数应当相等

import matplotlib.pyplot as plt

x_value=[1,2,3,4]
y_value=[1,4,9,16]
plt.scatter(x_value,y_value,s=100)

#修饰散点图,折线图  图表的四要素 (图表主题,x轴的主题,y轴的主题,还有刻度的大小)
plt.title("Square number",fontsize=20)  
plt.xlabel("value",fontsize=14)
plt.ylabel("value_Square",fontsize=14)
plt.tick_params(axis='both',which='major',labelsize=10)


plt.show()

2.matplotlib.pyplot的自动化计算

将上述散点图代码的以下变量改为:

x_values=list(range(1,1001))产生1——1000的数并且存入列表

y_values=[x**2 for x in x_values] 

3.颜色设置方面

(1)要在绘制图表的语句中添加颜色设置

例如:

plt.scatter(x_values,y_values,s=100,edgecolor='none',c='red')

颜色设置另一种方式:c=(0,0,0.8)

(2)颜色映射(colormap):一系列的颜色,起始颜色到结束颜色。

plt.scatter(x_values,y_values,s=100,edgecolor='none',c=y_values,cmap=plt.cm.Blues)

(3)自动保存文件语句

plt.show()替换为

plt.savefig('square_plot.png',bbox_inches='tight')第一个参数是文件名,第二个参数是将图表多余的空白区域裁减掉。

4.模拟多次散步模型

一个人要怎么走,是直线,还是转圈,还是随机漫步,都有一个共性,那就是要有起始位置,和走的步数。但差异在,一步距离和方向,所以我们要先创建一个类,并设置具有初始值的共性。

from random import choice
class RandomWalk():
    def __init__(self,numpoints=5000):
        self.numpoints=numpoints    #规定漫步次数,默认值为5000
        self.x_values=[0]   #x轴
        self.y_values=[0]   #y轴

    def get_step(self):
        direction=choice([1,-1])        #随机选择方向
        distance=choice([0,1,2,3,4])    #漫步长度
        step=direction*distance
        return step

    def fill_walk(self):
        while len(self.x_values) < self.numpoints:
            x_step=self.get_step()
            y_step=self.get_step()

            if x_step==0 and y_step==0:     #防止原地不动
                continue

            x_next=self.x_values[-1]+x_step     #点在x轴上的位移
            y_next=self.y_values[-1]+y_step     #点在y轴上的位移

            self.x_values.append(x_next)  #下一个点的x轴值
            self.y_values.append(y_next)  #下一个点的y轴值

之后我们可以向绘制散点图一样去绘制随机漫步图像了

import matplotlib.pyplot as plt
from random_walk import Random
while True:
    random_number=5000
    ran=Random(random_number)
    ran.fill_random()
    #设置窗口大小,分辨率
    plt.figure(dpi=128,figsize=(16, 12))
    #根据前面的plt.scatter正常进行绘制,并对其进行渐变设置(颜色樱色)
    plt.scatter(ran.x,ran.y,s=15,edgecolors='none',c=ran.y,cmap=plt.cm.Blues)
    #对点进行重新绘制
    plt.scatter(0,0,c='Red',edgecolors='none',s=100)
    plt.scatter(ran.x[-1],ran.y[-1],s=100,c='Green')
    #设置坐标轴不可见
    frame = plt.gca()
    # 设置 y 轴不可见
    frame.axes.get_yaxis().set_visible(False)
    # 设置 x 轴不可见
    frame.axes.get_xaxis().set_visible(False)

    plt.show()
    msg=input('是否继续绘制y/n')
    if msg== 'n':
        break

注意:我们在绘制的时候可以添加对图表进行更多的属性设置。并且加入循环,进行判断,从而达到进行多次绘制的目的。

三.pygal模拟掷骰子

首先创建一个骰子的类

这里我们用到了random中的randint,产生范围内的随机数,我们用定义了一个创造随机数的函数

from random import randint
class Die():
    def __init__(self,screen_number=6):
        #骰子的面数
        self.screen_number=screen_number
    def create_random(self):
        random=randint(1,self.screen_number+1)+randint(1,self.screen_number+1)
        print(random)
        return random
from die import Die
import pygal
die=Die()
randoms=[]
allrandoms=10000
for random_number in range(1,allrandoms):
    random=die.create_random()
    randoms.append(random)
print(randoms)

citisfys=[]
for rand in range(2,13):
    citisfy=randoms.count(rand)
    citisfys.append(citisfy)
print(citisfys)

#用模块pygal中的Bar类创建了一个实例hist
hist=pygal.Bar()
#设置图表的主题,x标题,y标题。还有x的标签值
hist.x_labels=['2','3','4','5','6','7','8','9','10','11','12']
hist.title='骰子随机数统计'
hist.x_title='骰子数'
hist.y_title='骰子数统计数'
#给与图表值
hist.add('D6',citisfys)
hist.render_to_file('die_number.svg')

总结

睡了,明天接着总结。