Forum Discussion
Plotting times on a graph
- 10 years ago
Starting from a single Date column, I would follow these steps:
- Using Power Bi Designer: Home / Edit Queries / select your Query
- Add a "Date" column - select your Date column, Add Column / Date / Date only
- Add an "Hour" column - select your Date column, Add Column / Time / Hour
- Add an "Minute" column - select your Date column, Add Column / Time / Minute
- calculate a "Hour Decimal" column in the Query Layer - Add Column / Add Custom Column / Hour Decimal = [Hour] + ( [Minute] / 60 ). So 3:15pm would become 15.25.
- Set the data type of the new "Hour Decimal" column - Home / Data Type: Decimal Number
- Close & Apply
- Navigate to Data view, choose your table, choose the "Hour Decimal" column, navigate to Modeling and set Default Summarization: Minimum (depends on your requirements - this will show the first Time for each Day. You can customize this for each Visual).
- Navigate to the Report view, select your Line graph Visual, set the Axis to be the new "Date" field, and the Value to the new "Hour Decimal" field.
Now the Y-axis shows the Time portion of each date, from 0 - 24.
While figuring this out, I've built a working solution which you can download from my OneDrive and try out:
It's the file: Power BI demo - Line chart of date vs time.pibx
The data is a random sample but hopefully it helps show the steps.
Hi Giles. I'm not sure I follow you exactly. Your data is formatted something like this, right?
Date Time
1/1/2016 12:34
1/2/2016 10:15
1/3/2016 19:25
And you want to show a line graph with dates along the X axis. Are you asking for the time to determine the height the line appears on the Y axis? So with my sample data, the value for 1/1 would be 12:34, 1/2 would be 10:15 etc? At the moment there's no automatic way to get Power BI to display time as Y-axis values, but you could convert the time values to a number and put that into the 'Values' box in the field well. You can convert it to the number of minutes past midnight by:
= HOUR([Time])*60 + MINUTE([Time])
Does that help? Maybe I've misunderstood your question...