質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

0回答

527閲覧

影付きの近似曲線を描画したい

farinelli

総合スコア61

Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2021/06/23 06:13

前提・実現したいこと

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jbpb0

2021/06/23 06:39

> エラーバーではなく影として描画 とは? どこかのWebページの、このグラフみたいにしたい、とかありませんか?
farinelli

2021/06/23 06:53

有難うございます. 影というのはまさしくそんな感じです.(近似曲線なのでプロットとかは不要ですが)
jbpb0

2021/06/23 09:18

> 近似曲線なのでプロットとかは不要ですが データから近似した式の曲線をグラフに書くのは、(曲線が滑らかに見えるように)十分に細かくxの値をサンプリングして、それぞれのxの値を式に代入してyを計算して、そのx, yのペアをプロットするのが普通です それと同様にして、細かくサンプリングした各xから近似曲線の上限と下限の値をそれぞれ計算して、計算した上限と下限の間を私が紹介した「fill_between()」を使う方法で塗れば、グラフは書けます
farinelli

2021/06/23 09:42

有難うございます. お手数で大変恐縮ですが,後学のため一例としてコードの形でご回答いただけますでしょうか? よろしくお願いいたします..
jbpb0

2021/07/02 12:51

たとえば、 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がエラーバーで表示されていますが、エラーバーを表示させなければ、質問しているようなグラフが描画できると思います
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問