Main Content

La traducción de esta página aún no se ha actualizado a la versión más reciente. Haga clic aquí para ver la última versión en inglés.

Representar fechas y horas

En este ejemplo se muestra cómo crear gráficas de líneas con fechas y horas que se almacenan en arreglos de datetime y duration. El tipo de datos datetime representa puntos en el tiempo, como el 24 de agosto de 2020 a las 10:50:30, mientras que el tipo de datos duration representa periodos de tiempo, como 12 horas y 30 minutos. La mayoría de funciones de representación acepta arreglos de datetime y duration como coordenadas x, y y z, y muestra valores de marcas con unidades de fecha y hora adecuadas. Puede especificar sus propios límites de ejes y valores de marcas utilizando valores datetime y duration. También puede cambiar el formato de los valores de marcas para mostrar las unidades de fecha y hora que elija. Las sugerencias sobre datos muestran valores datetime y duration para las posiciones del cursor en una gráfica, y puede exportar esos valores a las variables del área de trabajo. Cuando lee datos de una hoja de cálculo o de un archivo de valores separados por comas (CSV), puede incluir los datos de fecha y hora en sus gráficas.

Representar datos de fecha y hora

Puede representar arreglos de datetime y duration sin convertirlos a arreglos numéricos. La mayoría de funciones de representación acepta arreglos de datetime y duration como argumentos de entrada.

Por ejemplo, represente un conjunto de datos que tenga valores datetime en el eje x y valores numéricos en el eje y. Las coordenadas x son los valores datetime para todos los días de junio y julio de 2021. La gráfica muestra automáticamente valores de marcas con un formato apropiado en el eje x. En este caso, el formato apropiado muestra nombres de meses y números de días con el año.

XDates = [datetime(2021,6,1:30) datetime(2021,7,1:31)];
YNumsForXDates = sin(0:0.1:6);
plot(XDates,YNumsForXDates)

Figure contains an axes object. The axes object contains an object of type line.

De forma similar, represente un conjunto de datos que tiene valores duration en el eje x. Para crear un arreglo duration en unidades de segundos, utilice la función seconds.

XTimes = seconds(0:120);
YNumsForXTimes = cos(0:0.05:6);
plot(XTimes,YNumsForXTimes)

Figure contains an axes object. The axes object contains an object of type line.

Especificar los límites de los ejes

Cuando cambia los límites en una gráfica, los valores de marcas que se muestran para los valores de datetime y duration se actualizan automáticamente. Puede actualizar los límites de forma interactiva o llamando a las funciones xlim, ylim o zlim para el eje correspondiente. Especifique los nuevos límites como un arreglo datetime o duration. Si cambia los límites para acercarse o alejarse lo suficiente, los valores de marcas pueden mostrar otros componentes de fecha y hora, no solo nuevos valores de marcas.

Por ejemplo, represente los arreglos XDates e YNumsForXDates. Después, cambie los límites del eje x al 20 de junio y el 7 de julio de 2021, utilizando xlim. La gráfica representa nuevos valores de marcas.

plot(XDates,YNumsForXDates)
xlim([datetime("2021-06-20") datetime("2021-07-07")])

Figure contains an axes object. The axes object contains an object of type line.

Cambie los límites del eje x al 20 de junio y el 22 de junio de 2021. Los valores de marcas muestran componentes de hora y minuto en el formato hh:mm porque ha acercado la gráfica lo suficiente como para que muestre unidades de tiempo más pequeñas en el eje x.

xlim([datetime("2021-06-20") datetime("2021-06-22")])

Figure contains an axes object. The axes object contains an object of type line.

Especificar valores de marcas

No tiene que cambiar los límites de los ejes para cambiar los valores de marcas. En su lugar, puede especificar sus propios valores de marcas a lo largo de los ejes x, y o z utilizando las funciones xticks, yticks o zticks. Especifique los valores de marcas como un arreglo datetime o duration.

Por ejemplo, represente los arreglos XTimes e YNumsForXTimes. Después, especifique los valores de marcas en 0, 60 y 120 segundos utilizando xticks.

plot(XTimes,YNumsForXTimes)
xticks(seconds([0 60 120]))

Figure contains an axes object. The axes object contains an object of type line.

Especificar el formato de las marcas

