食べたもののレコーディングするプログラムを作製していて、最後に棒グラフで表示をしたいと思っているのですが、思ったように表示される時とされない時があります。
基本的には思ったように表示されないです。もしよろしければ、原因など相談にのっていただけるとありがたいです。よろしくお願いします。
ここに質問の内容を詳しく書いてください。
自身で定義した関数を使って、データベースから数値を引っ張り出して計算させて、要素毎に合計を算出させるといったプログラムを組んでいます。
発生している問題・エラーメッセージ
メッセージは出ていませんが、計算結果通りのグラフにならないことが多く、原因が分からないのでどう改善したらいいか困っています。
エラーメッセージ ```![イメージ説明](c96ff6e59bb59af578f11b2de807286f.png) ### 該当のソースコード ```ここに言語を入力 while True: time = input("朝食・昼食・夕食・間食から選んでください:") if time == "朝食": breakfast = calorie_calculation() nutrient = np.array(["protein", "carb", "sugar", "fiber"]) plt.bar(nutrient, breakfast, color='red') plt.plot() elif time == "昼食": lunch = calorie_calculation() nutrient = np.array(["protein", "carb", "sugar", "fiber"]) plt.bar(nutrient, lunch, bottom = breakfast, color='blue') elif time == "夕食": dinner = calorie_calculation() nutrient = np.array(["protein", "carb", "sugar", "fiber"]) plt.bar(nutrient, dinner, bottom = lunch, color = 'green') elif time == "間食": snack = calorie_calculation() nutrient = np.array(["protein", "carb", "sugar", "fiber"]) plt.bar(nutrient, snack, bottom = dinner) else: question = input("以上ですか?") if question == "はい": print("入力を終了します。") break else: continue ### 試したこと グラフ化のコードをどこに書くかなどは試してみたのですが、あまり意味はなかったです。計算させた後のデータの扱い方が悪いような気もします。 ### 補足情報(FW/ツールのバージョンなど) ここにより詳細な情報を記載してください。 自分で作った関数の詳細です。
def calorie_calculation(): total_result = [] total_protein= [] total_carb = [] total_sugar = [] total_fiber = [] result = [] while True: name = input("食べたものを入力してください:") result = nut_data2[nut_data2['商品名'].str.contains(name)] if name == "": print("入力を終了。") break else: question = input(f"食べたものは{np.array(result['商品名'])}で合ってますか?:") if question == "いいえ": continue elif question == "はい": result_protein = np.array(result['タンパク質']) result_carb = np.array(result['炭水化物']) result_sugar = np.array(result['糖質']) result_fiber = np.array(result['食物繊維']) volume = int(input("食べた量(%):")) standard_volume = np.array(result['単位']) actual_volume = standard_volume * volume actual_protein = result_protein * volume actual_carb = result_carb * volume actual_sugar = result_sugar * volume actual_fiber = result_fiber * volume total_result.append(result) total_protein.append(actual_protein) total_carb.append(actual_carb) total_sugar.append(actual_sugar) total_fiber.append(actual_fiber) print(f"今日の摂取量は,タンパク質{int(sum(total_protein))}g,炭水化物{int(sum(total_carb))}g,糖質{int(sum(total_sugar))}g, 食物繊維{int(sum(total_fiber))}gです。") fig_protein = float(sum(total_protein)) fig_carb = float(sum(total_carb)) fig_sugar = float(sum(total_sugar)) fig_fiber = float(sum(total_fiber)) volume = np.array([fig_protein, fig_carb, fig_sugar, fig_fiber]) return volume
回答1件
あなたの回答
tips
プレビュー