python極坐標圖,python極坐標圖畫光滑曲線

本文目錄一覽:

python可視化神器——pyecharts庫

無意中從今日頭條中看到的一篇文章,可以生成簡單的圖表。據說一些大數據開發們也是經常用類似的圖表庫,畢竟有現成的,改造下就行,誰會去自己造輪子呢。

pyecharts是什麼?

pyecharts 是一個用於生成 Echarts 圖表的類庫。Echarts 是百度開源的一個數據可視化 JS 庫。用 Echarts 生成的圖可視化效果非常棒, pyecharts 是為了與 Python 進行對接,方便在 Python 中直接使用數據生成圖 。使用pyecharts可以生成獨立的網頁,也可以在flask、django中集成使用。

安裝很簡單:pip install pyecharts

如需使用 Jupyter Notebook 來展示圖表,只需要調用自身實例即可,同時兼容 Python2 和 Python3 的 Jupyter Notebook 環境。所有圖表均可正常顯示,與瀏覽器一致的交互體驗,簡直不要太強大。

參考自pyecharts官方文檔:

首先開始來繪製你的第一個圖表

使用 Jupyter Notebook 來展示圖表,只需要調用自身實例即可

add() 主要方法,用於添加圖表的數據和設置各種配置項

render() 默認將會在根目錄下生成一個 render.html 的文件,文件用瀏覽器打開。

使用主題

自 0.5.2+ 起,pyecharts 支持更換主體色系

使用 pyecharts-snapshot 插件

如果想直接將圖片保存為 png, pdf, gif 格式的文件,可以使用 pyecharts-snapshot。使用該插件請確保你的系統上已經安裝了 Nodejs 環境。

安裝 phantomjs $ npm install -g phantomjs-prebuilt

安裝 pyecharts-snapshot $ pip install pyecharts-snapshot

調用 render 方法 bar.render(path=’snapshot.png’) 文件結尾可以為 svg/jpeg/png/pdf/gif。請注意,svg 文件需要你在初始化 bar 的時候設置 renderer=’svg’。

圖形繪製過程

基本上所有的圖表類型都是這樣繪製的:

chart_name = Type() 初始化具體類型圖表。

add() 添加數據及配置項。

render() 生成本地文件(html/svg/jpeg/png/pdf/gif)。

add() 數據一般為兩個列表(長度一致)。如果你的數據是字典或者是帶元組的字典。可利用 cast() 方法轉換。

多次顯示圖表

從 v0.4.0+ 開始,pyecharts 重構了渲染的內部邏輯,改善效率。推薦使用以下方式顯示多個圖表。如果使是 Numpy 或者 Pandas,可以參考這個示例

當然你也可以採用更加酷炫的方式,使用 Jupyter Notebook 來展示圖表,matplotlib 有的,pyecharts 也會有的

Note: 從 v0.1.9.2 版本開始,廢棄 render_notebook() 方法,現已採用更加  pythonic  的做法。直接調用本身實例就可以了。

比如這樣

還有這樣

如果使用的是自定義類,直接調用自定義類示例即可

圖表配置

圖形初始化

通用配置項

xyAxis:平面直角坐標系中的 x、y 軸。(Line、Bar、Scatter、EffectScatter、Kline)

dataZoom:dataZoom 組件 用於區域縮放,從而能自由關注細節的數據信息,或者概覽數據整體,或者去除離群點的影響。(Line、Bar、Scatter、EffectScatter、Kline、Boxplot)

legend:圖例組件。圖例組件展現了不同系列的標記(symbol),顏色和名字。可以通過點擊圖例控制哪些系列不顯示。

label:圖形上的文本標籤,可用於說明圖形的一些數據信息,比如值,名稱等。

lineStyle:帶線圖形的線的風格選項(Line、Polar、Radar、Graph、Parallel)

grid3D:3D笛卡爾坐標系組配置項,適用於 3D 圖形。(Bar3D, Line3D, Scatter3D)

axis3D:3D 笛卡爾坐標系 X,Y,Z 軸配置項,適用於 3D 圖形。(Bar3D, Line3D, Scatter3D)

visualMap:是視覺映射組件,用於進行『視覺編碼』,也就是將數據映射到視覺元素(視覺通道)

