分享方式:


教學課程:建立 R 支援的 Power BI 視覺效果

身為開發人員,您可以建立屬於自己的 Power BI 視覺效果。 這些視覺效果可以由您、您的組織,或是第三方使用。

本文是為 Power BI 建立 R 支援的視覺效果的逐步指南。

在本教學課程中,您會了解如何:

  • 建立 R 支援的視覺效果
  • 在 Power BI Desktop 中編輯 R 指令碼
  • 將程式庫新增至視覺效果的相依性檔案
  • 新增靜態屬性

必要條件

開始使用

  1. 為視覺效果準備一些範例資料。 您可以將這些值儲存至 Excel 資料庫或 .csv 檔案,然後將其匯入至 Power BI Desktop

    MonthNo 總單位數
    1 2303
    2 2319
    3 1732
    4 1615
    5 1427
    6 2253
    7 1147
    8 1515
    9 2516
    10 3131
    11 3170
    12 2762
  2. 若要建立視覺效果,請開啟 PowerShell終端機,然後執行下列命令:

    pbiviz new rVisualSample -t rvisual
    

    此命令會為 rVisualSample 視覺效果建立新的資料夾。 結構是以 rvisual 範本為基礎。 其會在視覺效果的根資料夾中建立一個稱為 script.r 的檔案。 此檔案會保留為了在轉譯視覺效果時產生影像而執行的 R 指令碼。 您可以在 Power BI Desktop 中建立 R 指令碼。

  3. 從新建的 rVisualSample 目錄中執行下列命令:

    pbiviz start
    
  4. Power BI Desktop 中,選取 [R 指令碼視覺效果]

    Power BI Desktop 中 R 指令碼視覺效果控制項的螢幕擷取畫面。

  5. 藉由將 [MonthNo] 和 [總單位數] 拖曳至視覺效果的 [值],將資料指派給開發人員視覺效果。

    顯示在何處將資料新增至值的螢幕擷取畫面。

  6. 將 [總單位數] 的彙總類型設定為 [不摘要]

    功能表的螢幕快照,其中包含不摘要資料的選項。

  7. Power BI Desktop 中的 R 指令碼編輯器,輸入下列命令:

    plot(dataset)
    

    此命令會使用語意模型中的值做為輸入來建立散佈圖。

  8. 選取執行指令碼圖示以查看結果。

    R 視覺效果圖表與資料的螢幕擷取畫面。

編輯 R 指令碼

您可以修改 R 指令碼來建立其他類型的視覺效果。 讓我們接下來建立折線圖。

  1. 將下列 R 程式碼貼入 R 指令碼編輯器

    x <- dataset[,1] # get the first column from semantic model
    y <- dataset[,2] # get the second column from semantic model
    
    columnNames = colnames(dataset) # get column names
    
    plot(x, y, type="n", xlab=columnNames[1], ylab=columnNames[2]) # draw empty plot with axis and labels only
    lines(x, y, col="green") # draw line plot
    
  2. 選取執行指令碼圖示以查看結果。

    螢幕擷取畫面顯示執行指令碼的結果,這是折線圖。

  3. 當您的 R 指令碼就緒時,請將其複製到位於視覺效果專案根目錄的 script.r 檔案。

  4. capabilities.json 檔案中,將 dataRoles: name 變更為 dataset,並將 dataViewMappings 輸入設定為 dataset

    {
      "dataRoles": [
        {
          "displayName": "Values",
          "kind": "GroupingOrMeasure",
          "name": "dataset"
        }
      ],
      "dataViewMappings": [
        {
          "scriptResult": {
            "dataInput": {
              "table": {
                "rows": {
                  "select": [
                    {
                      "for": {
                        "in": "dataset"
                      }
                    }
                  ],
                  "dataReductionAlgorithm": {
                    "top": {}
                  }
                }
              }
            },
            ...
          }
        }
      ],
    }
    
  5. 新增下列程式碼,以支援在 src/visual.ts 檔案中調整影像大小。

      public onResizing(finalViewport: IViewport): void {
          this.imageDiv.style.height = finalViewport.height + "px";
          this.imageDiv.style.width = finalViewport.width + "px";
          this.imageElement.style.height = finalViewport.height + "px";
          this.imageElement.style.width = finalViewport.width + "px";
      }
    

