数据可视化

数据可视化:利用计算机图形学和图像处理技术,将数据转换为图形或者
图像在屏幕上显示出来进行交互处理的理论方法和技术。
 

数据可视化随着平台的拓展、应用领域的增加,表现形式的不断变化,从原始的BI统计图表,到不断增加的诸如实时动态效果、地理信息、用户交互等等。数据可视化的概念边界不断扩大
 

 

 数值型适合用能够量化的视觉通道表示,如坐标
、长度等
序列型适合用区分度明显的视觉通道表示,比如
密度、饱和度。
类别型适合用易于分组的视觉通道。

 常见图表类型

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

绘制余弦曲线散点图。

import numpy as np
import matplotlib.pylab as pl

x = np.arange(0, 2.0*np.pi, 0.1)  #x轴数据
y = np.cos(x)                       #y轴数据
pl.scatter(x, y)                    #绘制散点图
pl.show()                            #显示绘制的结果图像

绘制大小与位置有关的红色散点五角星。

import matplotlib.pylab as pl
from numpy.random import randint

x = randint(1, 20, 50)        #模拟x轴数据
y = x + randint(-10, 10, 50)  #生成y轴数据
pl.scatter(x, y, s=x*y, c='r', marker='*')
pl.show()

饼状图绘制与属性设置。

import numpy as np
import matplotlib.pyplot as plt

labels = ('Frogs', 'Hogs', 'Dogs', 'Logs')
colors = ('#FF0000', 'yellowgreen', 'gold', 'blue')
explode = (0, 0.02, 0, 0.08)     #使所有饼状图中第2片和第4片裂开

fig = plt.figure(num=1,figsize=(10,8),dpi=110,facecolor='white')
ax = fig.gca()                     #获取当前轴
ax.pie(np.random.random(4), explode=explode, labels=labels,
        colors=colors, pctdistance=0.8, autopct='%1.1f%%',
        shadow=True, startangle=90, radius=0.25, center=(0, 0),              
        counterclock=False, frame=True)
ax.pie(np.random.random(4), explode=explode, labels=labels,
        colors=colors, autopct='%1.1f%%', shadow=True,
        startangle=45, radius=0.25, center=(1, 1), frame=True)
ax.pie(np.random.random(4), explode=explode, labels=labels,
        colors=colors, autopct='%1.1f%%', shadow=True,
        startangle=90, radius=0.25, center=(0, 1), frame=True)
ax.pie(np.random.random(4), explode=explode, labels=labels,
        colors=colors, autopct='%1.2f%%', shadow=False,
        startangle=135, radius=0.35, center=(1, 0), frame=True)

ax.set_xticks([0, 1])                    #设置x坐标轴刻度
ax.set_yticks([0, 1])                    #设置y轴坐标轴刻度

ax.set_xticklabels(["Sunny", "Cloudy"])#设置坐标轴刻度上的标签
ax.set_yticklabels(["Dry", "Rainy"])

ax.set_xlim((-0.5, 1.5))                 #设置坐标轴跨度
ax.set_ylim((-0.5, 1.5))

ax.set_aspect('equal')                   #设置纵横比相等
plt.show()

 绘制柱状图并设置图形属性和文本标注。

import numpy as np
import matplotlib.pyplot as plt

#生成测试数据
x = np.linspace(0, 10, 11)
y = 11-x

#绘制柱状图
plt.bar(x, y, color='#772277', alpha=0.8, edgecolor='blue',
         linestyle='--', linewidth=1,hatch='*')

#为每个柱形添加文本标注
for xx, yy in zip(x,y):
    plt.text(xx-0.2, yy+0.1, '%2d' % yy)

#显示图形
plt.show()

绘制雷达图

import numpy as np
import matplotlib.pyplot as plt

labels = np.array(list('abcdefghij')) #设置标签
data = np.array([11,4]*5)             #创建模拟数据
dataLength = len(labels)               #数据长度

#angles数组把圆周等分为dataLength份
angles = np.linspace(0,  2*np.pi, dataLength, endpoint=False)
data = np.append(data, data[0])
angles = np.append(angles, angles[0]) #首尾相接,使得曲线闭合

#绘制雷达图
plt.polar(angles,  data, 'rv--', linewidth=2)

#设置角度网格标签
plt.thetagrids(angles*180/np.pi, labels)

#设置填充色
plt.fill(angles, data, facecolor='r', alpha=0.6)
plt.ylim(0,12)                        #设置坐标跨度

plt.show()                            #显示绘图结果

 绘制三维曲线。

import matplotlib as mpl
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
import matplotlib.pyplot as plt

