Ladybug, psychrometric chart and humidity ratio


I used the Ladybug humidity ratio (HR) calculator but if i not consider annual weather data it dosen’t work:

I have then calculated the HR with the formula reported in the above jpg. The result is 0.002063 kg H2O/Kg dry air.

I have then used a point with x = dry bulb temperature and y = the value of calculated HR but it’s not displayed properly:

The problem is due to the Y axis of Rhino that is not aligned perfectly with the values reported in the Y axis of the psychrometric chart (in rhino the unit is set in meter). So I have to modify the value with the formula highlighted in red:

Now it is properly displayed:

  1. There is another method to solve this issue?

  2. How can I add the Unit of Measure in the X and in Y axis and a table with the used values of air temperature, relative humidity, radiant temperature, air velocity, met, clo?

Thank you.

I uploaded the .gh file so you can test it and verify what I have explained above. (394 KB)


Please excuse both my late reply and my poor coding of the HR component. It was one of the first that I made and so it was not built with the same flexibility as my newer components. You can find attached a GH file with an updated HR component that can accept individual values:

This addresses your first question. For the second, it sound like you just want to export your data into an excel table. I recommend using the TTToolbox Excel Exporter:

-Chris (394 KB)


thank you for the reply and the upgrade of HR ratio calculator.

I want you to notice some more issues:

  1. first of all, if I connect the barometric pressure (101325 Pa used by default) to the 3D chart, it appears an error:

  1. The problem with the display of the point in the 3D graph persists. Infact if I try to display the point of (x,y)=(24.05,0.006182)

in the rhino 3D chart it appears in a incorrect position because the Y axis is not alligned:

I can fix the starting value of humidity ratio with this:

So (as you can see) it is placed in the right place:


Hi Francesco, This looks like a bug! I added it to github so Chris can take a look. Thanks for reporting this.

Francesco and Mostapha,

That was indeed a bug. Thank you for finding it and reporting it. I have fixed it in the copy of the components on the github and in the attached GH file.

As for the second issue of aligning points in Rhino space with the chart, you have already realized that the temperature is plotted with 1 Rhino unit equal to 1 degree temperature. Because humidity ratio values are so small, I multiply them by a scaling factor that is set inside the component:…

I originally did not expose this parameter as an input to the component because the psychrometric chart was already so large and it currently has the most inputs of all components in Ladybug. Still, if you make a case here that exposing such an input would help you better coordinate your point values, I can do it. You should also note that you can connect up the chartHourPoints output of the psych chart to a native GH “Point” component to see the point in Rhino.

Finally, I would like to take this opportunity to get your thoughts on another topic that Mostapha mentioned to me earlier. At present, when you plug in epw values to both the psych chart and the PMV comfort component, you do not get the same percentage of comfortable hours out of the two components. This is because the PMV component assumes that the MRT is the same as the dry bulb temperature by default while the psych chart needs to assume that there is only one MRT value for all hours in order to draw only one comfort polygon. I have realized that this discrepancy can be confusing to people and I can think of 2 ways of addressing it:

  1. If someone connects up epw data or a list of 8760 values to either MRT or windSpeed of the psych chart, I assume that the user wants to align the data and I just pass the aligned values through the PMV function. The issue here becomes what to do with comfort and strategy polygons. The simplest option would just be to not allow the user to plot any polygons on the chart in this case. Alternatively, I can plot two comfort polygons showing the range from warmest comfort to coldest comfort across the 8760 values but, with this, I can’t allow the user to plot multiple metRate or cloValue polygons. Nor can I accurately plot the strategy polygons.

  2. I can just tell people that the assumption of a single MRT and windSpeed is a limitation of the one-polygon psych chart methodology. In the end, the psychometric chart is just a means to help you visualize temperature and humidity and it is not really a tool for measuring how comfortable a space is over a long time period. To assess comfort over long periods of time, you should really be running the PMV comfort component and you should probably account for how the wind and MRT change over time as well as people’s clothing. Comfort, in reality, is not a static thing and the assumption that a single polygon can represent the dynamism of your thermal preference is inherently flawed.

Let me know your thoughts,

-Chris (394 KB)

Hi Chris,

I’m for option 2 exactly for the reasons you mention. A note/explanation can be added in the component explaining shortly the possible discrepancies.

I would say this is one of the cases when you can use a tool for certain tasks, and if you need something more detailed you should switch tools.



You should also note that you can connect up the chartHourPoints output of the psych chart to a native GH “Point” component to see the point in Rhino.

That’s fine. Thank’s.

I can think of 2 ways of addressing it:

Maybe option 2.

I want to show you one more thing. If I connect a scale factor to psychrometric chart it appears the following message:


Alright! Another bug squashed!

Thanks for reporting these, Francesco. You can find the fixed file attached.

Also, thank you both for your thoughts on the psych chart in relation to the PMV comfort component. I think I’ll keep the component as is unless anyone brings up a case for the option 1.

-Chris (394 KB)

Thanks for the new fixed component.


If you want to add the Unit of Measure to X and Y axis, you have to consider the changes highlighted in yellow in the python script editor: