You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Power BI自定义R可视化(PBIVIZ)动态绘图报错求助

Hey there! Let's work through your Power BI custom R visual (PBIVIZ) problems together—both fixing that "Values object does not exist" error and building the dynamic line chart you need.

1. Fixing the "Values object does not exist" Error

The 3-year-old tutorial you're using is likely referencing an older version of the PBIVIZ R template. Power BI has updated how it passes data to custom R visuals:

  • Older templates used a dedicated Values object to hold bound fields, but modern Power BI custom R visuals now use a default data frame called dataset for all your bound fields.
  • Replace every instance of Values in your code with dataset. For example, if you had df <- Values, change it to df <- dataset.
  • Double-check your pbiviz.json file to ensure your data roles are configured correctly—this ensures fields are properly loaded into the dataset frame.

2. Building a Dynamic Line Chart (No Hardcoded Column Names)

To support free field switching without hardcoding column names, we'll rely on the order of bound fields and flexible data manipulation. Here are two solid implementations:

Option 1: Base R (Lightweight, No Extra Packages)

# Exit early if no data is bound
if(nrow(dataset) == 0) return()

# Assume first bound field is X-axis (category/time), rest are Y-axis values
x_axis <- dataset[, 1]
y_series <- dataset[, -1]

# Initialize plot with first series
plot(x_axis, y_series[,1], type = "l", 
     col = 1, xlab = names(dataset)[1], ylab = "Value")

# Loop through remaining series to add lines
for(i in 2:ncol(y_series)){
  lines(x_axis, y_series[,i], col = i)
}

# Add dynamic legend using column names
legend("topright", legend = names(y_series), 
       col = 1:ncol(y_series), lty = 1)

Option 2: ggplot2 (Polished, Flexible Visuals)

This uses tidyr to reshape data for easier multi-series plotting:

library(ggplot2)
library(tidyr)

# Exit early if insufficient data
if(nrow(dataset) == 0 || ncol(dataset) < 2) return()

# Reshape wide data to long format (works for any number of Y-series)
long_data <- pivot_longer(dataset, 
                          cols = -1,  # Exclude first column (X-axis)
                          names_to = "Series", 
                          values_to = "Value")

# Build dynamic plot
ggplot(long_data, aes(x = .data[[names(dataset)[1]]], y = Value, color = Series)) +
  geom_line(linewidth = 1) +
  labs(x = names(dataset)[1], y = "Value") +
  theme_minimal()

Critical Setup for Dynamic Behavior

Update your pbiviz.json to define clear data roles that let users bind fields flexibly:

"dataRoles": [
  {
    "displayName": "Category (X-axis)",
    "name": "category",
    "kind": "Grouping"
  },
  {
    "displayName": "Values (Y-axis)",
    "name": "values",
    "kind": "Measure",
    "supportsMultiple": true
  }
]
  • Users will bind their X-axis field to the "Category" role, and any number of numeric fields to "Values"—your code will automatically adapt to their selections.

3. Quick Troubleshooting Tips

  • Add print(str(dataset)) at the start of your R code to inspect the structure of the data being passed—this helps confirm fields are loading correctly in Power BI's debug window.
  • Ensure all required R packages (like ggplot2 or tidyr) are installed in your Power BI R environment, and load them explicitly with library() in your code.

内容的提问来源于stack exchange,提问作者Fehnraal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:27:04