Las funciones de representación utilizan formatos predeterminados para mostrar los valores de datetime y duration como valores de marcas. Para sobrescribir el formato de los valores de marcas en un eje, utilice las funciones xtickformat, ytickformat o ztickformat.

Por ejemplo, represente XDates e YNumsForXDates. Especifique un formato para los valores de marcas que muestra números de año, mes y día utilizando xtickformat.

plot(XDates,YNumsForXDates)
xtickformat("yyyy-MM-dd")

Figure contains an axes object. The axes object contains an object of type line.

Como alternativa, también puede llamar a plot con los argumentos nombre-valor DatetimeTickFormat o DurationTickFormat. Por ejemplo, esta llamada a la función plot crea la misma gráfica.

plot(XDates,YNumsForXDates,"DatetimeTickFormat","yyyy-MM-dd")

Sin embargo, estos argumentos nombre-valor solo se pueden utilizar con la función plot. Puede utilizar funciones como xtickformat después de llamar a cualquier función de representación, como scatter, stem y stairs.

Propiedades de ejes que almacenan fechas y horas

Los límites de los ejes, las ubicaciones de las etiquetas de marcas y los valores x, y y z para los arreglos de datetime y duration en las gráficas de líneas también se almacenan como propiedades de un objeto Axes. Estas propiedades representan esos aspectos de las gráficas de líneas.

  • XLim, YLim, ZLim

  • XTick, YTick, ZTick

  • XData, YData, ZData

Por ejemplo, las propiedades XLim y XTick asociadas con la gráfica de XDates e YNumsForXDates almacenan valores de datetime. Obtenga el objeto Axes para la gráfica y muestre estas propiedades.

ax = gca;
ax.XLim
ans = 1x2 datetime
   2021-06-01   2021-08-03

ax.XTick
ans = 1x5 datetime
   2021-06-01   2021-06-15   2021-06-29   2021-07-13   2021-07-27

Exportar y convertir valores de sugerencias sobre datos

Cuando hace clic en una gráfica, crea una sugerencia sobre datos en esa posición del cursor que muestra sus coordenadas x e y. Las sugerencias sobre datos muestran valores numéricos y valores de datetime y duration. Sin embargo, cuando exporta los datos del cursor al área de trabajo, las coordenadas se indican como un par de valores numéricos. Para convertir los datos exportados del cursor al valor de datetime o duration, use la función num2ruler.

Por ejemplo, represente XDates e YNumsForXDates. A continuación, cree una sugerencia sobre datos haciendo clic en la gráfica.

DatetimeDataTip.png

Para exportar los datos del cursor al área de trabajo, haga clic con el botón secundario en la sugerencia sobre datos y seleccione Export Cursor Data to Workspace. Esta acción exporta los datos del cursor a una estructura en el área de trabajo.

cursor_info = 

  struct with fields:

       Target: [1×1 Line]
     Position: [25 0.5985]
    DataIndex: 26

El campo cursor_info.Position representa los datos del cursor como un par de valores numéricos. El objeto Axes asociado con la gráfica tiene la información necesaria para convertir el valor numérico de la coordenada x a un valor de datetime. Obtenga el objeto Axes para la gráfica. A continuación, pase la coordenada numérica x y el eje x desde el objeto Axes a num2ruler.

ax = gca;
datetimePosition = num2ruler(cursor_info.Position(1),ax.XAxis)

datetimePosition = 

  datetime

   26-Jun-2021

No necesita convertir la coordenada numérica y, cursor_info.Position(2) porque los valores y de esta gráfica son numéricos.

Representar fechas y horas desde un archivo

Los archivos de datos como hojas de cálculo y archivos CSV suelen almacenar fechas y horas como texto con formato. Cuando lee datos de estos archivos, puede convertir texto que representa fechas y horas a arreglos de datetime o duration. A continuación, puede crear gráficas de esos datos.

Por ejemplo, cree una gráfica de datos a partir del archivo de datos de ejemplo outages.csv. Este archivo CSV está compuesto de seis columnas de datos. Dos columnas contienen texto que representa fechas y horas.

Region,OutageTime,Loss,Customers,RestorationTime,Cause
SouthWest,2002-02-01 12:18,458.9772218,1820159.482,2002-02-07 16:50,winter storm
SouthEast,2003-01-23 00:49,530.1399497,212035.3001,,winter storm
SouthEast,2003-02-07 21:15,289.4035493,142938.6282,2003-02-17 08:14,winter storm
...

