前提・実現したいこと
test.csv中のデータにおいて,Time列の数値をx軸,A_x列(x=1,2,3)の数値をy軸上のデータにした上で以下の事を実現したいです.
・3種類のデータからそれぞれ近似曲線を描画する.
・A_xsd列(x=1,2,3)の値を標準偏差として,エラーバーではなく影として描画する.
しかし,自分の知識不足で途中までしかできていません.どなたかお知恵をお貸しいただけますと幸いです.宜しくお願いします.
尚,こちらは本データ(1000行以上)を簡略化したものです.
該当のソースコード
python
1#!/usr/bin/python 2# -*- coding: utf-8 -*- 3import pandas as pd 4from pandas import DataFrame 5import numpy as np 6import matplotlib.pyplot as plt 7import seaborn as sns 8df = pd.read_csv('test.csv', header = None) 9 10x1 = df['Time'] #データが載っている列の指定 11y1 = df['A_1'] 12x2 = df['Time'] 13y2 = df['A_2'] 14x3 = df['Time'] 15y3 = df['A_3'] 16 17sd1 = df['A_1sd'] #標準偏差が載っている列の指定 18sd2 = df['A_1sd'] 19sd3 = df['A_1sd'] 20 21fig = plt.figure() 22ax.set_xlim(0, 5) # x軸の表示範囲 23ax.set_ylim(0, 150) # y軸の表示範囲 24ax.set_xlabel("Time", fontsize=10) # x軸ラベル 25ax.set_ylabel("OD600", fontsize=10) # y軸ラベル 26 27ax.grid() # 目盛線の表示 28ax.tick_params(labelsize=10) # 目盛線のラベルサイズ
test.csv
test.csv
1Time,A_1,A_1sd,A_2,A_2sd,A_3,A_3sd 21,6,76,23159,125,23239,40 32,20,85,22709,99,22809,50 43,46,20,22629,89,22749,62 54,12,81,22729,85,22859,86 65,1,75,23029,90,23219,112
補足情報(FW/ツールのバージョンなど)
macOS10.15.4 Python3.7.3 Atom
> エラーバーではなく影として描画
とは?
どこかのWebページの、このグラフみたいにしたい、とかありませんか?
失礼致しました.
こちらの回答欄にあるようなグラフにしたいです.
https://stackoverflow.com/questions/26020142/adding-shade-to-r-lineplot-denotes-standard-error
有難うございます.
影というのはまさしくそんな感じです.(近似曲線なのでプロットとかは不要ですが)
有難うございます.
実は対数曲線に近似できるようなデータなので,ガウスではなくこちらの非線形モデルを採用する方が適切かと思われます.
https://qiita.com/hik0107/items/9bdc236600635a0e61e8
> 近似曲線なのでプロットとかは不要ですが
データから近似した式の曲線をグラフに書くのは、(曲線が滑らかに見えるように)十分に細かくxの値をサンプリングして、それぞれのxの値を式に代入してyを計算して、そのx, yのペアをプロットするのが普通です
それと同様にして、細かくサンプリングした各xから近似曲線の上限と下限の値をそれぞれ計算して、計算した上限と下限の間を私が紹介した「fill_between()」を使う方法で塗れば、グラフは書けます
有難うございます.
お手数で大変恐縮ですが,後学のため一例としてコードの形でご回答いただけますでしょうか?
よろしくお願いいたします..
たとえば、
https://cosmiccoding.com.au/tutorials/bayes_lin_reg
に例があります
xs, ys, errが、質問のCSVのデータに相当するものです
x_valsは、上記データの横軸の値(xs)とは無関係に、グラフ描画用に横軸を等間隔にサンプリングした値です
x_valsの各値から、best_fit(近似した式の曲線)や、bounds(近似曲線の上限と下限)の値が、近似したモデルから計算されて、Webページの一番下のグラフにプロットされています
上限と下限の間は、「fill_between()」で塗られています
Webページのグラフでは、errがエラーバーで表示されていますが、エラーバーを表示させなければ、質問しているようなグラフが描画できると思います
あなたの回答
tips
プレビュー