針對繪圖方面的需求,matlab、python和R哪個更加強大?

這三個軟體都能繪圖,我目前是對matlab和python的畫圖較為熟練,但是看了一些用R的ggplot2包做的圖後,被深深的吸引了。想問下,如果針對繪圖方面的需求,做數據可視化的話,是不是R最強。


深入對比數據科學工具箱:Python和R之爭

數據可視化繪製相關性散點圖

對比數據相關性是數據探索常用的一種方法,下面是Python和R的對比。

Python

import seaborn as sns
import matplotlib.pyplot as plt
sns.pairplot(nba[["ast", "fg", "trb"]])
plt.show()

R

library(GGally)
ggpairs(nba[,c("ast", "fg", "trb")])

雖然我們最終得到了類似的圖形,這裡R中GGally是依賴於ggplot2,而Python則是在matplotlib的基礎上結合Seaborn,除了GGally在R中我們還有很多其他的類似方法來實現對比製圖,顯然R中的繪圖有更完善的生態系統。

繪製聚類效果圖

這裡以K-means為例,為了方便聚類,我們將非數值型或者有確實數據的列排除在外。

R

library(cluster)
set.seed(1)
isGoodCol &<- function(col){ sum(is.na(col)) == 0 is.numeric(col) } goodCols &<- sapply(nba, isGoodCol) clusters &<- kmeans(nba[,goodCols], centers=5) labels &<- clusters$cluster nba2d &<- prcomp(nba[,goodCols], center=TRUE) twoColumns &<- nba2d$x[,1:2] clusplot(twoColumns, labels)

Python

from sklearn.cluster import KMeans
kmeans_model = KMeans(n_clusters=5, random_state=1)
good_columns = nba._get_numeric_data().dropna(axis=1)
kmeans_model.fit(good_columns)
labels = kmeans_model.labels_

from sklearn.decomposition import PCA
pca_2 = PCA(2)
plot_columns = pca_2.fit_transform(good_columns)
plt.scatter(x=plot_columns[:,0], y=plot_columns[:,1], c=labels)
plt.show()

結論

Python 的 pandas 從 R 中偷師 dataframes,R 中的 rvest 則借鑒了 Python 的 BeautifulSoup,我們可以看出兩種語言在一定程度上存在的互補性,通常,我們認為 Python 比 R 在泛型編程上更有優勢,而 R 在數據探索、統計分析是一種更高效的獨立數據分析工具。

作為分享主義者(sharism),本人所有互聯網發布的圖文均遵從CC版權,轉載請保留作者信息並註明作者 Harry Zhu 的 FinanceR專欄:https://segmentfault.com/blog/harryprinc...,如果涉及源代碼請註明GitHub地址:harryprince (HarryZhu) · GitHub。微信號: harryzhustudio

商業使用請聯繫作者。


ggplot2確實很強,使用的圖形語法理論很有趣,一致性高。但是每個R包設計理念差太多了,萬一遇到ggplot2不容易搞定的圖(比如雙y軸),再用其他的包,學起來很花時間

另外,R的圖導出列印或直接在電腦上看總感覺怪怪的,默認色彩和曲線平滑度上比其他兩個差

matlab和python的matplotlib基礎作圖都比較簡單,語法也很像,出來的圖效果就很好,但是在基礎圖上的修改,不如ggplot2成體系、知道怎麼去找,而且matplotlib的圖形再修改感覺比matlab好一點。貌似ggplot2也要有python版了

其他複雜圖、奇怪圖,這方面R和Python大量的包就有優勢了,matlab畢竟不是免費開源,作圖的包就mathworks提供,相對來說差一點


科學論文圖表首先要規矩,符合期刊的投稿要求,然後在規矩的基礎上實現圖表的美觀和專業。在當前貫徹科技論文規範化、標準化的同時,圖表的設計也應規範化、標準化。所以,科學論文圖表的製作原則主要是規矩、簡單、美觀和專業。我們來看看不同軟體繪製的效果圖:

最後,我想說,有一款平凡的軟體能繪製這些軟體圖像的效果,但又不需要編程基礎就能實現,它就是眾所周知的 Excel。Excel才是王道!下圖就是使用Excel仿製的Python、Matlab、R繪製的散點效果圖,幾乎沒有差異。

更多信息可以關注我們的知乎專欄:

Excel數據之美:科學與商業圖表繪製指南:Excel數據之美:科學與商業圖表繪製指南 - 知乎專欄

R語言數據分析與可視化:R語言數據分析與可視化 - 知乎專欄


matplotlib說明文檔很詳細還有很多例子,ggplot文檔就不行,有些不詳細的經常要自己試很多次,matlab畫圖用得不多,也就是模擬完了畫畫曲線,沒有那些畫獵奇的圖的需求,所以平時用還挺順手的。


實際上吧,我認為更多的情況下要畫出漂亮的科技圖表,你需要的不是一種新的技術而是審美。


為什麼我會覺得是mathematica


Python做前期數據清理,R做後期數據可視化,完美結合


知乎上已經有相關問題了。請移步:如何在論文中畫出漂亮的插圖? - 軟體

那個問題差不多可以終結一切了。

前幾樓的答主都給出了非常漂亮的案例,我幫你統計了一下,前幾樓使用的工具包括:mathematica,python(matplotlib),LaTeX,R(ggplot2)

看了以後你會發現你對這幾種工具認識停留在一個非常原始的階段,簡直圖樣圖森破


你們這些我不太懂,我覺得還是Arcgis吧,在數據可視化方面比較強大,數據分析處理能力比較強大,最關鍵的是空間分析。


個人最近一直學習,覺得python並非是專用於統計或者計量的軟體,而是一種非常流行的通用編程語言。

總的來說,python為通用的編程軟體,且Linux系統一般帶的已經有python。R偏重於統計計量。

要說的是R,絕對是目前國外學術界的主流,統計系基本除R以外沒有其他了,計量作為和統計相關的方向,R也在逐漸滲透。

R的優點有較多的統計模塊和包,金融的包不少,自己可以搜索R finacial analysis之類的關鍵字。有一個很活躍的社區,可以參考stackoverflow或者cross validated,直接找關於R的tag,或者去中文的統計之都的論壇,有R的專區可以學習。


R


R的優勢在於開源免費。所有人都可以開發R包,所以基本各種圖形都可以在R中找到。R的做圖功能在ggplot中體現的淋漓盡致。用戶有很大的彈性。特別是在數據可視化中,R 的應用肯定比其餘兩者方便。另外,R可以輕鬆的和其他軟體鏈接。比如,最近很火的大數據軟體Hadoop。R可以串聯Hadoop,用戶不需要了解Hadoop語言。這樣可以節省大量學習成本。

R的劣勢也在於開源免費。每個包的開發者的標準差異極大。但是在ggplot出現之後,這種現象已經得到極大改善。因為ggplot自成一體,系統內的標準都相同。

基本沒用過Python,無法評論。

至於Matlab,我只說一句:在很多journal paper中,即使作者的程序是使用Matlab運行的,其畫圖都是用R完成的。高下立判!


R語言一方面比較快,一方面作圖確實好看,但是能作圖的種類沒有python來得多。整體來說作圖效果R&>python&>matlab,但是python的優勢在於作圖種類非常多,matlab和R能做的圖python基本都能做,而且相對美觀。建議直接用python,省的為了要畫幾個特別的圖需要去重新學一門新的語言。


推薦閱讀:

數據可視化未來的主要應用會是什麼?
如何指定matplotlib輸出圖片的尺寸?
R語言可以做哪些有趣的事情?
如何評價 D3.js 這個框架?
Processing和OSG的比較:一個是新興的語言,一個是成熟的API,它們在實現數據可視化方面到底有什麼優劣呢?

TAG:Python | MATLAB | 數據可視化 | R編程語言 | 大數據分析 |