データのお砂場(72) R言語、pressure、水銀の蒸気圧、単位はミリメートルHgで

Joseph Halfmoon

今回、解説のvapor pressure of mercury in millimeters (of mercury)という句を読んで、一瞬親父ギャグと思った私の頭が親父ギャクです。水銀の蒸気圧曲線データです。古いので単位もmmHg(水銀柱高さ)です。当時はSI単位じゃなかったんだな。水銀が重なるのはいたしかたない。

※「データのお砂場」投稿順Indexはこちら

今回のサンプルデータセット

今回のサンプルデータ pressure は、物理学実験の測定結果のように見えます。解説ページが以下に。

Vapor Pressure of Mercury as a Function of Temperature

水銀 Hg、原子番号80、融点 -38.83℃、沸点356.73℃の温度に対する蒸気圧の関係を示すデータです。「蒸気圧曲線」ってやつですかい。英語表現引用させていただきます。

the relation between temperature in degrees Celsius and vapor pressure of mercury in millimeters (of mercury)

ソースは1973年の御本らしいので、既にSI単位Pa(パスカル)は制定されていた筈でありますが、多分まだ一般的ではないと思います。まだN(ニュートン)でなく、kg重みたいな単位が幅を利かせておった時代の筈。そして水銀の蒸気圧曲線を測るのにmmHgを使うのは自然な成り行きなんでありましょう。

まずは生データ

今回の生データはシンプルな単純データフレームです。温度 temperature(摂氏単位)と圧力 pressure(mmHg単位)の2列からなります。pressureRawData

今回は処理例が先

解説ページに処理例が記載されているのですが、単なるプロットです。蒸気圧曲線を何か統計処理しても仕方なさそうなので、プロットするしかないか、という感じがしなくもないです。まずは普通にプロット。

plot(pressure, xlab = "Temperature (deg C)", ylab = "Pressure (mm of Hg)", main = "pressure data: Vapor Pressure of Mercury")

pressurePlot1

 

ありがちな蒸気圧曲線なのかもしれませんが、水などと比べると流石に重い金属、立ち上がりが遅いデス。低い温度のところが見ずらいためか処理例ではY軸対数グラフも描いてます。こんな感じ。

plot(pressure, xlab = "Temperature (deg C)", log = "y", ylab = "Pressure (mm of Hg)", main = "pressure data: Vapor Pressure of Mercury")
pressurePlot2今時の物理実験だったら、PaにKだろ~

しかし、mmHg単位というのはいかにも古臭いです。1mmHg=133.3Paということで勝手にPaに換算することにいたしました。でもよく考えると、摂氏よりもK(ケルビン)の方が良いような気もして温度の方も変更しました。結局最初のデータ・コピーは不要でしたな。

pressure.Pa <- pressure
pressure.Pa$pressure <- pressure$pressure * 133.3
pressure.Pa$temperature <- pressure$temperature + 273.15

換算済のデータに対して、例によって ggplot2 ライブラリを使ってグラフ化してみました。処理はこんな感じ。

p<-ggplot(data=pressure.Pa, aes(x=temperature, y=pressure)) + geom_point() +scale_y_log10()
p<-ggplot(data=pressure.Pa, aes(x=temperature, y=pressure)) + geom_point()
p1<-p + labs(title="Vapor Pressure of Mercury") + ylab("Pressure [Pa]") + xlab("Temperature [K]")
p2<-p1 + geom_hline(aes(yintercept=101325), linetype="dashed")
p3<-p2 + geom_vline(aes(xintercept=273.15), linetype="dashed")
p4<-p3 + annotate("text", x=320, y=103000, label="STD. atomosphere")
p5<-p4 + annotate("text", x=290, y=30000, label="0 degree C")
p5

できたグラフが以下に。pressurePlot3

お愛想に0℃の位置に縦の点線と、標準大気圧101325Paのところに横の点線を入れておきました。肌感覚?ってやつによりそった?ホントか。横点線と蒸気圧曲線の交差するところが「沸点」となる筈。

なお、上記処理の最初の1行を以下に変更すれば片対数グラフにもなります。

p<-ggplot(data=pressure.Pa, aes(x=temperature, y=pressure)) + geom_point() +scale_y_log10()

こんな感じ

pressurePlot4

でもY軸の目盛り線、イマイチですな。要改良。今回はグラフ描いただけ。

データのお砂場(71) R言語、presidents、米国大統領支持率(誤魔化?忖度?)とな へ戻る

データのお砂場(73) R言語、quakes、フィジー周辺の地震、3次元分布とな へ進む