2017年2月6日 星期一

python 畫圖import 補帖

要import這個import那個,實在太多了
所以我打算每次都先import這些函式庫,之後再找時間看能不能寫成一個檔的方法,把要ipmort的東西都寫進去,之後只要import這個就好了

# for graph: 
import matplotlib.pyplot as plt

import plotly
# import plotly.plotly as py
# import plotly.graph_objs as go
# plotly.offline.init_notebook_mode()
from plotly.offline import download_plotlyjs, init_notebook_mode, iplot
from plotly.graph_objs import *
init_notebook_mode() # 記得用iplot就好,不用py.iplot 才會是offline模式


import cufflinks as cf
%reload_ext autoreload
%autoreload 2
cf.set_config_file(world_readable=True,theme='pearl')

matplotlib 雖然是畫圖大庫,但缺點就是沒有互動功能,所以要及時看數據上的資料時其實很不便
所以基本上我都會用plotly和cufflinks這兩個
cufflinks其實也是plotly的副產品,只是他是專門處理pandas的工具
cufflinks其實算是pandas繪圖懶人包,只要給他dataframe 然後在cf.iplot( .....)裡面點點點的地方打上要畫圖的type,顏色,title 等等就大功告成
他還有個優點,就是提供了趨勢線的功能(best fit)
不過缺點呢,就是當我要處理outliers的時候 沒辦法針對那些出局的數據另外標示出我要的顏色
這滿令人頭疼的,因為這不就代表說只能繪出趨勢,但沒辦法讓人知道哪些數據是有問題的嗎?
也可能我太嫩 所以不知道如何寫(但我看了文檔,似乎是沒辦法吧)
針對這部份就要用到plotly的原生函式 py.iplot()就可以了
以下是利用plotly畫outlier得圖以及原始碼:


import plotly
import plotly.plotly as py
import plotly.graph_objs as go
import numpy as np
plotly.offline.init_notebook_mode()

N = 500
x0= np.linspace(0,100, num=N)
y0= np.random.normal(size=N)



trace0 = go.Scatter(
  x =x0[np.abs(y0)<1],
  y= y0[np.abs(y0)<1],
  name = 'inliers',
  mode = 'markers',
  marker = dict(
  size = 16,
  color = 'rgb(204, 204, 204)',
  line = dict(
  width = 2,
  color = 'b'
  )
  )
)

trace1 = go.Scatter(
  x =x0[np.abs(y0)>1],
  y= y0[np.abs(y0)>1],
  name = 'outliers',
  mode = 'markers',
  marker = dict(
  size = 16,
  color = 'rgb(102, 102, 102)',
  line = dict(
  width = 2,
  color = 'b'
  )
  )
)

data = [trace1, trace0]

layout = dict(title = 'Styled Scatter',
  yaxis = dict(zeroline = True),
  xaxis = dict(zeroline = True),
  paper_bgcolor='rgb(254, 247, 234)',
  plot_bgcolor='rgb(254, 247, 234)',
  )

fig = dict(data=data, layout=layout)
py.iplot(fig, filename='styled-scatter')


另外要提的就是,plotly如果用online一天只能在ide上使用50次,web上100次,除非付費.
但用offline就可以一直用了~
這封郵件來自 Evernote。Evernote 是您專屬的工作空間,免費下載 Evernote

0 意見:

張貼留言

Contact

Get in touch with me


Adress/Street

12 Street West Victoria 1234 Australia

Phone number

+(12) 3456 789

Website

www.johnsmith.com