歡迎使用CSDN markdown編輯器

2021-08-01 12:05:04 字數 3853 閱讀 8789

對於python使用者,plotly不僅可以從原生的python獲得支援,如果你正在使用matplotlib,pandas等庫,plotly也有專門為其量身定製的介面。

plotly安裝:這裡參照:

在anconda安裝可使用:conda install plotly

首先,獲得資料,

匯入plotly與pandas,可以用pandas中的read_csv直接讀取原始資料。

import plotly .plotly as py

import plotly.graph_objs as go

import pandas as pd

data = pd.read_csv('30_-10_full.csv')

我們可以用plotly繪製散點圖,現在我們想研究前三列資料關係(mh,mh3,mh5),那麼我們可以考慮其中兩個數值對映到x,y軸,另乙個變數值可以用顏色來表徵。

aes = go.scatter( #go.scatter建立乙個散點圖或者折線圖物件

x=data['mh5'] #這裡定義座標軸對映關係,mh5列對應x軸

y =data['mh3']#mh3對應y軸

mode = 'markers'

#這裡mode預設是由點連起來的折線圖,要繪製散點圖,所以設定為『market』

marker = dict( #marker 就是定義每個點的性質,比如顏色,點的大小

color =data['mh'] #將mh值對映到點的顏色上,顏色不同代表列不同mh值

size =『5』 #代表點的大小

colorscale = 『viridis』 #這裡是顏色標度的配色方案

showscale =true #右側顯示顏色標度}}

py.iplot([aes]) #接受乙個list物件,進行繪製

影象如下

其中有幾點地方需要注意

1 整個影象的比例不是很協調,需要我們重新調整其長和寬。

2 x軸,y軸,以及右側的圖例分別代表什麼含義,這個圖里並沒有體現。

3 這個圖中的配色方案是『viridis』,plotly預設了不少其他美觀的配色方案,具體效果可以參考本文附錄三。

接下來我們就涉及到了「圖層」的概念,以上的影象僅僅就是將原始資料對映到座標軸上,如果我們還想繼續設定x軸的標題,y軸的標題,以及在影象上新增一些幾何圖形,那麼就可以往上繼續新增圖層——layout(這裡就是ggplot2作圖的思想)

layout =go.layout(

title = '$mh_5,mh_3$'

autosize = false #取消自動設定影象大小,下面自己調整影象長寬

width = 1000

height = 800

xaxis =dict( #設定x軸標題

title =『$mh_5$』

),yaxis =dict(

title = '$mh_3$'

#設定y軸標題),)

fig =go.figure(data=[aes],layout=layout)#將data與layout組合為乙個影象物件

py.iplot(fig)

得到影象為

我們可以往圖里新增一些簡單的幾何圖,以直線為例

line1 = dict(  #用乙個字典表示圖形特徵

type ='line' #'line'表示線段

xref = 'x',

yref = 'y',

x0 = 200, #(x0,y0)表示線段起點,(x1,y1)表示線段終點

y0 = 100

x1 = 200

y1 = 600

line =dict(

color ='black' #線段顏色

width = 2 #寬度

))line2 = dict( #用乙個字典表示圖形特徵

type ='line' #'line'表示線段

xref = 'x',

yref = 'y',

x0 = 100, #(x0,y0)表示線段起點,(x1,y1)表示線段終點

y0 = 180

x1 = 519

y1 = 600

line =dict(

color ='black' #線段顏色

width = 2 #寬度))

同時在定義圖層時加上shapes屬性

layout =go.layout(

title = '$mh_5,mh_3$'

autosize = false #取消自動設定影象大小,下面自己調整影象長寬

width = 1000

height = 800

shapes = [line1,line2] #將定義的線段等幾何圖形新增到圖層之中

xaxis =dict( #設定x軸標題

title =『$mh_5$』

),yaxis =dict(

title = '$mh_3$'

#設定y軸標題),)

接下來我需要在影象上畫一些交叉點,這個plotly自身並不支援(反正我沒找到),但是我們可以用兩條線段來組合成乙個交叉點。

於是可以定義這樣乙個函式,給定乙個座標,返回組成這個交叉點的兩條直線,這很簡單

def

cross

(x,y):

line1 =dict(

type = 'line'

xref = 'x'

yref ='y'

x0 = x-4, #(x0,y0)表示線段起點,(x1,y1)表示線段終點

y0 = y-5

x1 = x+4

y1 = y+5

line =dict(

color ='black'

#線段顏色

width = 2

#寬度 )

line2 =dict(

type = 'line'

xref = 'x'

yref ='y'

x0 = x-4, #(x0,y0)表示線段起點,(x1,y1)表示線段終點

y0 = y+5

x1 = x+4

y1 = y-5

line =dict(

color ='black'

#線段顏色

width = 2

#寬度 )

)return line1,line2

將layout中的shapes換成

shapes=[line1,line2,cross(230,530)[0],cross(230,530)[1],cross(230,430)[0],cross(230,530)[1],cross(230,330)[0],cross(230,330)[1],cross(300,530)[0],cross(300,530)[1],cross(300,430)[0],cross(300,430)[1]]
得到下圖

歡迎使用CSDN markdow

本markdown編輯器使用stackedit修改而來,用它寫部落格,將會帶來全新的體驗哦 markdown 是一種輕量級標記語言,它允許人們使用易讀易寫的純文字格式編寫文件,然後轉換成格式豐富的html頁面。維基百科 使用簡單的符號標識不同的標題,將某些文字標記為粗體或者斜體,建立乙個鏈結等,詳細...

歡迎毛毛與妞妞使用CSDN markdown編輯器

建立乙個自定義列表 如何建立乙個註腳 注釋也是必不可少的 katex數學公式 新的甘特圖功能,豐富你的文章 uml 圖表 flowchart流程圖 匯出與匯入 你好!這是你第一次使用markdown編輯器所展示的歡迎頁。如果你想學習如何使用markdown編輯器,可以仔細閱讀這篇文章,了解一下mar...

歡迎使用CSDN markdow1n編輯器

本markdown編輯器使用stackedit修改而來,用它寫部落格,將會帶來全新的體驗哦 markdown 是一種輕量級標記語言,它允許人們使用易讀易寫的純文字格式編寫文件,然後轉換成格式豐富的html頁面。維基百科 使用簡單的符號標識不同的標題,將某些文字標記為粗體或者斜體,建立乙個鏈結等,詳細...