Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.
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:
y Power BI muestra este mensaje:
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:
saludos
Shizar
Solved! Go to 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.
Adjunto es el pbix, en caso de que sea útil para usted.
saludos
palmadita
To learn more about Power BI, follow me on Twitter or subscribe on YouTube.
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
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:
saludos
Shizar
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:
También ejecuté el archivo .pbix y esto es lo que veo:
¿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
To learn more about Power BI, follow me on Twitter or subscribe on YouTube.
Hola Pat,
Gracias por volver arme.
En R-Studio esto es lo que obtengo con el mismo conjunto de datos y código:
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í:
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.
Adjunto es el pbix, en caso de que sea útil para usted.
saludos
palmadita
To learn more about Power BI, follow me on Twitter or subscribe 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...
Hola @mahoneypat ,
Gracias por volver arme.
En R-Studio esto es lo que obtengo con el mismo conjunto de datos y código:
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í:
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..
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í:
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....
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?
saludos
palmadita
To learn more about Power BI, follow me on Twitter or subscribe on YouTube.
Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City
Check out the April 2024 Power BI update to learn about new features.
User | Count |
---|---|
2 | |
2 | |
2 | |
2 | |
1 |