markLinemarkPoint:圖形標記組件,用於標記指定的特殊數據,有標記線和標記點兩種。(Bar、Line、Kline)

tooltip:提示框組件,用於移動或點擊鼠標時彈出數據內容

toolbox:右側實用工具箱

圖表詳細

Bar(柱狀圖/條形圖)

Bar3D(3D 柱狀圖)

Boxplot(箱形圖)

EffectScatter(帶有漣漪特效動畫的散點圖)

Funnel(漏斗圖)

Gauge(儀錶盤)

Geo(地理坐標系)

GeoLines(地理坐標系線圖)

Graph(關係圖)

HeatMap(熱力圖)

Kline/Candlestick(K線圖)

Line(折線/面積圖)

Line3D(3D 折線圖)

Liquid(水球圖)

Map(地圖)

Parallel(平行坐標系)

Pie(餅圖)

Polar(極坐標系)

Radar(雷達圖)

Sankey(桑基圖)

Scatter(散點圖)

Scatter3D(3D 散點圖)

ThemeRiver(主題河流圖)

TreeMap(矩形樹圖)

WordCloud(詞雲圖)

用戶自定義

Grid 類:並行顯示多張圖

Overlap 類:結合不同類型圖表疊加畫在同張圖上

Page 類:同一網頁按順序展示多圖

Timeline 類:提供時間線輪播多張圖

統一風格

註:pyecharts v0.3.2以後,pyecharts 將不再自帶地圖 js 文件。如用戶需要用到地圖圖表,可自行安裝對應的地圖文件包。

地圖文件被分成了三個 Python 包,分別為:

全球國家地圖:

echarts-countries-pypkg

中國省級地圖:

echarts-china-provinces-pypkg

中國市級地圖:

echarts-china-cities-pypkg

直接使用python的pip安裝

但是這裡大家一定要注意,安裝完地圖包以後一定要重啟jupyter notebook,不然是無法顯示地圖的。

顯示如下:

總得來說,這是一個非常強大的可視化庫,既可以集成在flask、Django開發中,也可以在做數據分析的時候單獨使用,實在是居家旅行的必備神器啊

Python氣象數據處理與繪圖(12):軌跡(颱風路徑,寒潮路徑,水汽軌跡)繪製

寒潮是筆者主要的研究方向,寒潮路徑作為寒潮重要的特徵,是寒潮預報的重點之一,同樣的道理也適用在颱風研究以及降水的水汽來源研究中。關於路徑的計算以及獲取方法(比如軌跡倒推,模型追蹤等等方法,颱風有自己現成的數據集,比如ibtracs數據集等等)並不在本文的介紹範圍之內,本文主要介紹在獲取了相應的路徑坐標後,如何在圖中美觀的展現。

上圖展現了近40年東北亞區域的冬季冷空氣活動路徑,繪製這類圖需要的數據只需為每條路徑的N個三維坐標點,第一第二維分別為longitude和latitudee,第三維則比較隨意,根據需要選擇,比如說需要體現高度,那就用高度坐標,需要體現冷空氣強度,那就用溫度數據,水汽可以用相對濕度,颱風也可以用速度等等。

通常此類數據是由.txt(.csv)等格式存儲的,讀取和處理方法可參考我的“Python氣象數據處理與繪圖(1):數據讀取”,本文主要介紹繪圖部分。

當然根據需要,也可以直接繪製兩維的軌跡,即取消掉顏色數組,用最簡單的plot語句,循環繪製即可。

有一個陷阱需要大家注意的是,當軌跡跨越了東西半球時,即穿越了0°或者360°經線時,它的連接方式是反向繞一圈,比如下圖所示,你想要藍色的軌跡,然而很有可能得到綠色的,這是因為你的網格數組的邊界是斷點,系統不會自動識別最短路徑,只會在數組中直接想連,因為這不是循環數組。

我目前的解決辦法是這樣的:如果你的數據是0°-360°格式,那麼變為-180°-180°的格式,反之相互轉換。但是如果你的數據兩種都出現了斷點,也就是繞了地球一圈多,那無論怎樣都么得辦法了,我目前的思路是將數據轉換成極坐標數據格式,理論上是可行的,CARTOPY的繪圖也是支持極坐標數據的,具體實施還需要再試試。

