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

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

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

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Matplotlib

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

Python

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

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

Q&A

解決済

1回答

886閲覧

実行中以外のデータは線で結びたくないです。

ken248

総合スコア24

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Matplotlib

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

Python

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

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

0グッド

0クリップ

投稿2021/06/01 08:48

編集2021/06/02 00:41

図にあるような折れ線グラフを作成しています。
黒線が全体にあり、それぞれの工程のところだけグラフを上書きして色を変えています。

困っているのは手書きで書いたようなことなのです。(×のところを消したい)
何か実行中(labelにあるような○○中の時)は上書きしてほしいのですが、それ以外ところは線を引きたくありません。
私が×でかこったことろは時間値と数値データはあるのですが、実行中(注入中)ではないため線をひきたくないです。

イメージ説明

簡単にですが、データはこんなイメージです。
時間と数値データは連続してありますが、注入中は途切れ途切れであります。
イメージ説明

コードは、injectのところだけ抜粋していますが、
ag,oil,water,takeoutでも同様の処理をしています。

なかなかわかりにくいかもしれませんが、アドバイスどうぞよろしくお願い致します。

#データ処理
inject = ag.query("アクション=='注入中'")

inject_time = pd.to_datetime(inject['記録時刻'],format= '%H:%M:%S' ).apply(pd.Timestamp)
inject_time2 = inject_time.dt.strftime('%H%M%S')
inject_time_hms = pd.to_datetime(inject_time2,format ='%H%M%S')
inject_time_str = bussei_time + inject_time2
inject_time_time = pd.to_datetime(inject_time_str,format ='%Y%m%d%H%M%S')

inject_homo = inject["回転数\n[rpm]"]

#ホモディスパの全体のグラフ書き方
plt.rcParams['font.family'] = "MS Gothic"

fig, ax = plt.subplots(1,1,figsize=(15, 10))
ax.plot(time_time ,ag_homo,color='k', linestyle='--', linewidth=1)
ax.plot(oil_time_time,oil_homo,color='g', linewidth=1)
ax.plot(water_time_time,water_homo,color='b', linewidth=1)
ax.plot(inject_time_time,inject_homo,color='y', linewidth=1)
ax.plot(takeout_time_time,takeout_homo,color='r', linewidth=1)

ax.legend(["全体","油層移相中","水層移相中","注入中","取り出し中"])
ax.set_xlabel('記録時刻')
fig.savefig("out.png");

なかなかわかりにくいかもしれませんが、アドバイスどうぞよろしくお願い致します。

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

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

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

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

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

guest

回答1

0

ベストアンサー

結びたくないところにNone(NaNかNaTでも)を挿入すればできると思います。

python

1X = [..., '16:43:54', '16:44:04', '17:04:13', ...] 2Y = [..., 1299, 1299, 0, 0, ...]

python

1X = [..., '16:43:54', '16:44:04', None, '17:04:13', ...] 2Y = [..., 1299, 1299, None, 0, 0, ...]

にします。

Xの間隔をチェックして、ある値以上あいていたらNoneを挿入する、みたいな処理をすればいいです。

投稿2021/06/01 11:11

bsdfan

総合スコア4794

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

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

ken248

2021/06/01 23:45

bsdfan様 コメントありがとうございます。 私の質問方法が悪くて申し訳ないのですが… 時間値と数値は一定の連続値なので、Noneを入れるのは難しいのです。 (質問のデータを若干追記しました。) 他に方法がございましたら教えていただきたいです。 よろしくお願いいたします。
bsdfan

2021/06/01 23:59

「データがないところは線で結びたくない」とありますが、 「時間値と数値は一定の連続値」と書かれると、データがないところはない、という意味に取れます。 図の×の部分もそういいうデータが連続的に入っているんでしょうか? データがないところというのがどういう意味になりますか?
bsdfan

2021/06/02 00:16 編集

もし、pandasを使われていて、例えば↓みたいなことをやっているんだったら、 inject_homo = ag_homo[xxx == '注入中'] whereに変えるだけでいけるかもしれません。 inject_homo2 = ag_homo.where(xxx == '注入中') その場合プロットのx軸は元のtime_timeで問題ないです。 ax.plot(time_time,inject_homo2,color='y', linewidth=1)
ken248

2021/06/02 01:07

bsdfan様 説明が拙い中アドバイス大変ありがたいです。 ありがとうございます。 データがないところ →質問自体も変更させていただきましたが、 注入中等のアクション部分だけを引っ張ってきてグラフ化しています。 ですのでデータ自体は連続的に存在しています。 説明が間違っており申し訳ございません。 where大変勉強になりました。 こちらでできました。 ありがとうございました。 今まではqueryでやっていたのですが… どちらがおすすめとかあるのでしょうか?
bsdfan

2021/06/02 01:52 編集

queryはデータフレームからその条件で抜き出したもの、 whereはデータフレームの、その条件にあわない部分をnanで埋めたもの、です。 queryはデータを切り出すのでデータの点数は減りますが、whereはnanで埋めるだけでデータの点数は元のままです。 使いたい場面によるので、どちらがおすすめとかはないです。(whereを使いたい場合のほうが少ないと思いますが) 今回のケースだと、queryでデータを切り出してしまうと、本来不連続なところでグラフがつながってしまうため、間にnanがあった方が良いということになるので、whereを使います。
ken248

2021/06/02 02:44

bsdfan様 詳しくありがとうございます。 用途によってですね。 大変勉強になりました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問