Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Earn the coveted Fabric Analytics Engineer certification. 100% off your exam for a limited time only!

Reply
shizar115
Helper I
Helper I

Uso de gganimate de CRAN a través de R-script para visualizar un componente animado

Queridos todos,

He estado intentando crear paneles animados a través de Power BI y mi preferencia es R-script ya que me da un buen control.
Parece que la implementación de componentes animados no es tan directa como lo sería en el servidor brillante. He creado mi código completo en R-Studio y estoy seguro de que el código es correcto ya que estoy obteniendo el resultado correcto. También estoy seguro de que todas las bibliotecas requeridas están incluidas en mi script:

# 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(sumed2, year, weeknumber)
# dataset <- unique(dataset)

# Paste or type your script code here:
library(lubridate)
library(magrittr)
library(dplyr)
library(tidyverse)
library(odbc)
library(DBI)
library(ggplot2)
library(gganimate)
library(transformr)
library(tweenr)
dataset$year<-NULL
dataset$weeknumber<-NULL

ggplot(dataset,aes(x=timed, y=sumed2, group=yeared, colour=yeared)) +
  geom_line() +transition_time(timed) +
  
  geom_segment(aes(xend=max(timed), yend = sumed2), linetype=2, colour='blue') +
  geom_point(size = 3) + 
  geom_text(aes(x = max(timed)+.1, label = sprintf("%5.0f", sumed2)), hjust=0) +
  transition_reveal(timed) + 
  view_follow(fixed_y = TRUE)+
  coord_cartesian(clip = 'off') + 
  labs(title = 'Active in Jan', y = 'Individual Active') +
  enter_drift(x_mod = -1) + exit_drift(x_mod = 1) +
  theme(panel.border = element_blank(),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        axis.line = element_line(colour = "black"),
        plot.margin = margin(1.5, 40, 5.5, 5.5))

Después de ejecutar esto en Power BI, el sistema operativo Windows intenta abrir la salida por alguna razón como esta:

shizar115_0-1605897046600.png

y Power BI muestra este mensaje:

shizar115_1-1605897081404.pngshizar115_2-1605897094386.png

Aquí están los detalles copiados:

