Chapter7、数据可视化

chapter7、数据可视化

一、内容提要

主要讲以下一些内容:
(1)基于matplotlib 绘制一些2D/3D 静态图片
(2)基于plotly、Cufflinks 绘制一些可以交互的2维图片

二、绘制2维静态图片

import matplotlib as mpl
mpl.__version__   #查看版本
'3.1.1'
import matplotlib.pyplot as plt    #导入主要的作图子包--pyplot
plt.style.use("seaborn")  #使用某种作图风格
#还有一个替代方法:import seaborn as sns 
#这样就自动引用seaborn风格来绘制图片了
mpl.rcParams['font.family'] = 'serif'  #将图片中的字体都变为 “serif”格式

一维数据集

import numpy as np
import pandas as pd
#plt.plot()  作折线图
y = np.random.randn(20)
x = np.arange(len(y))
plt.plot(x,y)
[<matplotlib.lines.Line2D at 0xa2d1c10>]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hBK3bxkh-1581470433718)(output_13_1.png)]

#如果只给了y值,没给x值,那么就自动将y的索引当做横坐标
plt.plot(y)
[<matplotlib.lines.Line2D at 0xa4f89d0>]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RM02ZDYo-1581470433722)(output_15_1.png)]

plt.plot(y.cumsum())     #累积求和作图,本质就是plot里的参数,数量一一对应,类型为list 或者 ndarray就可以了
[<matplotlib.lines.Line2D at 0xa540810>]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2oY4Cei1-1581470433723)(output_16_1.png)]

添加一些作图格式

plt.plot(y.cumsum())
plt.grid(False)  #不添加网格
plt.axis("equal")  #使刻度间隔相同
(-0.9500000000000001, 19.95, -0.9861711174719393, 3.5906861783003086)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tiQBWxIG-1581470433724)(output_18_1.png)]

plt.axis?
#使用plt.xlim   plt.ylim 设置轴刻度
plt.plot(y.cumsum())
plt.xlim(-1,20)
plt.ylim(np.min(y.cumsum())-1,np.max(y.cumsum())+1)
(-1.7781321494822917, 4.382647210310661)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jREcLbvQ-1581470433725)(output_21_1.png)]

#使用plt.xlabel  plt.ylabel 添加轴标签
%matplotlib notebook 
#可以使两者进行交互,我一般使用这个方法来调整图形大
#具体颜色、线条参数,查阅函数帮助、或者看官方文档
plt.plot(y.cumsum(),"--",color='black',marker="o")  #个人觉得使用默认参数挺好的
plt.xlabel("index")
plt.ylabel("value")
plt.title("A Simple Plot")
Text(0.5, 1, 'A Simple Plot')

二维数据集

y = np.random.standard_normal((20,2)).cumsum(axis=0)
y
array([[ 0.51661156, -1.08906582],
       [ 0.90789443, -0.21721317],
       [ 2.3499558 , -0.57164267],
       [ 1.26505076, -0.35856054],
       [-0.83804324,  2.11141992],
       [-2.64880211,  2.20099831],
       [-3.66103205,  1.05792399],
       [-2.43283155,  3.27209814],
       [-2.99142878,  3.50913556],
       [-2.03721386,  2.95881131],
       [-2.29589958,  3.11944995],
       [-2.72717782,  4.76039385],
       [-2.87112893,  4.18588868],
       [-3.74731226,  6.1762593 ],
       [-4.51814748,  4.58142256],
       [-3.84756119,  5.78898665],
       [-3.65531913,  5.07855074],
       [-1.93115219,  4.42290611],
       [-1.932012  ,  3.71844393],
       [-1.268843  ,  4.19094848]])
#开始作图,
plt.plot(y)
plt.ylabel("value")
plt.xlabel("index")
plt.title("another simple plot".title())
plt.legend("best")
<matplotlib.legend.Legend at 0xa55b8f0>
#由于没有生成新的空白图片对象,所以上面的操作画到了之前的图片中
fig1 = plt.figure()
<IPython.core.display.Javascript object>
plt.plot(y)      
plt.ylabel("value")
plt.xlabel("index")
plt.title("another simple plot".title())
Text(0.5, 1.0, 'Another Simple Plot')
例子:将多维数据集拆成一维数据集,单独操作
fig2 = plt.figure()
<IPython.core.display.Javascript object>
plt.plot(y[:,0],label="1st",marker="o")
plt.plot(y[:,1],label="2nd",marker="*")
plt.legend(loc="best")
plt.title("LOL")
plt.xlabel("index")
plt.ylabel("value")
Text(55.277777777777786, 0.5, 'value')
#当各组数据,范围相差很大会出现什么情况
fig3 = plt.figure()
<IPython.core.display.Javascript object>
y[:,1] = y[:,1] * 100  #第二列数据全体放大100倍
plt.plot(y[:,0])
plt.plot(y[:,1])
[<matplotlib.lines.Line2D at 0xd0c9a10>]
#由图发现,第二组数据图形由于刻度问题,失去参考价值
#解决方法:1)使用2个y刻度  2)使用子图
方法1(使用子图)
fig4,axes = plt.subplots(2,1,sharex=True,sharey=False)
<IPython.core.display.Javascript object>

<img src="data:image/png;base64,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

发布了0 篇原创文章 · 获赞 0 · 访问量 28

猜你喜欢

转载自blog.csdn.net/qq_45953796/article/details/104273485