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

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

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

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

Python 3.x

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

Python

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

Q&A

1回答

1297閲覧

matplotlibはインストール済みなのにpyplotが使用できない

19220049

総合スコア0

Matplotlib

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

Python 3.x

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

Python

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

0グッド

0クリップ

投稿2023/01/20 18:55

編集2023/01/20 21:09

前提

・python3をインストール済
・matplotlibインストール済み
・ソースコード自体におそらく問題なし(別PCで動作確認済み)

実現したいこと

from matplotlib import pyplot as plt
を用いたい

発生している問題・エラーメッセージ

エラーメッセージ Traceback (most recent call last): File "C:\Users\hb\Desktop\卒業研究\mapping_simu-master\Alea\out\artifacts\Alea_jar\make-job-A.py", line 4, in <module> from matplotlib import pyplot as plt File "C:\Users\hb\AppData\Local\Programs\Python\Python311\Lib\site-packages\matplotlib\__init__.py", line 113, in <module> from . import _api, _version, cbook, _docstring, rcsetup File "C:\Users\hb\AppData\Local\Programs\Python\Python311\Lib\site-packages\matplotlib\rcsetup.py", line 27, in <module> from matplotlib.colors import Colormap, is_color_like File "C:\Users\h\AppData\Local\Programs\Python\Python311\Lib\site-packages\matplotlib\colors.py", line 56, in <module> from matplotlib import _api, _cm, cbook, scale File "C:\Users\hb\AppData\Local\Programs\Python\Python311\Lib\site-packages\matplotlib\scale.py", line 22, in <module> from matplotlib.ticker import ( File "C:\Users\hb\AppData\Local\Programs\Python\Python311\Lib\site-packages\matplotlib\ticker.py", line 138, in <module> from matplotlib import transforms as mtransforms File "C:\Users\hb\AppData\Local\Programs\Python\Python311\Lib\site-packages\matplotlib\transforms.py", line 49, in <module> from matplotlib._path import ( ImportError: DLL load failed while importing _path: 指定されたモジュールが見 つかりません。

該当のソースコード

python

1import csv 2import random 3from numpy.random import * 4from matplotlib import pyplot as plt 5 6# swfファイル作成のためのlist 7rowlist = [] 8 9job_v = input("job volume = ") 10job_v = int(job_v) 11 12#ジョブ実行時間用リスト作成(int型)→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→ 13''' 14# 平均30000, 標準偏差5000の正規乱数を生成(ジョブ実行時間用) 15values = normal(30000, 5000, job_v) 16#整数に変換 17values = values.astype(int) 18''' 19 20''' 21#1秒以上86400秒(一日)以下の範囲から整数刻みで乱数を生成(ジョブ実行時間用) 22values = [] 23for i in range(job_v): 24 values.append((randint(86399) + 1)) 25''' 26 27#1秒以上28800秒(8時間)以下の範囲から整数刻みで乱数を生成(ジョブ実行時間用) 28values = [] 29for i in range(job_v): 30 values.append((randint(28799) + 1)) 31 32 33#ジョブ実行時間用リスト作成(int型)→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→ 34 35 36#並列数用リスト作成============================================================ 37''' 38#80%で1,10%で2,残りの10%ずつで3,4(8ノード用) 39hei = [] 40for i in range(job_v): 41 r = randint(99) 42 #print(r) 43 if r < 20: 44 if r < 5: 45 hei.append(str(60)) 46 elif r >= 5 and r < 10: 47 hei.append(str(80)) 48 else: 49 hei.append(str(40)) 50 else: 51 hei.append(str(20)) 52 53 54''' 55''' 56#53.6%で1,26.4%で2,残りの20%で4~16(32ノード用) 57hei = [] 58for i in range(job_v): 59 r = randint(99) 60 #print(r) 61 if r < 20: 62 hei.append(str((randint(14) + 2) * 20)) 63 else: 64 if (r % 3) == 0: 65 hei.append(str(40)) 66 else: 67 hei.append(str(20)) 68''' 69#53.6%で1,26.4%で2,残りの20%で5~8(16ノード用) 70hei = [] 71for i in range(job_v): 72 r = randint(99) 73 #print(r) 74 if r < 20: 75 hei.append(str((randint(6) + 2) * 20)) 76 else: 77 if (r % 3) == 0: 78 hei.append(str(40)) 79 else: 80 hei.append(str(20)) 81 82 83 84 85''' 86#20%の確率で並列数2 87hei = [] 88for i in range(job_v): 89 if (i % 5) == 0: 90 hei.append(str(20)) 91 else: 92 hei.append(str(80)) 93''' 94 95#並列数用リスト作成============================================================ 96 97#到着時間用リスト作成~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 98to = [] 99#最初のジョブの到着を0、以降のジョブは1つ前のジョブが到着してから0秒以上1000秒以下の範囲から秒刻み 100atime =0 101for i in range(job_v): 102 to.append(str(atime)) 103 atime += randint(999) + 1 104 105 106#到着時間用リスト作成~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 107 108 109for i in range(job_v): 110 # 空のリストを追加 111 rowlist.append([]) 112 #それぞれデータを入れる 113 rowlist[i].append(str(i+1))#ジョブID 114 rowlist[i].append(to[i])#到着時間 115 rowlist[i].append(str(0)) 116 rowlist[i].append(str(values[i]))#実行時間 117 rowlist[i].append(hei[i])#並列数 118 rowlist[i].append(str(-1))#-1 119 rowlist[i].append(str(-1))#-1 120 rowlist[i].append(str(-1))#-1 121 rowlist[i].append(str(-1))#-1 122 rowlist[i].append(str(-1))#-1 123 rowlist[i].append(str(-1))#-1 124 rowlist[i].append(str(-1))#-1 125 rowlist[i].append(str(-1))#-1 126 rowlist[i].append(str(-1))#-1 127 128 ''' 129 #8ノード用 130 if int(hei[i]) == 20:#並列数1はキュー番号1,2はキュー番号2, 3~4キュー番号3 131 t = 1 132 elif int(hei[i]) == 40: 133 t = 2 134 else: 135 t = 3 136 137 138 ''' 139 #32ノード用 140 if int(hei[i]) == 40 or int(hei[i]) == 20:#並列数1,2はキュー番号1,3~9キュー番号2, 10~16キュー番号3 141 t = 1 142 elif int(hei[i]) > 40 and int(hei[i]) <= 180: 143 t = 2 144 else: 145 t = 3 146 147 ''' 148 t = 1 149 if hei[i] == '20':#並列数1はキュー番号②,並列数2はキュー① 150 t = 2 151 ''' 152 rowlist[i].append(str(t))#キュー番号 153 rowlist[i].append(str(-1))#-1 154 rowlist[i].append(str(-1))#-1 155 rowlist[i].append(str(-1))#-1 156 rowlist[i].append(str(-1))#-1 157 rowlist[i].append(str(20))#20 158 rowlist[i].append(str(-1))#-1 159 160# リストからcsvファイルに書き込み 161with open('./result.swf', 'w', newline="") as f: 162 datawriter = csv.writer(f) 163 datawriter.writerows(rowlist) 164 165 166

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

dameo

2023/01/20 20:23

卒業研究で忙しいのかもしれませんが、他人に質問するのにソースコードとエラーメッセージをごっちゃにしたままというのは頂けませんね。 そのコードはただの設定ファイル生成で、ほんのちょっとnumpyは使ってるものの、matplotlibは使ってませんよ。 入れるにしてもpipで入れればいいだけです。 先輩に聞けばいいだけなのにそれすら待てず、ネット上の赤の他人に丸投げかつぞんざいに聞くという態度では、就職も難しいし、万一できても長続きしませんよ。老婆心ながらharuさんあなたが心配です。
19220049

2023/01/20 20:53

申し訳ありません。仕組みを把握しきれておらずこのような質問となってしまいました。以後気を付けたいと思います。回答いただき、ありがとうございます。使ってないimport分を残しておくとエラーになるのですね、知らなかったです。ありがとうございました。
jbpb0

2023/01/21 00:27

> 使ってないimport分を残しておくとエラーになる matplotlibが正常に使える状態なら、普通はエラーにはなりません 要らないものをインポートするのは無駄なので、もちろんその行は削除する方がいいですが 質問のコードではmatplotlibを使ってませんが、そのpython環境でmatplotlibを使う必要が今後発生したら、同じエラーになります 以下は、そうなったら見てください > File "C:\Users\hb\AppData\Local\Programs\Python\Python311\Lib\site-packages\matplotlib\transforms.py", line 49, in <module> from matplotlib._path import ( ImportError: DLL load failed while importing _path: 指定されたモジュールが見 つかりません。 C:\Users\hb\AppData\Local\Programs\Python\Python311\Lib\site-packages\matplotlib に、名前が「_path」で始まるファイルかディレクトリが有るか、確認してみてください 確認して、やはり無いなら、matplotlibのインストールに失敗してるのだと思いますので、インストール済みのmatplotlibを削除してから再インストールしたら、おそらく直ると思います 確認して、有るなら、それをインポートする際に必要な別のdllファイルが不足してるのだと思いますので、dllの依存関係を追跡する必要があります
19220049

2023/02/11 11:04

再インストールしたら治りました、ありがとうございます。
guest

回答1

0

回答ではありません

venv下に環境構築するコードを書いてみました。
空ディレクトリで下記pythonコードを実行すると構築後、質問のコードを一度だけ実行します。

create_env.py

python

1import os 2import venv 3import subprocess 4ENV = 'env' 5if os.name == 'posix': 6 BIN = 'bin' 7else: 8 BIN = 'Scripts' 9builder = venv.EnvBuilder(with_pip=True) 10builder.create(ENV) 11cwd = os.getcwd() 12python = os.path.join(cwd, ENV, BIN, 'python') 13os.environ['VIRTUAL_ENV'] = os.path.join(cwd, ENV) 14os.environ['PATH'] = os.path.join(cwd, ENV, BIN) + os.pathsep + os.environ['PATH'] 15p = subprocess.run([python, '-m', 'pip', 'install', '--upgrade', 'pip', 'setuptools']) 16p = subprocess.run([python, '-m', 'pip', 'install', 'matplotlib', 'numpy']) 17with open('generated.py', 'wt', encoding='utf8') as f: 18 f.write("""\ 19import csv 20import random 21from numpy.random import * 22from matplotlib import pyplot as plt 23 24# swfファイル作成のためのlist 25rowlist = [] 26 27job_v = input("job volume = ") 28job_v = int(job_v) 29 30#ジョブ実行時間用リスト作成(int型)→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→ 31''' 32# 平均30000, 標準偏差5000の正規乱数を生成(ジョブ実行時間用) 33values = normal(30000, 5000, job_v) 34#整数に変換 35values = values.astype(int) 36''' 37 38''' 39#1秒以上86400秒(一日)以下の範囲から整数刻みで乱数を生成(ジョブ実行時間用) 40values = [] 41for i in range(job_v): 42 values.append((randint(86399) + 1)) 43''' 44 45#1秒以上28800秒(8時間)以下の範囲から整数刻みで乱数を生成(ジョブ実行時間用) 46values = [] 47for i in range(job_v): 48 values.append((randint(28799) + 1)) 49 50 51#ジョブ実行時間用リスト作成(int型)→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→ 52 53 54#並列数用リスト作成============================================================ 55''' 56#80%で1,10%で2,残りの10%ずつで3,4(8ノード用) 57hei = [] 58for i in range(job_v): 59 r = randint(99) 60 #print(r) 61 if r < 20: 62 if r < 5: 63 hei.append(str(60)) 64 elif r >= 5 and r < 10: 65 hei.append(str(80)) 66 else: 67 hei.append(str(40)) 68 else: 69 hei.append(str(20)) 70 71 72''' 73''' 74#53.6%で1,26.4%で2,残りの20%で4~16(32ノード用) 75hei = [] 76for i in range(job_v): 77 r = randint(99) 78 #print(r) 79 if r < 20: 80 hei.append(str((randint(14) + 2) * 20)) 81 else: 82 if (r % 3) == 0: 83 hei.append(str(40)) 84 else: 85 hei.append(str(20)) 86''' 87#53.6%で1,26.4%で2,残りの20%で5~8(16ノード用) 88hei = [] 89for i in range(job_v): 90 r = randint(99) 91 #print(r) 92 if r < 20: 93 hei.append(str((randint(6) + 2) * 20)) 94 else: 95 if (r % 3) == 0: 96 hei.append(str(40)) 97 else: 98 hei.append(str(20)) 99 100 101 102 103''' 104#20%の確率で並列数2 105hei = [] 106for i in range(job_v): 107 if (i % 5) == 0: 108 hei.append(str(20)) 109 else: 110 hei.append(str(80)) 111''' 112 113#並列数用リスト作成============================================================ 114 115#到着時間用リスト作成~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 116to = [] 117#最初のジョブの到着を0、以降のジョブは1つ前のジョブが到着してから0秒以上1000秒以下の範囲から秒刻み 118atime =0 119for i in range(job_v): 120 to.append(str(atime)) 121 atime += randint(999) + 1 122 123 124#到着時間用リスト作成~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 125 126 127for i in range(job_v): 128 # 空のリストを追加 129 rowlist.append([]) 130 #それぞれデータを入れる 131 rowlist[i].append(str(i+1))#ジョブID 132 rowlist[i].append(to[i])#到着時間 133 rowlist[i].append(str(0)) 134 rowlist[i].append(str(values[i]))#実行時間 135 rowlist[i].append(hei[i])#並列数 136 rowlist[i].append(str(-1))#-1 137 rowlist[i].append(str(-1))#-1 138 rowlist[i].append(str(-1))#-1 139 rowlist[i].append(str(-1))#-1 140 rowlist[i].append(str(-1))#-1 141 rowlist[i].append(str(-1))#-1 142 rowlist[i].append(str(-1))#-1 143 rowlist[i].append(str(-1))#-1 144 rowlist[i].append(str(-1))#-1 145 146 ''' 147 #8ノード用 148 if int(hei[i]) == 20:#並列数1はキュー番号1,2はキュー番号2, 3~4キュー番号3 149 t = 1 150 elif int(hei[i]) == 40: 151 t = 2 152 else: 153 t = 3 154 155 156 ''' 157 #32ノード用 158 if int(hei[i]) == 40 or int(hei[i]) == 20:#並列数1,2はキュー番号1,3~9キュー番号2, 10~16キュー番号3 159 t = 1 160 elif int(hei[i]) > 40 and int(hei[i]) <= 180: 161 t = 2 162 else: 163 t = 3 164 165 ''' 166 t = 1 167 if hei[i] == '20':#並列数1はキュー番号②,並列数2はキュー① 168 t = 2 169 ''' 170 rowlist[i].append(str(t))#キュー番号 171 rowlist[i].append(str(-1))#-1 172 rowlist[i].append(str(-1))#-1 173 rowlist[i].append(str(-1))#-1 174 rowlist[i].append(str(-1))#-1 175 rowlist[i].append(str(20))#20 176 rowlist[i].append(str(-1))#-1 177 178# リストからcsvファイルに書き込み 179with open('./result.swf', 'w', newline="") as f: 180 datawriter = csv.writer(f) 181 datawriter.writerows(rowlist) 182""") 183p = subprocess.run([python, 'generated.py'])

再使用する場合

作成した環境を再度使うためには、コマンドラインから以下を実行します。

Windowsの場合

cmd

1.\env\Scripts\activate

Unixライクな環境の場合

sh

1. env/bin/activate

元の環境に戻るには、どちらも以下でOKです。

cmd

1deactivate

詳しくはこちらを御覧ください。

投稿2023/01/20 21:30

編集2023/01/20 21:33
dameo

総合スコア943

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

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

dameo

2023/02/26 11:11

何の説明が不足しているのか皆目見当が付きません。 回答でもないので、仮に不明点があったとして別に誰かが困ることもないと思いますが…
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問