La forma recomendada de leer datos de un archivo CSV es utilizar la función readtable. Esta función lee datos de un archivo y los devuelve en una tabla.

Lea en outages.csv. La función readtable convierte automáticamente el texto de las columnas OutageTime y RestorationTime a arreglos de datetime. Las columnas que representan números (Loss y Customers) se leen como arreglos numéricos. El resto de las columnas se lee como cadenas. La tabla almacena las columnas de datos de outages.csv en variables de tabla que tienen los mismos nombres. Finalmente, ordene las filas de T por las fechas y horas en OutageTime utilizando la función sortrows. Si una tabla no está ordenada por hora, la práctica recomendada es ordenar la tabla por hora antes de representar o analizar los datos.

T = readtable("outages.csv","TextType","string");
T = sortrows(T,"OutageTime")
T=1468×6 table
      Region          OutageTime        Loss     Customers     RestorationTime           Cause       
    ___________    ________________    ______    __________    ________________    __________________

    "SouthWest"    2002-02-01 12:18    458.98    1.8202e+06    2002-02-07 16:50    "winter storm"    
    "MidWest"      2002-03-05 17:53    96.563    2.8666e+05    2002-03-10 14:41    "wind"            
    "MidWest"      2002-03-16 06:18    186.44    2.1275e+05    2002-03-18 23:23    "severe storm"    
    "MidWest"      2002-03-26 01:59    388.04    5.6422e+05    2002-03-28 19:55    "winter storm"    
    "MidWest"      2002-04-20 16:46     23141           NaN                 NaT    "unknown"         
    "SouthWest"    2002-05-08 20:34    50.732         34481    2002-05-08 22:21    "thunder storm"   
    "MidWest"      2002-05-18 11:04    1389.1    1.3447e+05    2002-05-21 01:22    "unknown"         
    "NorthEast"    2002-05-20 10:57    9116.6    2.4983e+06    2002-05-21 15:22    "unknown"         
    "SouthEast"    2002-05-27 09:44    237.28    1.7101e+05    2002-05-27 16:19    "wind"            
    "SouthEast"    2002-06-02 16:11         0             0    2002-06-05 05:55    "energy emergency"
    "West"         2002-06-06 19:28    311.86           NaN    2002-06-07 00:51    "equipment fault" 
    "SouthEast"    2002-06-17 23:01    42.542         39877    2002-06-17 23:49    "thunder storm"   
    "MidWest"      2002-07-01 04:33    203.94         60650    2002-07-02 14:54    "severe storm"    
    "MidWest"      2002-07-01 08:18    100.71    1.8116e+05    2002-07-01 11:33    "severe storm"    
    "MidWest"      2002-07-10 01:49    168.02           NaN    2002-07-10 17:20    "equipment fault" 
    "SouthEast"    2002-07-14 21:32     90.83         60133    2002-07-14 23:53    "thunder storm"   
      ⋮

Puede acceder a las variables de tabla utilizando la notación de puntos, haciendo referencia a una variable de tabla por nombre. Con la notación de puntos, puede tratar las variables de tabla como arreglos.

Represente la pérdida de potencia con respecto al tiempo de corte. Para acceder a estas variables de la tabla, utilice la notación de puntos.

plot(T.OutageTime,T.Loss)

Figure contains an axes object. The axes object contains an object of type line.

Calcule las duraciones de los cortes del suministro eléctrico y represéntelas con respecto a OutageTime. Para calcular las duraciones, reste OutageTime a RestorationTime. El resultado, OutageDuration, es un arreglo duration, puesto que la aritmética con valores datetime produce periodos de tiempo como salida. Algunas de las duraciones de estos cortes son largas, así que cambie el formato de los valores de marcas del eje y de horas a años utilizando ytickformat. El hecho de que algunos cortes aparentemente duren años indica que puede que haya algunos valores de datos cuestionables en el archivo. Dependiendo de cómo se plantee analizar los datos, puede volver a procesarlos de alguna forma o eliminar las filas que contienen valores incorrectos.

OutageDuration = T.RestorationTime - T.OutageTime;
plot(T.OutageTime,OutageDuration)
ytickformat("y")

Figure contains an axes object. The axes object contains an object of type line.

Consulte también

| | | | | | | |

Temas relacionados