mpl.rcParams['legend.fontsize'] = 10    #设置图例字号
fig = plt.figure()
ax = fig.gca(projection='3d')            #绘制三维图形
theta = np.linspace(-4 * np.pi, 4 * np.pi, 200)
z = np.linspace(-4, 4, 200)*0.4          #创建模拟数据
                                            #z的步长应与theta一致
r = z**3 + 1
x = r * np.sin(theta)
y = r * np.cos(theta)
ax.plot(x, y, z, label='parametric curve')
ax.legend()                                #显示图例

plt.show()                                  #显示绘制结果

绘制三维曲面。

import numpy as np
import matplotlib.pyplot as plt
import mpl_toolkits.mplot3d

x,y = np.mgrid[-4:4:80j, -4:4:40j]
z = 50 * np.sin(x+y)                   #创建测试数据
ax = plt.subplot(projection='3d')    #绘制三维图形
ax.plot_surface(x, y, z, rstride=2, cstride=1, color='red', )
ax.set_xlabel('X')                     #设置坐标轴标签
ax.set_ylabel('Y')
ax.set_zlabel('Z')

plt.show()

绘制三维柱状图。

import numpy as np
import matplotlib.pyplot as plt
import mpl_toolkits.mplot3d

x = np.random.randint(0, 40, 10)     #创建测试数据
y = np.random.randint(0, 40, 10)
z = 80*abs(np.sin(x+y))    
ax = plt.subplot(projection='3d')   #绘制三维图形

ax.bar3d(x, y, np.zeros_like(z), dx=1, dy=1, dz=z, color='red')               #设置面片颜色为红色
ax.set_xlabel('X')                   #设置坐标轴标签
ax.set_ylabel('Y')
ax.set_zlabel('Z')

plt.show()

 切分绘图区域并绘制图形。

import numpy as np
import matplotlib.pyplot as plt

x= np.linspace(0, 2*np.pi, 500)     #创建自变量数组
y1 = np.sin(x)                        #创建函数值数组
y2 = np.cos(x)
y3 = np.sin(x*x)

plt.figure()                         #创建图形

ax1 = plt.subplot(2, 2, 1)
ax2 = plt.subplot(2,2,2)            #选择两行两列的第二个区域
ax3 = plt.subplot(212, facecolor='y')

plt.sca(ax1)                         #选择ax1
plt.plot(x, y1, color='red')        #绘制红色曲线
plt.ylim(-1.2, 1.2)                  #限制y坐标轴范围

plt.sca(ax2)                         #选择ax2
plt.plot(x, y2, 'b--')              #绘制蓝色虚线
plt.ylim(-1.2,1.2)

plt.sca(ax3)                         #选择ax3
plt.plot(x, y3, 'g--')
plt.ylim(-1.2, 1.2)
plt.show()

设置图例显示公式。

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 2*np.pi, 500)
y = np.sinc(x)
z = np.cos(x*x)
plt.figure(figsize=(8,4))

plt.plot(x, y, label='$sinc(x)$', color='red', linewidth=2)
plt.plot(x, z, 'b--', label='$cos(x^2)$')

plt.xlabel('Time(s)')
plt.ylabel('Volt')
plt.title('Sinc and Cos figure using pyplot')
plt.ylim(-1.2,1.2)
plt.legend()                 #显示图例

plt.show()                   #显示绘图结果

设置图例位置、背景颜色、边框颜色等属性。

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.font_manager as fm

t = np.arange(0.0, 2*np.pi, 0.01)
s = np.sin(t)
z = np.cos(t)

plt.plot(t, s, label='正弦')
plt.plot(t, z, label='余弦')
plt.title('sin-cos函数图像', fontproperties='STLITI', fontsize=24)                

myfont = fm.FontProperties(fname=r'C:\Windows\Fonts\STKAITI.ttf')
plt.legend(prop=myfont, title='Legend', loc='lower left',
            bbox_to_anchor=(0.43,0.75), shadow=True,
            facecolor='yellowgreen',  edgecolor='red',
            ncol=2, markerfirst=False)

plt.show()

 设置坐标轴刻度距离和文本。

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(0, 2*np.pi, 0.01)
y = np.sin(x)
plt.plot(x, y)

plt.xticks(np.arange(0, 2*np.pi, 0.5))
plt.yticks([-1, -0.5, 0, 0.75, 1],
            ['负一', '负零点五', '零', '零点七五', '一'],
            fontproperties='STKAITI')

plt.show()

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

撸码的xiao摩羯

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

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

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

打赏作者

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

抵扣说明:

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

余额充值