plotly入门(散点图和曲线图)

散点图

散点图,顾名思义就是由一些散乱的点组成的图表,这些点在哪个位置,是由其X值和Y值确定的。所以也叫做XY散点图。
特点是能直观表现出影响因素和预测对象之间的总体关系趋势。优点是能通过直观醒目的图形方式反映变量间关系的变化形态,以便决定用何种数学表达方式来模拟变量之间的关系。散点图不仅可传递变量间关系类型的信息,也能反映变量间关系的明确程度。

今天我们来看一下Python中plotly包来画散点图。
画图前我们需要装一个numpy的包,它的作用我就介绍了,毕竟我们只是用到其中的一两个函数,对这些函数我会一一解释的。其他想要了解,我们可以自己去网上看一下numpy官网

实例1

import plotly as py
import plotly.graph_objs as go
import numpy as np
#上面都是调包和对包名进行简洁化
N = 1000#设置1000个散点,这个可以自由变化
random_x = np.random.randn(N)#调用Np包中的正态分布函数,生成N个点
random_y = np.random.randn(N)
#也可以用其他随机函数生成,详细可以看起它包的随机函数
# Create a trace#plotly包中常用trace变量来表示轨迹
trace0 = go.Scatter(
    x = random_x,
    y = random_y,
    mode = 'markers'#散点图
)
data = [trace0]

py.offline.plot(data, filename='basic-scatter')#生成一个basic-scatter的html文件
print('OK')#表示运行结束的信息

运行完这个代码后,浏览器会自动跳转到这个html页面
这个就是上面代码画出的散点图
在这里插入图片描述

散点图的样式设计

大家先看一个例子:

#简单的散点图
import plotly as py
from plotly.graph_objs import Scatter, Layout, Data
import numpy as np
N = 1000#设置10000个散点
random_x = np.random.randn(N)#调用Np包中的正态分布函数,生成N个点
random_y = np.random.randn(N)
#也可以用其他随机函数生成,详细可以看起它包的随机函数
# Create a trace
trace0 =Scatter(
    x = random_x,
    y = random_y,
    mode = 'markers',#散点图
    name ='markers',#设置散点的名字,但单个图像不起作用
    marker = dict(
        size =5,#设置点的宽度
        color = 'rgba(152,0,0, .8)'#设置点的颜色,这个可以根据网上对照更改颜色
        )
)
data =Data([trace0])
py.offline.plot(data, filename =' 散点图')

在这里插入图片描述

  • 在scatter中的对象和输入数据与Plotly绘图模块中很多对象一样,都是字典格式,而且接受多种复杂的复合字典形式。
  • 在绘图中,x,y分别对应横纵座标,其中x,y 是plotly包的关键字。
  • 生成的网页,我们也可以将其下载,或者你直接设置为png格式。
    是不是很简单,下面我们来看看折线图和多条曲线同时出现在一个图片上的过程。

曲线图

顾名思义就是多个点连接成的一条线。基本和散点图的原理差不多,但也有一些不同,比如线的宽度。下图是上面散点连成的图。

import plotly as py
#import plotly.graph_objs as go
from plotly.graph_objs import Scatter, Layout, Data
# Create random data with numpy
import numpy as np

N = 1000#设置10000个散点
random_x = np.random.randn(N)#调用Np包中的正态分布函数,生成N个点
random_y = np.random.randn(N)
#也可以用其他随机函数生成,详细可以看起它包的随机函数
# Create a trace
trace0 =Scatter(
    x = random_x,
    y = random_y,
    mode = 'lines',#散点图
    name ='markers',#设置散点的名字,但单个图像不起作用
    marker = dict(
        size =2,#设置点的宽度
        color = 'rgba(10,100,20, .8)',#设置点的颜色
        line =dict(
            width =1#设置曲线的宽度
        )
            )
)
data =Data([trace0])
py.offline.plot(data, filename =' 散点图')

在这里插入图片描述
经过上面的学习,我们可以尝试把多条曲线结合在一个图上面,大家看一个实例。

import numpy as np
import plotly as py
from plotly.graph_objs import Scatter, Layout, Data
N = 1000
random_x = np.linspace(0, 1, N)#产生随机数返回100均匀间隔的样本,在[ start,stop ] 区间内计算。
#函数学习了解链接https://docs.scipy.org/doc/numpy/reference/generated/numpy.linspace.html
#numpy.random.randn(d0, d1, …, dn)是从标准正态分布中返回一个或多个样本值。
random_y0 = np.random.randn(N)+5
random_y1 = np.random.randn(N)
random_y2 = np.random.randn(N)-5

# Create traces
trace0 =Scatter(
    x = random_x,
    y = random_y0,
    mode = 'markers',
    name = 'markers'
)
trace1 =Scatter(
    x = random_x,
    y = random_y1,
    mode = 'lines+markers',#折线图加散点结合
    name = 'lines+markers'
)
trace2 =Scatter(
    x = random_x,
    y = random_y2,
    mode = 'lines',#折线图
    name = 'lines'
)

data = [trace0,trace1,trace2]
py.offline.plot(data, filename =' 三种图像')

在这里插入图片描述

基本绘图流程

  • 添加图轨迹数据用的是Scatter等函数命令。
  • 设置画面布局,使用layout命令
  • 集成图形,布局数据,命令有Data,Figure.
  • 绘制图形的输出,命令是offline.plot,自定义用的短命令是Pyplt.
    这个流程对于大多数plotly绘图案例都适用。

画面布局简单介绍

用layout命令,类似上面设置样式一样来设置背景,基本和上面设置线的宽度颜色类似,我们来看一个简单案例。

import numpy as np
import plotly as py
from plotly.graph_objs import Scatter, Layout, Data
N = 500
# Create traces
trace0 =Scatter(
    x =  np.random.randn(N),
    y = np.random.randn(N)+3,
    
    mode = 'markers+lines',
    name = 'Above',
    marker =dict(
        size =4,#s设置点的宽度
        color ='rgba(146,100,80, .8)',#设置点的颜色
        line =dict(
            width =2,#设置线的宽度
            color ='rgba(0,0,0)'#设置点的颜色
            )
        )
)
trace1 =Scatter(
    x = np.random.randn(N),
    y = np.random.randn(N)-3,
    mode = 'markers',#折线图加散点结合
    name = 'markers',
    marker =dict(
            size =5,
            color ='rgba(10,10,10, .9)',
            line =dict(
                width =2,
                )
            )
)
data =[trace0,trace1]
layout = dict(title ='绘图案例',
              yaxis =dict(zeroline =True),#显示y轴的0刻度线
              xaxis =dict(zeroline =False)#不显示x轴的零刻度线
              )
fig = dict(data =data, layout =layout)
py.offline.plot(fig, filename ='案例4.html')

在这里插入图片描述
想了解更多关于背景的设置大家可以到网上查阅一下资料。
这些图我随意调的没有合理设置颜色和点的个数,看起来不是很美观,大家有兴趣和想研究一下的,可以根据我前面两个实例,适当的发挥一下。

发布了41 篇原创文章 · 获赞 88 · 访问量 1万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章