数据可视化(学会用matplotlib绘图)

1.绘制简单的折线图

import matplotlib.pyplot as plt

squres = [1, 4, 9, 16, 25]
plt.plot(squres)//把列表传给plot(),这个函数尝试根据这些数字绘制出有意义的图形
plt.show()//打开matplotlib查看器,并显示绘制的图形


2.修改标签文字和线条粗细

import matplotlib.pyplot as plt

squares = [1, 4, 9, 16, 25]
plt.plot(squares, linewidth=5)//设置绘制线条的粗细
plt.title("Square Numbers",fontsize=24)//给图表指定标题,fontsize指定了文字大小
plt.xlabel("Value", fontsize=14)//xlable()和ylable()能够为每条轴设置标题
plt.ylabel("Square of Value", fontsize=14)
plt.tick_params(axis='both',labelsize=14)//tick_params()设置刻度的样式,其中指定的实参将影响x轴和y轴上的刻度(axis='both'),并将刻度标记的字号设置为14(labelsize=14)
plt.show()

3.矫正图形

根据上图我们不难发现,我们画出的图并没有正确的绘制数据:折现图的终点指出4的平方为25.现在我们就要来修复这个问题

当我们向plot()提供一系列数字时,它假设第一个数据点对应的x坐标值为0,但我们的第一个点对应的x的值为1.为改变这种默认行为,我么好可以给plot()同时提供输入值和输出值。

import matplotlib.pyplot as plt
input_values = [1, 2, 3, 4, 5]
squres = [1, 4, 9, 16, 25]
plt.plot(input_values, squres, 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()

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

(1)要绘制单个点,可使用scatter(),并向它传递一对x和y坐标,它将在指定位置绘制一个点

import matplotlib.pyplot as plt
plt.scatter(2, 4, s=200)//实参s设置了绘制图形时使用的点的尺寸
plt.title("Square Numbers", fontsize=24)
plt.xlabel("Value", fontsize=14)
plt.ylabel("Square of Value", fontsize=14)
plt.tick_params(axis='both', which='major',labelsize=14)
plt.show()

(2)使用scatter()绘制一系列点

要绘制一系列的点,可向scatter()传递两个分别包含x值和y值的列表

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.title("Square Numbers", fontsize=24)
plt.xlabel("Value", fontsize=14)
plt.ylabel("Square of Value", fontsize=14)
plt.tick_params(axis='both', which='major',labelsize=14)
plt.show()

5.自动计算数据

import matplotlib.pyplot as plt
x_values = list(range(1, 1001))
y_values = [x**2 for x in x_values]
plt.scatter(x_values, y_values, s=3)
plt.title("Square Numbers", fontsize=24)
plt.xlabel("Value", 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()

6.删除数据点的轮廓

matplotlib允许我们给散点图中的各个点指定颜色。默认为蓝色点和黑色轮廓,在散点图数据点不多时效果很好。但绘制很多点时,黑色轮廓可能会粘在一起。要删除数据点的轮廓,可在调用scatter()时传递实参edgecolor='none':

plt.scatter(x_values,y_values,edgecolor='none',s=3)

7.自定义颜色

要修改数据点的颜色,可向scatter()传递参数c,并将其设置为要使用的颜色名称

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

同时,我们还可以使用RGB颜色模式自定义颜色。要指定自定义颜色,可传递参数c,并将其设置为一个元组,其中包含三个0~1之间的小数值,他们分别表示红色,绿色和蓝色分量。例如:

plt.scatter(x_values,y_values,c=(0,0,0.8),edgecolor='none',s=3)

值越接近0,指定的颜色越深,值越接近1,指定的颜色越浅

8.使用颜色映射

颜色映射是一系列颜色,他们从起始颜色渐变到结束颜色。在可视化,颜色映射用于突出数据的规律,例如,我们可能用较钱的颜色来显示较大的值。

模块pyplot内置了一组颜色的映射。要使用这些颜色映射,你需要告诉pyplot该如何设置数据集中每个点的颜色。下面演示了如何根据每个点的y值来设置其颜色:

import matplotlib.pyplot as plt
x_values = list(range(1, 1001))
y_values = [x**2 for x in x_values]
plt.scatter(x_values,y_values,c=y_values,cmap=plt.cm.Blues,edgecolor='none',s=3)
plt.title("Square Numbers", fontsize=24)
plt.xlabel("Value", 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()

9.画一个直方图

import matplotlib.pyplot as plt
import numpy as np
import matplotlib
matplotlib.rcParams['font.sans-serif']=['SimHei'] #用黑体表示中文
matplotlib.rcParams['axes.unicode_minus']=False #正常显示负号
data = np.random.randn(10000)
# bins:直方图长条形数目,可选项,默认为10
# normed:是否将得到的直方图向量规一化,可选项,默认为0,代表不规一化,显示频数。normed=1,表示规一化,显示频率
# facecolor:长条形的颜色
# edgecolor:长条形边框的颜色
# alpha:透明度
plt.hist(data, bins=40, facecolor='blue', edgecolor='black', alpha=0.7)
plt.xlabel("区间", fontsize=14)
plt.ylabel("频数/频率",fontsize=14)
plt.title("频数/频率直方图",fontsize=24)
plt.show()

10.条形图

import matplotlib.pyplot as plt
import matplotlib
matplotlib.rcParams['font.sans-serif'] = ['SimHei']
matplotlib.rcParams['axes.unicode_minus'] = False
plt1 = plt.subplot(2, 2, 1)
plt2 = plt.subplot(2, 2, 2)
plt3 = plt.subplot(2, 2, 3)
plt4 = plt.subplot(2, 2, 4)
# left:长条形中点横坐标
# height:长条形高度
# width:长条形的宽度,默认值0.8
label_list = ['2011', '2012', '2013', '2014']
num_list1 = [10, 15, 20, 25]
num_list2 = [5, 15, 25, 35]
x = list(range(len(label_list)))

plt1.barh(label_list, num_list1, fc='purple', ec='black')

plt2.bar(label_list, num_list2, color='rgyb', width=0.4, ec='black')
# 画堆叠柱状图
plt3.bar(label_list, num_list1, fc='b', label='boy', width=0.4)
plt3.bar(label_list, num_list2, bottom=num_list1, label='girl', fc='r', width=0.4)
plt3.legend()
# 画并列柱状图
plt4.bar(x, num_list1, width=0.4, fc='g', label='boy')
for i in range(len(x)):
    x[i] = x[i] + 0.4
plt4.bar(x, num_list2, width=0.4, label='girl', tick_label=label_list, fc='y')
plt4.legend()

plt.show()

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值