Valores de doble eje Y en un gráfico de columnas agrupadas

Un usuario Pregunto ✅


Guión:

El usuario tiene los datos de muestra como se muestra a continuación, necesita mostrar la suma de la Cantidad para cada producto en las columnas agrupadas en el primer eje Y. El segundo eje Y debe mostrar la suma de la Cantidad objetivo para cada producto en las burbujas / puntos. El eje X es del campo Fecha.

Data de muestra:

yingyinr_0-1629190091872.png

Resultado Esperado:

yingyinr_1-1629190091878.png

Pasos detallados:

Análisis:

Con la línea predeterminada y el gráfico de columnas agrupadas, solo podemos mostrar las barras para cada producto de leyenda (P1, P2, P3 y P4), pero no el punto rosa (Cantidad objetivo). No existe un elemento visual predeterminado adecuado ni un elemento visual personalizado de tercera parte en Microsoft AppSource … Por lo tanto, creamos este gráfico utilizando scripts R.

yingyinr_2-1629190147568.png

Preparación:

1. Instale R y habilite los elementos visuales de R en Power BI Desktop (consulte esta documentación oficial)

yingyinr_3-1629190197116.png

2. Instale las bibliotecas ggplot2 y dplyr

    • Inicie la consola R
    • Escriba el siguiente comando para instalar el paquete
      install.packages("ggplot2")
      install.packages("dplyr")
    • Elija los espejos CARN (elija un espejo que esté más cerca de su ubicación geográfica)yingyinr_5-1629190347657.png

Crear objeto visual de R

1. Seleccione el R Visual icono en el Visualización panel para agregar un visual R y haga clic en el botón «Habilitar» cuando habilite la ventana de visuals de script que aparece.

yingyinr_6-1629190397040.png

yingyinr_7-1629190397042.png

2. Cree una columna calculada para obtener YearMonth (más tarde se colocará en X eje de visual)

YearMonth = YEAR('Table'[Date])&"-"&"M"&MONTH('Table'[Date])

yingyinr_8-1629190397043.png

3. Arrastre los campos de la Los campos panel que desea consumir en su secuencia de comandos R en el Valores sección de la Visualización cristal

yingyinr_10-1629190609696.png

4. Escriba los siguientes scripts en Editor de scripts R

# The following code to create a dataframe and remove duplicated rows is always executed and acts as a preamble for your script: 

# dataset <- data.frame(YearMonth, Product, Amount, Target_Amount)
# dataset <- unique(dataset)

# Paste or type your script code here:
#load ggplot2 and dplyr packages
library(ggplot2)
library(dplyr)

#Set the width of dodge
dodge <- position_dodge(width=0.9)

#Set the color base on the specific condition (Amount>=Target_Amount)
dataset$Colour=ifelse(dataset$Amount>=dataset$Target_Amount ,"1","0" )

#Get the difference between Amount and Target_Amount
dataset$diff=dataset$Amount-dataset$Target_Amount

#Draw bar graph
p=ggplot(data=dataset, aes(fill=Product, y=Amount, x=YearMonth))
p+geom_bar(position=dodge, stat="identity") +

#Draw dot plot
geom_point(data=dataset,aes(x=YearMonth,y=Target_Amount,group = Product,color =Colour),position=dodge,size=8,shape=18,show.legend = FALSE)+

#Draw label
geom_label(inherit.aes = FALSE,
data = . %>%
group_by(YearMonth,Product) %>%
summarise(Total = sum(Target_Amount, na.rm = TRUE),Target = max(Target_Amount, na.rm = TRUE)),
aes(label = Total,x= YearMonth,group = Product,y=ifelse(dataset$diff>=0,Target+160,Target-160),
),
show.legend = FALSE,
position = position_dodge2(width = 0.9),size=5)+

#Set the color of the graph
scale_fill_brewer(palette = "Dark2") + 

#Set the theme
theme_minimal(base_size = 22)

yingyinr_11-1629190637222.png

Finalmente, obtenemos los resultados que queremos y somos capaces de lograr estas necesidades específicas del usuario.

Autor: Yingying Ruan

Crítico: Kerry y Ula

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *