散點圖
散點圖,顧名思義就是由一些散亂的點組成的圖表,這些點在哪個位置,是由其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')
想了解更多關於背景的設置大家可以到網上查閱一下資料。
這些圖我隨意調的沒有合理設置顏色和點的個數,看起來不是很美觀,大家有興趣和想研究一下的,可以根據我前面兩個實例,適當的發揮一下。