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萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章