Python 將直角坐標轉換為極坐標

注意:在有些數據中,經緯度會以負數的形式存在,用來區分東西經度和南北緯度的,需要考慮進去。可以先取絕對值,然後在進行坐標變換。

Python氣象數據處理與繪圖(18):泰勒圖

泰勒圖繪製的核心思想是設計一個只有第一象限的極坐標,並將方差,相關係數進行捆綁,通過轉化為極坐標系坐標進行繪製。為了實現泰勒圖的繪製,我設計了兩個函數:

set_tayloraxes(fig, location=111) 和plot_taylor(axes, refsample, sample, args, *kwargs)

set_tayloraxes()函數用於建立一個泰勒圖的坐標系,這個自定義函數一般情況下不建議修改,每一個參數都是經過多次調試得到的,很可能牽一髮動全身。因此,將繪圖部分的獨立成為了plot_taylor函數(),這部分函數較為簡單,目的就是將需要繪圖的數據,轉換為極坐標系坐標,通過plot函數將散點打在泰勒圖上,這個函數模塊較為簡單,可以根據自己的輸入數據情況進行調整。

下面介紹下函數的具體用法:

輸入:

fig: 需要繪圖的figure

rect:圖的位置,如111為1行1列第一個,122為1行2列第2個

輸出:

polar_ax:泰勒坐標系

輸入:

axes : setup_axes返回的泰勒坐標系

refsample :參照樣本

sample :評估樣本

args, *kwargs :plt.plot()函數的相關參數,設置點的顏色,形狀等等。

下面給出示例:

哪位大哥幫我用Python把它變成極坐標顯示的那種(就是在圓上面展示出來各個角度出現的頻率),我沒有寫出

樓主是否說的是雷達圖呢?

from pyecharts import Radar

radar = Radar(“區間分布”, “風的頻率雷達圖”)

radar_data1 = [[0,1,2,5]]#這裡是y坐標

schema = [

    (“[0,00~22.50]”,11), (“[22.50~45.00]”,11), (“[45.00~67.50]”,11),#這個11是單位間隔

    (“[67.50~90.00]”,11)#傳入x的坐標,這裡是區間的名字

]

#傳入坐標

radar.config(schema)

