今回、解説の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列からなります。
今回は処理例が先
解説ページに処理例が記載されているのですが、単なるプロットです。蒸気圧曲線を何か統計処理しても仕方なさそうなので、プロットするしかないか、という感じがしなくもないです。まずは普通にプロット。
plot(pressure, xlab = "Temperature (deg C)", ylab = "Pressure (mm of Hg)", main = "pressure data: Vapor Pressure of Mercury")
ありがちな蒸気圧曲線なのかもしれませんが、水などと比べると流石に重い金属、立ち上がりが遅いデス。低い温度のところが見ずらいためか処理例ではY軸対数グラフも描いてます。こんな感じ。
plot(pressure, xlab = "Temperature (deg C)", log = "y", ylab = "Pressure (mm of Hg)", main = "pressure data: Vapor Pressure of Mercury")
今時の物理実験だったら、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
お愛想に0℃の位置に縦の点線と、標準大気圧101325Paのところに横の点線を入れておきました。肌感覚?ってやつによりそった?ホントか。横点線と蒸気圧曲線の交差するところが「沸点」となる筈。
なお、上記処理の最初の1行を以下に変更すれば片対数グラフにもなります。
p<-ggplot(data=pressure.Pa, aes(x=temperature, y=pressure)) + geom_point() +scale_y_log10()
こんな感じ
でもY軸の目盛り線、イマイチですな。要改良。今回はグラフ描いただけ。