Tipo de comentarios: Frown (Error) Marca de tiempo: 2020-11-20T18:21:04.9231924Z Hora local: 2020-11-20T10:21:04.9231924-08:00 Sesión ID: 9fb6827a-32d2-48f6-aa96-b418c3687ca3 Release: Noviembre 2020 Versión del producto: 2.87.762.0 (20.11) (x64) Mensaje de error: No se creó ninguna imagen. El código R no resultó en la creación de ningún objeto visual. Asegúrese de que el script de R da como resultado un trazado para el dispositivo predeterminado de R. Seguimiento de pila: Microsoft.PowerBI.ExploreServiceCommon.ScriptHandlerException: no se ha creado ninguna imagen. El código R no resultó en la creación de ningún objeto visual. Asegúrese de que el script de R da como resultado un trazado para el dispositivo predeterminado de R. en las opciones Microsoft.PowerBI.Client.Windows.R.RScriptHandler.GenerateVisual(ScriptHandlerOptions) en Microsoft.PowerBI.ExploreServiceCommon.ScriptVisualCommandFlow.RunInternal(Stream dataShapeResultStream, QueryBindingDescriptor& bindingDescriptor) en Microsoft.PowerBI.ExploreServiceCommon.ScriptVisualCommandFlow.Run(Stream dataShapeResultStream, Stream dataShapeResultStream, Stream dataShapeResultStream, Stream dataShapeResultStream, Stream dataShapeResultStream, Stream dataShapeResultStream, Stream dataShapeResultStream, Stream dataShapeResultStream, Stream dataShapeResultStream, Stream dataShapeResultStream, Stream dataShapeResultStream, Stream dataShapeResultStream, Stream dataShapeResultStream, Stream dataShapeResultStream, Stream dataShapeResultStream, Stream dataShapeResultStream, Stream dataShapeResultStream, Stream dataShapeResultStream, Stream dataShapeResult, Stream QueryBindingDescriptor& bindingDescriptor) en Microsoft.PowerBI.ExploreHost.SemanticQuery.ExecuteSemanticQueryFlow.TransformDataShapeResult(QueryCommand transformCommand, SemanticQueryDataShapeCommand command, Stream dataShapeResult, QueryBindingDescriptor& bindingDescriptor) en Microsoft.PowerBI.ExploreHost.SemanticQuery.ExecuteSemanticQueryFlow.ExecuteDataQuery(IQueryResultDataWriter query. Int32 queryId, ServiceErrorStatusCode& serviceErrorStatusCode, CancellationToken cancelToken) en Microsoft.PowerBI.ExploreHost.SemanticQuery.ExecuteSemanticQueryFlow.ProcessAndWriteSemanticQueryCommands(IQueryResultsWriter queryResultsWriter, Consultas IList'1, HashSet'1 pendingQueriesToCancel, EngineDataModel engineDataModel) Invocation Stack Trace: en Microsoft.Mashup.Host.Document.ExceptionExtensions.GetCurrentInvocationStackTrace() en Microsoft.Mashup.Client.UI.Shared.StackTraceInfo.. ctor(String exceptionStackTrace, String invocationStackTrace, String exceptionMessage) en Microsoft.PowerBI.Client.Windows.ErrorHostService.GetErrorDetails(ShowErrorDialogArgs args) en Microsoft.PowerBI.Client.Windows.ErrorHostService.<>c__DisplayClass3_1.b__1() en System.RuntimeMethodHandle.InvokeMethod(Object target, Object[]arguments, Signature sig, Constructor booleano) en System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments) en System.Delegate.DynamicInvokeImpl(Object[] args) en System.Windows.Forms.Control.InvokeMarshaledCallbackDo(ThreadMethodEntry tme) en System.Windows.Forms.Control.InvokeMarshaledCallbackHelper(Object obj) en System.Windows.Forms.Control.InvokeMarshaledCallback(ThreadMethodEntry tme) en System.Windows.Forms.Control.InvokeMarshaledCallbacks() en System.Windows.Forms.Control.MarshaledInvoke(Control caller, Delegate method, Object[] args, Boolean synchronous) en System.Windows.Forms.Control.Invoke(Delegate method, Object[] args) en System.Windows.Forms.WindowsFormsSynchronizationContext.Send(SendOrPostCallback d, Object state) en Microsoft.PowerBI.Client.Windows.Services.UIBlockingService.AllowModalDialogs(Action action) en Microsoft.PowerBI.Client.Windows.ErrorHostService.&<>c__DisplayClass3_0.<b__0>d.MoveNext() en System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) en Microsoft.PowerBI.Client.Windows.ErrorHostService.<>c__DisplayClass3_0.b 00() en Microsoft.Mashup.Host.Document.SynchronizationContext..<>c__DisplayClass1_0'1.b__0() en Microsoft.Mashup.Host.Document.SynchronizationContextExtensions.<>c__DisplayClass0_1.b__0(Object null) en System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) en System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Parámetros Object[], argumentos Object[]) en System.Delegate.DynamicInvokeImpl(Object[] args) en System.Windows.Forms.Control.InvokeMarshaledCallbackDo(ThreadMethodEntry tme) en System.Windows.Forms.Control.InvokeMarshaledCallbackHelper(Object obj) en System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, Devolución de llamada ContextCallback, Estado de objeto, Boolean preserveSyncCtx) en System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) en System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) en System.Windows.Forms.Control.InvokeMarshaledCallback(ThreadMethodEntry tme) en System.Windows.Forms.Control.InvokeMarshaledCallbacks() en System.Windows.Forms.Control.WndProc(Message& m) en System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam) en System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg) en System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg) en System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg) en System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg) en System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg) en System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg) en System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg) en System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg) en System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg) en System.Windows.Forms. System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData) en System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context) en System.Windows.Forms.Application.ThreadContext.ApplicationContext) en System.Windows.Forms.Form.ShowDialog(IWin32Window owner) en Microsoft.Mashup.Client.UI.Shared.WindowManager.ShowModal[T](T dialog, Func'1 showModalFunction) en Microsoft.PowerBI.Client.Program.<>c__DisplayClass4_0.b__1() en Microsoft.PowerBI.Client.Windows.IExceptionHandlerExtensions.<>c__DisplayClass3_0.b__0() en Microsoft.Mashup.Host.Document.ExceptionHandlerExtensions.HandleExceptions(IExceptionHandler exceptionHandler, Acción de acción) en Microsoft.PowerBI.Client.Program.Main(String[] args) OS Versión del sistema operativo: Microsoft Windows NT 10.0.19041.0 (x64 en-US) Versión CLR: 4.7 o posterior [Número de versión 528372] Memoria virtual máxima: 38,2 GB Memoria privada: 520 MB Peak Working Set:717 MB IE Versión: 11.508.19041.0 ID de usuario: b9bc5d50-414f-457d-a148-8a4a1f312be5 Información del paquete de libro: 1* - en-CA, Grupos de consultas: 0, fastCombine: Disabled, runBackground: True. Telemetría habilitada: Registros de seguimiento de instantáneas verdaderas: C:-Usuarios-szarbafian-Microsoft-Power BI Desktop Store App-FrownSnapShot9b01ffe9-a05d-4d80-b63e-f29d042f596b.zip Modo predeterminado del modelo: Importar versión del modelo: PowerBI_V3 es el informe V33e Modelos habilitados: Registros de seguimiento de rendimiento verdadero: C:-Usuarios-szarbafian-Microsoft-Power BI Desktop Store App-PerformanceTraces.zip Características de vista previa habilitadas: PBI_NewWebTableInference PBI_v3ModelsPreview características de vista previa deshabilitadas: PBI_shapeMapVisualEnabled PBI_SpanishLinguisticsEnabled PBI_JsonTableInference PBI_ImportTextByExample PBI_ExcelTableInference PBI_qnaLiveConnect PBI_azureMapVisual PBI_dataPointLassoSelect PBI_narrativeTextBox PBI_dynamicParameters PBI_anomalyDetection PBI_newFieldList opciones de DirectQuery deshabilitadas: TreatHanaAsRelationalSource Cloud: Escala de PPP de GlobalCloud: 100% De servicios compatibles: Fórmulas de Power BI: sección Sección1; Consulta compartida2 - let Source - Sql.Database("conv-epicorte", "cel_test", [Consulta" seleccione [Cliente]. Nombre, [OrderHed]. OrderAmt, [OrderHed]. OrderDate,[CustIC]. ICTypeID(LF) FROM [CEL_test]. [Erp]. [OrderHed] (lf) izquierda unión externa [CEL_test]. [Erp]. [Cliente] (lf) en [OrderHed]. Empresa: [Cliente]. Compañía y [OrderHed]. [BTCustNum] - [Cliente]. CustNum (lf) unión externa izquierda [CEL_test]. [Erp]. [CustIC](lf) en [CustIC]. Empresa: [Cliente]. Compañía y [CustIC]. CustNum á [Cliente]. CustNum (lf) donde orderhed. VoidOrder, al igual que el orden '0' á(lf) por OrderDate"]), "Ejecutar script R" ? R.Execute("- 'dataset' contiene los datos de entrada para este script (lf)library(lubridate)-(lf)library(magrittr)-(lf)library(dplyr)(lf)Output<-mutate(dataset,New-as. POSIXct(OrderDate)) %>%-(lf)mutate(year-substring(OrderDate,0,4)) %>%-(lf)mutate(weeknumber ? strftime(New, format ? ""%V"")) %>%-(lf)dplyr::group_by(weeknumber, año) %>%-(lf)dplyr::summarize(sumws-sum(OrderAmt)) %>%-(lf)dplyr::mutate(timed-as.numeric(weeknumber)) %>%-(lf)dplyr::mutate(yeared-as.numeric))%> ;%-(lf)dplyr:::group_by(yeared) %>%-(lf)dplyr::mutate(sumed2-cumsum(sumws))",[dataset-Source]), """"Salida""" á "Ejecutar script R""[Nombre"Salida"]-[Valor], "Filas ordenadas" - Table.Sort(""Salida""""","año", Order.Ascending, "timed", Order.Ascending) en "Filas ordenadas";

Le agradecería que alguien me ayudara con esto.
Muestra de mis datos tiene este aspecto:

shizar115_0-1605897475824.png


saludos
Shizar

1 ACCEPTED SOLUTION

No estoy seguro de lo que está pasando. El objeto visual que veo es estático, y sospecho que lanzó su navegador cuando estaba devolviendo html. Para ver el objeto visual animado en la página del informe de Power BI, sospecho que va a necesitar crear un objeto visual personalizado siguiendo los pasos que se describen aquí.

https://towardsdatascience.com/custom-html-visuals-in-power-bi-using-r-2b0494894ff

Aquí está el gráfico estático que veo con sus datos de ejemplo.

mahoneypat_0-1605986978197.png

Adjunto es el pbix, en caso de que sea útil para usted.

saludos

palmadita





Did I answer your question? Mark my post as a solution! Kudos are also appreciated!

To learn more about Power BI, follow me on Twitter or subscribe on YouTube.


@mahoneypa HoosierBI on YouTube


View solution in original post

10 REPLIES 10
shizar115
Helper I
Helper I

Hola @mahoneypat ,

Finalmente tuve tiempo de seguir las instrucciones a las que me dijiste.
En primer lugar gracias por proporcionar eso, no estoy seguro de cómo lo sabía.
En segundo lugar, eso sólo funciona para gráficos de trazado, por lo que no gganimate. cuando cambié el ggplotly al final del código a animate(), el error en Power BI dijo que Power BI no admite elementos animados gganimate. Allí lo tenemos entonces, Power BI no admite animaciones realizadas con R. No pude hacer lo mismo con Python ya que requiere una licencia Pro.

El problema no se resuelve, pero supongo que el tema se puede cerrar 🙂

Atentamente
Shizar

shizar115
Helper I
Helper I

Hola @mahoneypat ,

Sí, absolutamente raro. Funciona para un gráfico normal y aquí incluí una imagen para el mismo conjunto de datos y gráfico, simplemente ninguna transición:

shizar115_0-1605990774625.png

saludos
Shizar

shizar115
Helper I
Helper I

Hola @mahoneypat ,

¿Puede compartir el conjunto de datos que está utilizando para generar el objeto visual?
Editar: Vi el conjunto de datos en su archivo .pbix:

shizar115_1-1605987445416.png


También ejecuté el archivo .pbix y esto es lo que veo:

shizar115_0-1605987318884.png

¿Tiene algo que ver con no tener una licencia PRO?


saludos
Shizar

No se necesita licencia profesional, ya que todo con Power BI Desktop. ¿Funciona el objeto visual R para usted con R más simple?

parcela(1,1)

Si no, es algo con su configuración de R. Si es así, no estoy seguro de lo que está pasando.

saludos

palmadita





Did I answer your question? Mark my post as a solution! Kudos are also appreciated!

To learn more about Power BI, follow me on Twitter or subscribe on YouTube.


@mahoneypa HoosierBI on YouTube


shizar115
Helper I
Helper I

Hola Pat,

Gracias por volver arme.
En R-Studio esto es lo que obtengo con el mismo conjunto de datos y código:

https://gph.is/g/4DeMxdO

He protegido Power BI y no hay ninguna agregación activa (he comprobado los tres parámetros):

summarize.PNG

La razón de esas dos sentencias NULL se debe al hecho de que mi conjunto de datos realmente tiene esas dos columnas adicionales y las mantuve en el conjunto de datos para comparar los valores procesados con los sin procesar (utilicé as.numeric() ya que ggaimate requiere valores numéricos, pero las columnas sin procesar eran en realidad cadenas). Así que quería limpiarlos. Después de quitar esas instrucciones NULL todavía problema está allí.

Deseo señalar que el propio conjunto de datos se generó utilizando una función agregada con script de R. Así que agregué ungroup() al final y eso no lo arreglé tampoco.
Presté más atención y vi símbolos SIGMA junto a los nombres de campo, y después de 20 minutos encontré que el resumen está activo de forma predeterminada. Tutoriales no fueron útiles en la localización de la pestaña correcta para deshabilitar eso, finalmente lo encontré aquí:

disable.PNG

Después de eso sigue siendo el problema persiste.

También intenté una llamada explícita para la animación como esta:

animate(p, height = 800, width =800,fps=10)


Aún no hay suerte..

No estoy seguro de lo que está pasando. El objeto visual que veo es estático, y sospecho que lanzó su navegador cuando estaba devolviendo html. Para ver el objeto visual animado en la página del informe de Power BI, sospecho que va a necesitar crear un objeto visual personalizado siguiendo los pasos que se describen aquí.

https://towardsdatascience.com/custom-html-visuals-in-power-bi-using-r-2b0494894ff

Aquí está el gráfico estático que veo con sus datos de ejemplo.

mahoneypat_0-1605986978197.png

Adjunto es el pbix, en caso de que sea útil para usted.

saludos

palmadita





Did I answer your question? Mark my post as a solution! Kudos are also appreciated!

To learn more about Power BI, follow me on Twitter or subscribe on YouTube.


@mahoneypa HoosierBI on YouTube


¿Alguien probó esta solución?
¿Cómo funcionaría un objeto visual personalizado en Power BI para gráficos animados?
Pregunto esto porque no veo cómo podría funcionar...

shizar115
Helper I
Helper I

Hola @mahoneypat ,

Gracias por volver arme.
En R-Studio esto es lo que obtengo con el mismo conjunto de datos y código:

https://gph.is/g/4DeMxdO

He protegido Power BI y no hay ninguna agregación activa (he comprobado los tres parámetros):

summarize.PNG

La razón de esas dos sentencias NULL se debe al hecho de que mi conjunto de datos realmente tiene esas dos columnas adicionales y las mantuve en el conjunto de datos para comparar los valores procesados con los sin procesar (utilicé as.numeric() ya que ggaimate requiere valores numéricos, pero las columnas sin procesar eran en realidad cadenas). Así que quería limpiarlos. Después de quitar esas instrucciones NULL todavía problema está allí.

Deseo señalar que el propio conjunto de datos se generó utilizando una función agregada con script de R. Así que agregué ungroup() al final y eso no lo arreglé tampoco.
Presté más atención y vi símbolos SIGMA junto a los nombres de campo, y después de 20 minutos encontré que el resumen está activo de forma predeterminada. Tutoriales no fueron útiles en la localización de la pestaña correcta para deshabilitar eso, finalmente lo encontré aquí:

disable.PNG

Después de eso sigue siendo el problema persiste.

También intenté una llamada explícita para la animación como esta:

animate(p, height = 800, width =800,fps=10)


Aún no hay suerte..

shizar115
Helper I
Helper I

Hola @mahoneypat ,

Gracias por volver arme.
En R-Studio esto es lo que obtengo con el mismo conjunto de datos y código:
Salida de animación

He protegido Power BI y no hay ninguna agregación activa (he comprobado los tres parámetros):

La razón de esas dos sentencias NULL se debe al hecho de que mi conjunto de datos realmente tiene esas dos columnas adicionales y las mantuve en el conjunto de datos para comparar los valores procesados con los sin procesar (utilicé as.numeric() ya que ggaimate requiere valores numéricos, pero las columnas sin procesar eran en realidad cadenas). Así que quería limpiarlos. Después de quitar esas instrucciones NULL todavía problema está allí.

Deseo señalar que el propio conjunto de datos se generó utilizando una función agregada con script de R. Así que agregué ungroup() al final y eso no lo arreglé tampoco.
Presté más atención y vi símbolos SIGMA junto a los nombres de campo, y después de 20 minutos encontré que el resumen está activo de forma predeterminada. Tutoriales no fueron útiles en la localización de la pestaña correcta para deshabilitar eso, finalmente lo encontré aquí:

disable.PNG

Después de eso sigue siendo el problema persiste.

También intenté una llamada explícita para la animación como esta:

animate(p, height = 800, width =800,fps=10) 


Todavía no hay suerte....

mahoneypat
Employee
Employee

Su código resultó en un gráfico para mí (una vez que cargué todos los paquetes enumerados). Asegúrese de que para cada columna del objeto visual no se aplica ninguna agregación predeterminada. No vi ninguna animación, pero parece que aún no has usado ninguna función gganimate. ¿Es eso cierto? Tengo curiosidad por saber si funciona en Power BI. Además, ¿por qué tiene los pasos <- NULL en lugar de simplemente no incluir esas columnas en el objeto visual de R?

mahoneypat_0-1605974318097.png

saludos

palmadita





Did I answer your question? Mark my post as a solution! Kudos are also appreciated!

To learn more about Power BI, follow me on Twitter or subscribe on YouTube.


@mahoneypa HoosierBI on YouTube


Helpful resources

Announcements
April AMA free

Microsoft Fabric AMA Livestream

Join us Tuesday, April 09, 9:00 – 10:00 AM PST for a live, expert-led Q&A session on all things Microsoft Fabric!

March Fabric Community Update

Fabric Community Update - March 2024

Find out what's new and trending in the Fabric Community.

Top Solution Authors