radar.add(“出現次數”,radar_data1,item_color=”#1C86EE”)

radar.render()

運行後會產生一個render.html

結果為

剩下的坐標我就懶得打啦,樓主不介意的吧~

強烈推薦一款Python可視化神器!強烈必備!

Plotly Express 是一個新的高級 Python 可視化庫:它是 Plotly.py 的高級封裝,它為複雜的圖表提供了一個簡單的語法。

受 Seaborn 和 ggplot2 的啟發,它專門設計為具有簡潔,一致且易於學習的 API :只需一次導入,您就可以在一個函數調用中創建豐富的交互式繪圖,包括分面繪圖(faceting)、地圖、動畫和趨勢線。 它帶有數據集、顏色面板和主題,就像 Plotly.py 一樣。

Plotly Express 完全免費:憑藉其寬鬆的開源 MIT 許可證,您可以隨意使用它(是的,甚至在商業產品中!)。

最重要的是,Plotly Express 與 Plotly 生態系統的其他部分完全兼容:在您的 Dash 應用程序中使用它,使用 Orca 將您的數據導出為幾乎任何文件格式,或使用JupyterLab 圖表編輯器在 GUI 中編輯它們!

用 pip install plotly_express 命令可以安裝 Plotly Express。

一旦導入Plotly Express(通常是 px ),大多數繪圖只需要一個函數調用,接受一個整潔的Pandas dataframe,並簡單描述你想要製作的圖。 如果你想要一個基本的散點圖,它只是 px.scatter(data,x =“column_name”,y =“column_name”)。

以下是內置的 Gapminder 數據集的示例,顯示2007年按國家/地區的人均預期壽命和人均GDP 之間的趨勢:

如果你想通過大陸區分它們,你可以使用 color 參數為你的點着色,由 px 負責設置默認顏色,設置圖例等:

這裡的每一點都是一個國家,所以也許我們想要按國家人口來衡量這些點…… 沒問題:這裡也有一個參數來設置,它被稱為 size:

如果你好奇哪個國家對應哪個點? 可以添加一個 hover_name ,您可以輕鬆識別任何一點:只需將鼠標放在您感興趣的點上即可! 事實上,即使沒有 hover_name ,整個圖表也是互動的:

也可以通過 facet_col =”continent“ 來輕鬆劃分各大洲,就像着色點一樣容易,並且讓我們使用 x軸 對數(log_x)以便在我們在圖表中看的更清晰:

也許你不僅僅對 2007年 感興趣,而且你想看看這張圖表是如何隨着時間的推移而演變的。 可以通過設置 animation_frame=“year” (以及 animation_group =“country” 來標識哪些圓與控制條中的年份匹配)來設置動畫。

在這個最終版本中,讓我們在這裡調整一些顯示,因為像“gdpPercap” 這樣的文本有點難看,即使它是我們的數據框列的名稱。 我們可以提供更漂亮的“標籤” (labels),可以在整個圖表、圖例、標題軸和懸停(hovers)中應用。 我們還可以手動設置邊界,以便動畫在整個過程中看起來更棒:

因為這是地理數據,我們也可以將其表示為動畫地圖,因此這清楚地表明 Plotly Express 不僅僅可以繪製散點圖(不過這個數據集缺少前蘇聯的數據)。

事實上,Plotly Express 支持三維散點圖、三維線形圖、極坐標和地圖上三元坐標以及二維坐標。 條形圖(Bar)有二維笛卡爾和極坐標風格。

進行可視化時,您可以使用單變量設置中的直方圖(histograms)和箱形圖(box)或小提琴圖(violin plots),或雙變量分布的密度等高線圖(density contours)。 大多數二維笛卡爾圖接受連續或分類數據,並自動處理日期/時間數據。 可以查看我們的圖庫 (ref-3) 來了解每個圖表的例子。

數據 探索 的主要部分是理解數據集中值的分布,以及這些分布如何相互關聯。 Plotly Express 有許多功能來處理這些任務。

使用直方圖(histograms),箱形圖(box)或小提琴圖(violin plots)可視化單變量分布:

直方圖:

箱形圖:

小提琴圖:

還可以創建聯合分布圖(marginal rugs),使用直方圖,箱形圖(box)或小提琴來顯示雙變量分布,也可以添加趨勢線。 Plotly Express 甚至可以幫助你在懸停框中添加線條公式和R²值! 它使用 statsmodels 進行普通最小二乘(OLS)回歸或局部加權散點圖平滑(LOWESS)。

在上面的一些圖中你會注意到一些不錯的色標。 在 Plotly Express 中, px.colors 模塊包含許多有用的色標和序列:定性的、序列型的、離散的、循環的以及所有您喜歡的開源包:ColorBrewer、cmocean 和 Carto 。 我們還提供了一些功能來製作可瀏覽的樣本供您欣賞(ref-3):

定性的顏色序列:

眾多內置順序色標中的一部分:

我們特別為我們的交互式多維圖表感到自豪,例如散點圖矩陣(SPLOMS)、平行坐標和我們稱之為並行類別的並行集。 通過這些,您可以在單個圖中可視化整個數據集以進行數據 探索 。 在你的Jupyter 筆記本中查看這些單行及其啟用的交互:

散點圖矩陣(SPLOM)允許您可視化多個鏈接的散點圖:數據集中的每個變量與其他變量的關係。 數據集中的每一行都顯示為每個圖中的一個點。 你可以進行縮放、平移或選擇操作,你會發現所有圖都鏈接在一起!

平行坐標允許您同時顯示3個以上的連續變量。 dataframe 中的每一行都是一行。 您可以拖動尺寸以重新排序它們並選擇值範圍之間的交叉點。

並行類別是並行坐標的分類模擬:使用它們可視化數據集中多組類別之間的關係。

Plotly Express 之於 Plotly.py 類似 Seaborn 之於 matplotlib:Plotly Express 是一個高級封裝庫,允許您快速創建圖表,然後使用底層 API 和生態系統的強大功能進行修改。 對於Plotly 生態系統,這意味着一旦您使用 Plotly Express 創建了一個圖形,您就可以使用Themes,使用 FigureWidgets 進行命令性編輯,使用 Orca 將其導出為幾乎任何文件格式,或者在我們的 GUI JupyterLab 圖表編輯器中編輯它 。

主題(Themes)允許您控制圖形範圍的設置,如邊距、字體、背景顏色、刻度定位等。 您可以使用模板參數應用任何命名的主題或主題對象:

有三個內置的 Plotly 主題可以使用, 分別是 plotly, plotlywhite 和 plotlydark。

px 輸出繼承自 Plotly.py 的 Figure 類 ExpressFigure 的對象,這意味着你可以使用任何 Figure 的訪問器和方法來改變 px生成的繪圖。 例如,您可以將 .update() 調用鏈接到 px 調用以更改圖例設置並添加註釋。 .update() 現在返回修改後的數字,所以你仍然可以在一個很長的 Python 語句中執行此操作:

在這裡,在使用 Plotly Express 生成原始圖形之後,我們使用 Plotly.py 的 API 來更改一些圖例設置並添加註釋。

Dash 是 Plotly 的開源框架,用於構建具有 Plotly.py 圖表的分析應用程序和儀錶板。Plotly Express 產生的對象與 Dash 100%兼容,只需將它們直接傳遞到 dash_core_components.Graph,如下所示: dcc.Graph(figure = px.scatter(…))。 這是一個非常簡單的 50行 Dash 應用程序的示例,它使用 px 生成其中的圖表:

這個 50 行的 Dash 應用程序使用 Plotly Express 生成用於瀏覽數據集的 UI 。

可視化數據有很多原因:有時您想要提供一些想法或結果,並且您希望對圖表的每個方面施加很多控制,有時您希望快速查看兩個變量之間的關係。 這是交互與 探索 的範疇。

Plotly.py 已經發展成為一個非常強大的可視化交互工具:它可以讓你控制圖形的幾乎每個方面,從圖例的位置到刻度的長度。 不幸的是,這種控制的代價是冗長的:有時可能需要多行 Python 代碼才能用 Plotly.py 生成圖表。

我們使用 Plotly Express 的主要目標是使 Plotly.py 更容易用於 探索 和快速迭代。

我們想要構建一個庫,它做出了不同的權衡:在可視化過程的早期犧牲一些控制措施來換取一個不那麼詳細的 API,允許你在一行 Python 代碼中製作各種各樣的圖表。 然而,正如我們上面所示,該控件並沒有消失:你仍然可以使用底層的 Plotly.py 的 API 來調整和優化用 Plotly Express 製作的圖表。

支持這種簡潔 API 的主要設計決策之一是所有 Plotly Express 的函數都接受“整潔”的 dataframe 作為輸入。 每個 Plotly Express 函數都體現了dataframe 中行與單個或分組標記的清晰映射,並具有圖形啟發的語法簽名,可讓您直接映射這些標記的變量,如 x 或 y 位置、顏色、大小、 facet-column 甚至是 動畫幀到數據框(dataframe)中的列。 當您鍵入 px.scatter(data,x =’col1’,y=’col2’) 時,Plotly Express 會為數據框中的每一行創建一個小符號標記 – 這就是 px.scatter 的作用 – 並將 “col1” 映射到 x 位置(類似於 y 位置)。 這種方法的強大之處在於它以相同的方式處理所有可視化變量:您可以將數據框列映射到顏色,然後通過更改參數來改變您的想法並將其映射到大小或進行行分面(facet-row)。

接受整個整潔的 dataframe 的列名作為輸入(而不是原始的 numpy 向量)也允許 px 為你節省大量的時間,因為它知道列的名稱,它可以生成所有的 Plotly.py 配置用於標記圖例、軸、懸停框、構面甚至動畫幀。 但是,如上所述,如果你的 dataframe 的列被笨拙地命名,你可以告訴 px 用每個函數的 labels 參數替換更好的。

僅接受整潔輸入所帶來的最終優勢是它更直接地支持快速迭代:您整理一次數據集,從那裡可以使用 px 創建數十種不同類型的圖表,包括在 SPLOM 中可視化多個維度 、使用平行坐標、在地圖上繪製,在二維、三維極坐標或三維坐標中使用等,所有這些都不需要重塑您的數據!

在 API 級別,我們在 px 中投入了大量的工作,以確保所有參數都被命名,以便在鍵入時最大限度地發現:所有 scatter -類似的函數都以 scatter 開頭(例如 scatter_polar, scatter_ternary)所以你可以通過自動補全來發現它們。 我們選擇拆分這些不同的散點圖函數,因此每個散點圖函數都會接受一組定製的關鍵字參數,特別是它們的坐標系。 也就是說,共享坐標系的函數集(例如 scatter, line & bar,或 scatter_polar, line_polar 和 bar_polar )也有相同的參數,以最大限度地方便學習。 我們還花了很多精力來提出簡短而富有表現力的名稱,這些名稱很好地映射到底層的 Plotly.py 屬性,以便於在工作流程中稍後調整到交互的圖表中。

最後,Plotly Express 作為一個新的 Python 可視化庫,在 Plotly 生態系統下,將會迅速發展。所以不要猶豫,立即開始使用 Plotly Express 吧!

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/311186.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2025-01-05 13:23
下一篇 2025-01-05 13:23

相關推薦

  • 如何求直線與曲線的交點

    對於數學問題來說,求直線與曲線的交點可能是其中一種最基本的問題之一。在本文中,我們將從多個方面詳細闡述關於求解直線與曲線交點的方法。 一、解析幾何方法 解析幾何是數學中比較基礎的一…

    編程 2025-04-29
  • Python實現平滑曲線繪製

    平滑曲線是一種常用的數據可視化手段,它能夠有效地降低數據的噪聲,凸顯數據的趨勢。Python是一種通用的編程語言,它有着強大的數據處理和可視化能力。在Python中,matplot…

    編程 2025-04-27
  • Python貝塞爾曲線擬合

    本篇文章將從以下幾個方面對Python貝塞爾曲線擬合進行闡述。 一、什麼是貝塞爾曲線 貝塞爾曲線是一種矢量圖形曲線,由兩個端點和一組控制點描述,曲線由這些點定義並插值。貝塞爾曲線常…

    編程 2025-04-27
  • Python ROC曲線用法介紹

    ROC曲線是機器學習領域中常用的性能評價指標,本文將從多個方面對Python ROC曲線進行詳細的闡述。 一、ROC曲線概述 ROC曲線全稱為“接收者操作特徵曲線”(Receive…

    編程 2025-04-25
  • 極坐標變換詳解

    一、極坐標變換公式 極坐標變換是將平面直角坐標系中的點用極坐標表示的變換,極坐標變換公式如下: x = r * cosθ y = r * sinθ 其中,x、y為平面直角坐標系中某…

    編程 2025-04-25
  • 貝塞爾曲線(Bezier Curve)

    當我們談論計算機繪圖時,繪製平面圖形和線條可能是最常見的需求。但是,創建自然線條並不總是容易的,特別是需要曲線而不是僅僅是筆直線條的情況下。這時候,貝塞爾曲線(Bezier Cur…

    編程 2025-04-24
  • PR曲線詳解

    一、PR曲線概述 PR曲線(Precision-Recall Curve),是機器學習中廣泛使用的一種性能評價指標。在二分類問題中,我們往往需要評估一個模型的準確率和召回率。但在實…

    編程 2025-04-23
  • 極坐標轉換

    一、什麼是極坐標 極坐標是一種二維坐標系,使用徑向距離和角度來表示平面上的點。在計算幾何和工程領域廣泛應用。 在極坐標中,點的位置由徑向距離(r)和極角(θ)確定。極角是點與正方向…

    編程 2025-04-22
  • 深入了解DOTween曲線

    一、DOTween概述 DOTween是一個高效、優雅、簡單易用的Tweening引擎,提供了豐富的Tweening功能。其中,Tweening就是在兩個值之間創建自然的、平滑的過…

    編程 2025-04-12
  • matlab極坐標繪圖函數全面解析

    極坐標繪圖是一種相對於直角坐標系的曲線坐標系,其標誌是使用極角和極徑來表示點的坐標。在matlab中,使用polar函數可以輕鬆地實現極坐標繪圖。本文將從多個方面深入分析matla…

    編程 2025-04-12

發表回復

登錄後才能評論