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

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

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

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Matplotlib

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

1413閲覧

y軸の30~60の間を黄色で編みかけしたい

退会済みユーザー

退会済みユーザー

総合スコア0

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Matplotlib

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2017/10/29 11:17

y軸の30~60の間を黄色で編みかけしたいです。

@login_required def past_result(request): return render(request, 'result.html', {'chart': _view_plot(request)}) def _view_plot(request): results = ImageAndUser.objects.filter(user=request.user).order_by('-consultation_date') scores = [1, 2, 3, 4, 5] dates = ['2016-04-10', '2016-10-05', '2016-10-10', '2016-10-11', '2016-12-10'] heights = [results[0].score, results[1].score,results[2].score, results[3].score, results[4].score] image_data =[] for i in range(len(scores)): if scores[i] != None : image_data.append(scores[i]) image_data.append(dates[i]) image_data.append(heights[i]) image_scores =[] image_dates = [] image_heights = [] for j in range(0,len(image_data),3): image_scores.append(image_data[j]) image_dates.append(image_data[j+1]) image_heights.append(image_data[j+2]) plt.plot(image_scores, image_heights,color="black",marker="x", markersize=15, markeredgewidth=4, linewidth=3) plt.xticks(image_scores, image_dates) plt.fill_between((30,60), facecolor='yellow', alpha=0.3) jpg_image_buffer = cStringIO.StringIO() plt.savefig(jpg_image_buffer) array = base64.b64encode(jpg_image_buffer.getvalue()) jpg_image_buffer.close() return array

とviews.pyに書き、past_resultメソッドを呼び出すと
TypeError at /accounts/past_result
fill_between() takes at least 2 arguments (1 given)
とエラーが出ました。
fill_betweenメソッドの引数の数が足りないのはわかりますが、一体何を増やせばいいのかわかりません。
なんのコードを増やして、なんの引数を足せばいいのかわかりません。
どのようにこのエラーを直して目的の挙動にすれば良いのでしょうか?

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

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

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

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

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

guest

回答1

0

ベストアンサー

このメソッドは引数に x,y1(とオプション)を取り、この二つが必須なので (30,60)をx=30,y1=60
に書き換えてみてください。

投稿2017/10/29 11:28

1129

総合スコア121

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

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

退会済みユーザー

退会済みユーザー

2017/10/29 12:19

ありがとうございます。x=30,y1=60に直したのですが、TypeError at /accounts/past_result len() of unsized object とエラーが出ました。
退会済みユーザー

退会済みユーザー

2017/10/29 12:21

Traceback: File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/handlers/exception.py" in inner 39. response = get_response(request) File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/handlers/base.py" in _get_response 187. response = self.process_exception_by_middleware(e, request) File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/handlers/base.py" in _get_response 185. response = wrapped_callback(request, *callback_args, **callback_kwargs) File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/contrib/auth/decorators.py" in _wrapped_view 23. return view_func(request, *args, **kwargs) File "/Users/xxx/Downloads/App/accounts/views.py" in past_result_tg 378. return render(request, 'result.html', {'chart': _view_plot(request)}) File "/Users/xxx/Downloads/App/accounts/views.py" in _view_plot_tg 405. plt.fill_between(x=30,y1=60, facecolor='yellow', alpha=0.3) File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/matplotlib/pyplot.py" in fill_between 2757. interpolate=interpolate, **kwargs) File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/matplotlib/axes.py" in fill_between 6998. where = np.ones(len(x), np.bool) Exception Type: TypeError at /accounts/past_result Exception Value: len() of unsized object
退会済みユーザー

退会済みユーザー

2017/10/29 12:21

ちなみに、上記のようにTracebackが出ました。どのように直せば良いのでしょうか?
1129

2017/10/29 12:23

y2を指定するとどうなりますか?
退会済みユーザー

退会済みユーザー

2017/10/29 12:28

y2に何を指定することを考えていますか?
1129

2017/10/29 13:13

調べながら回答していて、恐縮なのですがx= の値には数字ではなく範囲が必要だったようです。なので、 x=np.arange(塗り始めのX座標, 塗り終わりのX座標, 0.01) y1=30 y2=60 を指定してみてください。 何度もすいません。
退会済みユーザー

退会済みユーザー

2017/10/29 13:19

できました!ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問