您的位置:首页 > 编程语言 > Python开发

python -- 数据可视化

2018-09-28 23:19 513 查看

数据可视化指的是通过可视化表示来探索数据,它与数据挖掘紧 密相关,而数据挖掘指的是使用代码来探索数据集的规律和关联。数 据集可以是用一行代码就能表示的小型数字列表,也可以是数以吉字 节的数据。 

一丶 安装matplotlib 

在Linux系统中安装 matplotlib 如果你使用的是系统自带的Python版本,可使用系统的包管理器来安装matplotlib,为此只需 执行一行命令: 
 

如果你安装了较新的Python版本,就必须安装matplotlib依赖的一些库: 
 
$ sudo apt-get install python3.5-dev python3.5-tk tk-dev $ sudo apt-get install libfreetype6-dev g++ 
 
再使用pip来安装matplotlib: 
 
$ pip install --user matplotlib 

二丶绘制简单的折线图 

1 绘制简单的折线图

[code]import matplotlib.pyplot as plt
squares = [1, 4, 9, 16, 25]
plt.plot(squares)
plt.show()

我们首先导入了模块pyplot,并给它指定了别名plt,以免反复输入pyplot。在线示例大都这 样做,因此这里也这样做。模块pyplot包含很多用于生成图表的函数。 我们创建了一个列表,在其中存储了前述平方数,再将这个列表传递给函数plot(),这个函 数尝试根据这些数字绘制出有意义的图形。plt.show()打开matplotlib查看器,并显示绘制的图形,

如图所示。查看器让你能够缩放和导航图形,另外,单击磁盘图标可将图形保存起来。 

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

[code]import matplotlib.pyplot as plt
squares = [1,4,9,16,25]
input_values =[1,2,3,4,5]
plt.plot(input_values ,squares,linewidth = 3)
# 设置图表标题,并给坐标轴加上标签
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()

      参数linewidth 决定了plot()绘制的线条的粗细. 函数title() 给图表指定标 题。在上述代码中,出现了多次的参数fontsize指定了图表中文字的大小。 

      函数xlabel()和ylabel()让你能够为每条轴设置标题;而函数tick_params()设置刻度 的样式,其中指定的实参将影响x轴和y轴上的刻度(axes='both'),并将刻度标记的字号 设置为14(labelsize=14)。 

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

     有时候,需要绘制散点图并设置各个数据点的样式。例如,你可能想以一种颜色显示较小的 值,而用另一种颜色显示较大的值。绘制大型数据集时,你还可以对每个点都设置同样的样式, 再使用不同的样式选项重新绘制某些点,以突出它们。 要绘制单个点,可使用函数scatter(),并向它传递一对x和y坐标,它将在指定位置绘制一 个点:

[code]import matplotlib.pyplot as plt

#在散点图上的坐标
plt.scatter(2,4)
plt.scatter(3,5)
plt.scatter(2.5,4.5)
plt.show()

下面来设置输出的样式,使其更有趣:添加标题,给轴加上标签,并确保所有文本都大到能 够看清:

[code]import matplotlib.pyplot as plt

#在散点图上的坐标
plt.scatter(2,4,s = 200)
plt.scatter(3,5,s = 200)
plt.scatter(2.5,4.5,s = 200)
#,我们调用了scatter(),并使用实参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()

4丶使用scatter()绘制一系列点 

[code]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',labelsize =14)

plt.show()

5丶自动计算数据 

     手工计算列表要包含的值可能效率低下,需要绘制的点很多时尤其如此。可以不必手工计算 包含点坐标的列表,而让Python循环来替我们完成这种计算。下面是绘制1000个点的代码: 

[code]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=10)
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.axis([0,1100,0,1100000])
plt.show()

6  删除数据点的轮廓 

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

[code]plt.scatter(x_values, y_values, edgecolor='none', s=40)

7  自定义颜色

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

[code]plt.scatter(x_values, y_values, c='red', edgecolor='none', s=40)

还可以使用RGB颜色模式自定义颜色。要指定自定义颜色,可传递参数c,并将其设置为一个元组,其中包含三个0~1之间的小数值,它们分别表示红色、绿色和蓝色分量。例如,下面 的代码行创建一个由淡蓝色点组成的散点图: 

[code]plt.scatter(x_values, y_values, c=(0, 0, 0.8), edgecolor='none', s=40)

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

8丶使用颜色映射 

颜色映射(colormap)是一系列颜色,它们从起始颜色渐变到结束颜色。在可视化中,颜色 映射用于突出数据的规律,例如,你可能用较浅的颜色来显示较小的值,并使用较深的颜色来显 示较大的值。 模块pyplot内置了一组颜色映射。要使用这些颜色映射,你需要告诉pyplot该如何设置数据 集中每个点的颜色。下面演示了如何根据每个点的y值来设置其颜色: 

[code]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=40)
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.axis([0,1100,0,1100000])

plt.show()

9 丶自动保存图表 
要让程序自动将图表保存到文件中,可将对plt.show()的调用替换为对plt.savefig()的 调用: 

[code]plt.savefig('squares_plot.png', bbox_inches='tight')


第一个实参指定要以什么样的文件名保存图表,这个文件将存储到scatter_squares.py所在的 目录中;第二个实参指定将图表多余的空白区域裁剪掉。如果要保留图表周围多余的空白区域, 可省略这个实参。 

 

[code]import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
#1. 线形图  y = ax+b

x = np.linspace(1,21,20)

y = 2*x+3
y2 = np.sin(x)
plt.plot(x,y,'m^:')
plt.show()
[code]import matplotlib.pyplot as plt
import numpy as np
n = 1024
x = np.random.normal(0,1,n) #1024个 符合高斯分布

y = np.random.normal(0,1,n) #
plt.scatter(x,y,s=np.random.rand(n)*50,c=np.random.rand(n),alpha=0.7)
plt.show()

 

[code]# 画一个3D苹果
import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()#figsize=(12,8)
ax = Axes3D(fig) # 创建实例

x = np.arange(-4,4,0.25)
y = np.arange(-4,4,0.25)
x,y = np.meshgrid(x,y) # 将x,y 变成矩阵
z = np.sin(np.sqrt(x**2+y**2))

ax.plot_surface(x,y,z,cmap=plt.get_cmap('summer'))

#plt.savefig('summer.png', bbox_inches='tight')

plt.show()

 cmap : https://matplotlib.org/gallery/color/colormap_reference.html#sphx-glr-gallery-color-colormap-reference-py

 

 

 

 

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: