發表文章

R語言(reticulate)調用 Python MQTT套件

markdown ![](https://hackmd.io/_uploads/BktVwiIPF.png) R是我最常用的程式語言然而並沒有MQTT的相關套件可以使用 所以使用reticulate調用Python的paho-mqtt套件 來達成一些R語言做不到的東西 首先先安裝paho-mqtt的套件資料 `pip3 install paho-mqtt` 在Rstudio中可以直接調用Terminal編輯器 執行Python的標準庫管理器(pip3)安裝套件超方便 ![](https://hackmd.io/_uploads/ry5tJR58F.png) 安裝與載入reticulate套件 這套件可以很簡單調用Python相關資源 包括在Rmackdown中就是使用reticulate套件執行python程式區的程式碼 ```r= install.packages("reticulate") library(reticulate) ``` ### 載入python paho-mqtt套件 ```r= mqtt <- import("paho.mqtt.subscribe") ``` 等於python的 ```python= from paho.mqtt import subscribe as mqtt ``` #### 調用套件函數訂閱MQTT 使用paho.mqtt.subscribe套件提供的simple函數訂閱MQTT的 Topic ```r= AHB0222 <- mqtt$simple("AHB0222/test", hostname="mqtt.eclipseprojects.io") ``` 等於python的 ```python= AHB0222 = mqtt.simple("AHB0222/test", hostname="mqtt.eclipseprojects.io") ``` ![](https://hackmd.io/_uploads/Byrg6q8PK.png) 執行訂閱後會處於執行狀態直到有訊息進來 ![](https://hackmd.io/_uploads/HJdJ8oUDt.pn

Excel 甘特圖摺疊儲存格與群組功能

markdowm ==此處為文章備份用== 有興趣可至 [https://hackmd.io/@LHB-0222/Excel-Gantt](https://hackmd.io/@LHB-0222/Excel-Gantt) 觀看全文 紀錄一下在社群解決的問題 今天有網友詢問如何在Excel實現甘特圖的摺疊功能 我這邊使用Excel內建的模板來測試給大家看 # 方法-1 內建群組功能 優點:+1: : 方便快速 缺點:-1: : 儲存格設定間隔 ![](https://i.imgur.com/Dhp1Bjd.png) ![](https://i.imgur.com/NIBiT9W.gif) # 方法-2 VBA搭配核選方塊 設定核選方塊連結 ![](https://i.imgur.com/VDoeirl.png) #設定巨集依照需求增減 ```c= Sub 巨集1() ' ' 巨集1 巨集 ' ' If Range("A5").Value = "True" Then '判斷核選方塊連結資料位置是否為True Rows("5:11").Select '連結資料位置為True選取預隱藏列號 Selection.EntireRow.Hidden = True '隱藏儲存格 Range("A1").Select '指向A1儲存格 Else '連結資料位置不是True則 Rows("5:11").Select '選取隱藏列號 Selection.EntireRow.Hidden = False '取消隱藏儲存格 Range("A1").Select End If End Sub ``` 指定巨集 ![](https://i.imgur.com/jTvUEOn.png) 測試 ![](https://i.imgur.com/fivlJsN.gif) 🌟全文可以至下方連結觀看或是補充 全文分享至 https://www.facebook.

Python基本認識與R的比較

markdowm ==此處為文章備份用== 有興趣可至 [https://hackmd.io/@LHB-0222/Python_Base ](https://hackmd.io/@LHB-0222/Python_Base) 觀看全文 學習R也有三年多了 在使用的過程中也常接觸到Python 兩者語法與使用上有許多差異 這算是第一篇學習紀錄Python的文章 希望將兩者的差異進行一個比較以利後續再使用上不會有混淆的狀況 [TOC] ## 註解符號# 與R語言一樣註解可以使用井字號 ==#== 但不同的是多了一個多行註解的方式 在上下三個單引號或是雙引號間的文字都為註解 ```python= """ print("A") """ #print("B") print("C") ``` :::success C ::: ## 變數命名 在python中變數的賦值是使用等號 **=** 而並非R常用的小於減號 ==<-== 在變數的命名上為使用大小寫英文字母、底線 ==_== 、以及數字所組成 當然也可以用中文字但建議少用 最大的不同地方在於==小數點無法==作為變數使用 參考[R編程風格指南](/49YB_TibQq2KoDYLJyciMg)中的範例**R**的變數命名為下方所列 - variable.name :+1: avg.clicks :-1: avg_Clicks ,avgClicks - FunctionName :+1: CalculateAvgClicks :-1: calculate_avg_clicks , calculateAvgClicks 而在**python**中變數命名可能就像下面這樣 - variablename :+1: Avg_Clicks ,AvgClicks :-1: avg.clicks - FunctionName :+1: CalculateAvgClicks :-1: calculate_avg_clicks , calculateAvgClicks # 基本計算 ## 四則運算 跟R平時所用的加(+)、減(-)、乘(*)和除(/)一樣 ```py

時間資料處理

markdown  ==此處為文章備份用== 有興趣可至 [https://hackmd.io/@LHB-0222/Rdate ](https://hackmd.io/@LHB-0222/Rdate) 觀看全文 ![](https://i.imgur.com/ruBLLMd.jpg) 在R資料處理之中,時常會需要遇到時間格式的處理 實驗數據、股市資料、氣候資訊隨著時間不斷的流逝 各式資料也不斷的生成的情況下時間的判讀就顯得重要 多數時候取得的時間資料就是一長串的數字 如何讓程式讀取時間資料以及對時間資料的處理是今天這文章的重點 # 取得時間資訊 ```R= Sys.Date() #當前日期 lubridate::today() date() #當前系統日期和時間 Sys.time() #當前系統日期和時間 lubridate::now() Sys.timezone() #有關時區的信息將返回當前時區的名稱 ``` :::success [1] "2019-12-13" [1] "Fri Dec 13 21:50:58 2019" [1] "2019-12-13 21:52:04 CST" [1] "Asia/Taipei" ::: ```R=+ head(OlsonNames()) #取得有關時區的信息、時區的名稱 ``` :::success [1] "Africa/Abidjan" "Africa/Accra" "Africa/Addis_Ababa" "Africa/Algiers" [5] "Africa/Asmara" "Africa/Asmera" ::: ## 取得特定日期或時間資訊 :::danger format(date,format): ::: ```R= #輸出年份: format(Sys.Date(),format="%Y") format(Sys.Date(),format="%y") #輸出月份: form

使用R繪製三元相圖(Ternary plot)結合等高線圖(topographic map)

markdown :::success 三元相圖是帶有三個變量的三角圖,它們通常用於化學,岩石學,礦物學,冶金學,材料科學等領域 **特色為其中任一點的三變量總合為100** ::: ![](https://i.imgur.com/CVGYPVQ.png) 首先準備好所需的數據格式 ![](https://i.imgur.com/6AsoV9t.png) 啟動Rstudio安裝所需的套件 ``` R= ## Version 1.2.1335 ## coding: utf-8 ## 繪製三元相圖(Ternary plot)結合等高線圖(topographic map) # 安裝相關套件 install.packages("AlgDesign") install.packages('ggtern') install.packages('ggplot2') install.packages('RColorBrewer') #載入相關套件 library(AlgDesign) library(ggplot2) library(RColorBrewer) library(ggtern) ``` 讀取所準備好的CSV檔 ```R=+ data_ggtern <- read.csv(file.choose()) #以視窗方式取得檔案位址 head(data_ggtern) #查看數據前6筆數據 ## 有時候數據抬頭為中文名稱時讀取後會是亂碼 ##可以利用colnames()重新命名 colnames(data_ggtern) <- c("A", "B", "C", "D") ``` 執行程式碼繪製我們需要的三元相圖 ```R=+ p <- ggtern(data = data_ggtern, aes( x = A, y = B, z = C, value = data_ggtern$D )) + theme_bw() + g

Excel必學的查表公式_Offset

markdown 在[Excel必學的查表公式_Match+Index_深入教學](https://b10231040.blogspot.com/2019/01/excelmatchindex.html)中我們介紹到利用Match+Index的組合公式 可以判斷出要找的目標在表格內相對應的資料位置並回傳 而今天將來講解一個公式 ==Offset()== 它的作用與 ==Index()== 相同 都是利用Match先將所需資料的儲存格位置找出來再回傳儲存格內容 然而 ++Index()++ 只能回傳單一儲存格 利用 ++Offset++ 就回傳附近的資料並且擁有更多彈性 **兩個函數的差異** ``` INDEX(儲存格範圍或常數陣列, 回傳列數, [回傳欄數]) OFFSET(起始參照, 移動列數, 移動欄數, [回傳高度], [回傳寬度]) ``` 用一個簡單的動畫來呈現可以看到Offset的作用與Index相近 ![](https://i.imgur.com/4NqEfj5.gif) 然而選擇後面給予[回傳高度], [回傳寬度]參數後會儲存格會出現###### 這其實並不是出函數問題 在EXCEL中出現眾多####表示無法顯示儲存格內的資料 而是這邊的問題一樣 因為給予高度或寬度回傳其他儲存格而無法在單一儲存格中顯示 ![](https://i.imgur.com/Xca8rVF.gif) 這時候在Excel中就有一名叫陣列公式的方式可以處理這問題 先圈選你要回傳的高度或寬度的儲存格範圍 並點選公式輸入的地方按下鍵盤中Ctrl + Shift + Enter的組合鍵 這樣就可以正常顯示 相同的寬度也是一樣的方式 ![](https://i.imgur.com/y1R1w5a.gif) 然而在回傳的陣列也是可以做一些計算的 例如SUM()、AVERAGE()、STDEV.S()等對單純數據加減乘除的函數 ![](https://i.imgur.com/1U7tvIN.gif) Offset可以取代Index的所有功能並能有更多的可能 今天也是大略的講解一下希望大家喜歡 <

webplotdigitizer教學_取得雷達圖數據資訊

markdown 上一篇文章中[分享提取圖表數據的神器WebPlotDigitizer](/CMDuEi_tQZGrL6yMdCCadA)發現網路上中文相關資料欠缺 所以想說可以分享一些文章給大家 今天主題是取得雷達圖的資訊 延伸[雷達圖(Log座標) R 與 Sigmaplot 繪製方法](/bxJ65G4NR5-Z8R4ezyxEzw)一文 將文章中的資料取出後對比原始數據看誤差有多少 導入圖片後選擇極地圖 ![](https://i.imgur.com/plwq9qy.png) 依照說明點選中心點與兩個已知半徑與角度的位置 ![](https://i.imgur.com/QSTfFlF.png) 中心位置沒有參考點很難對齊 ![](https://i.imgur.com/A59tXqe.png) 可以降低右上角的放大圖倍率 ![](https://i.imgur.com/fOBBeyA.png) 這樣就方便對齊中心點 ![](https://i.imgur.com/sGOVJIN.png) 後續再選出其餘兩點位置 ![](https://i.imgur.com/wt7LY8D.png) ![](https://i.imgur.com/vTWUVFK.png) 依序將資料點補上即可 ![](https://i.imgur.com/gDcWe4Z.png) 匯出至plotly繪圖後可以得到一個還不錯的結果 ![](https://i.imgur.com/FKLqsZm.png) # 擷取效果比較 簡單的與原始資料比較可以發現誤差算是非常的小 ![](https://i.imgur.com/UaaeWAy.png) 全文分享至 https://hackmd.io/@LHB-0222/webplotdigitizerRadarChart https://www.facebook.com/LHB0222/ 有疑問想討論的都歡迎於下方留言 喜歡的幫我分享給所有的朋友 \o/ 有所錯誤歡迎指教