將程式庫新增至視覺效果套件

corrplot 套件會建立相互關聯矩陣的圖形化顯示。 如需 corrplot 的詳細資訊,請參閱 An Introduction to corrplot Package (corrplot 套件簡介)。

  1. corrplot 程式庫相依性新增至 dependencies.json 檔案。 以下是檔案內容的範例:

    {
      "cranPackages": [
        {
          "name": "corrplot",
          "displayName": "corrplot",
          "url": "https://cran.r-project.org/web/packages/corrplot/"
        }
      ]
    }
    
  2. 現在,您可以在 script.r 檔案中開始使用 corrplot 套件。

    library(corrplot)
    corr <- cor(dataset)
    corrplot(corr, method="circle", order = "hclust")
    

    使用 corrplot 套件的結果如下列範例所示:

    視覺效果窗格的螢幕擷取畫面,其中具有 corrplot 所建立的四個橢圓形。

將靜態屬性新增至屬性窗格

既然我們有了基本的 corrplot 視覺效果,就讓我們將屬性新增至屬性窗格,讓使用者能夠變更視覺效果的外觀和風格。

我們會使用 method 引數來設定資料點的圖形。 預設指令碼會使用圓形。 請修改視覺效果,讓使用者在數個選項之間進行選擇。

  1. capabilities.json 檔案中定義稱為「設定」object,並為其提供下列屬性。

    "settings": {
      "properties": {
        "method": {
          "type": {
            "enumeration": [
              { "value": "circle" },
              { "value": "square" },
              { "value": "ellipse" },
              { "value": "number" },
              { "value": "shade" },
              { "value": "color" },
              { "value": "pie" }
            ]
          }
        }
      }
    }
    
  2. 開啟 src/settings.ts 檔案。 使用公用屬性 methodnamedisplayNameslices 建立 VisualCardSettings 類別,如下列程式碼方塊中所示。

    import ItemDropdown = formattingSettings.ItemDropdown;
    
    const methodOptions = [
        {
            displayName: "Circle",
            value: "circle"
        },
        {
            displayName: "Square",
            value: "square"
        },
        {
            displayName: "Ellipse",
            value: "ellipse"
        },
        {
            displayName: "Number",
            value: "number"
        },
        {
            displayName: "Shade",
            value: "shade"
        },
        {
            displayName: "Color",
            value: "color"
        },
        {
            displayName: "Pie",
            value: "pie"
        }
    ]
    
    class VisualCardSettings extends FormattingSettingsCard {
        method: FormattingSettingsSlice = new ItemDropdown({
            name: "method",
            displayName: "Method",
            items: methodOptions,
            value: methodOptions[0]
        });
    
        name: string = "settings";
        displayName: string = "Settings";
        slices: Array<FormattingSettingsSlice> = [this.method];
    }
    

    在這些步驟之後,您可變更視覺效果的屬性。

    R 視覺效果設定的螢幕擷取畫面。

    最後,R 指令碼必須具有預設屬性。 如果使用者未變更屬性值 (在此案例中,指的是圖形設定),視覺效果會使用此值。

    針對屬性的 R 執行階段變數,命名慣例為 <objectname>_<propertyname>,在此案例中為 settings_method

  3. 執行下列 R 指令碼:

    library(corrplot)
    corr <- cor(dataset)
    
    if (!exists("settings_method"))
    {
        settings_method = "circle";
    }
    
    corrplot(corr, method=settings_method, order = "hclust")
    

封裝並匯入您的視覺效果

現在您可以封裝視覺效果,並將其匯入至任何 Power BI 報表。

  1. 填入 displayNamesupportUrldescription、作者的 nameemail,以及 pbivis.json 檔案中的任何其他重要資訊。

  2. 如果您想要變更視覺效果窗格上的視覺效果圖示,請取代 assets 資料夾中的 icon.png 檔案。

  3. 從視覺效果的根目錄執行:

    pbiviz package
    

    如需封裝視覺效果的詳細資訊,請參閱封裝自訂視覺效果

  4. 將視覺效果的 pbiviz 檔案匯入至任何 Power BI 報表。 如需如何這樣做的指示,請參閱將視覺效果檔案從本機電腦匯入至 Power BI

  5. 最終的視覺效果看起來如下列範例所示:

R 視覺效果設定值已變更的螢幕擷取畫面。