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

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

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

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

Python 3.x

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

Q&A

解決済

1回答

1051閲覧

pythonでのリスト内リストから一つずつ要素を取り出し、新たなリストを作成する。

sho_shin_sha

総合スコア12

Matplotlib

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

Python 3.x

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

0グッド

0クリップ

投稿2018/03/28 17:14

前提・実現したいこと

散布図を描きたいです。
そのためのデータの扱いに困っています。
単純化すると、次のようなデータがあります。
(空のリストも

[a,b,c,d,e,f,g,h,i,j]
[[1,2,3],[],[2,3,4],[1,2],[1,2,3,4],[],[],[],[1],[1,2]]

やりたいことは、
(1)aにリスト内の先頭リストを対応させる。
(2)bにリスト内の2番目のリストを対応させる。
(3)以下同じ。
(4)散布図を描写する
(plt.scatterを使いたいです。理由は、すでに描いている棒グラフに重ねて描写するためです。)

このようなリストです。実際は、
(1)リストの中のリストの要素数は0から5個程度
(2)要素が入っていないリストもある。
(3)実際のリストの中のリストの数は40個、要素数はゼロから5程度です。

このデータを整理して散布図にしたいです。

該当のソースコード

python

1import matplotlib.pyplot as plt 2 3list = [6,3,2,0,5] 4lise_2 = [[1,2,3],[1,2],[1],[],[2,3]] 5 6yindex = ['a','b','c','d','e'] 7 8plt.barh(yindex, list) 9plt.xlim([0, 10]) 10plt.grid(which='major', linestyle='-.') 11 12plt.show()

試したこと

import matplotlib.pyplot as plt

list = [6,3,2,0,5]
lise_2 = [[1,2,3],[1,2],[1],[],[2,3]]

yindex = ['a','b','c','d','e']

plt.barh(yindex, list)
plt.scatter([2,4,5,6,2],yindex)
plt.xlim([0, 10])
plt.grid(which='major', linestyle='-.')

plt.show()

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

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

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

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

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

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

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

tell_k

2018/03/28 17:38

list_2 はなんのためにあるんでしょうか。もう少し具体的に、入力はどんなデータで、期待する結果はどういうのか書いてあると回答がつきやすいと思います。
sho_shin_sha

2018/03/28 17:56

ありがとうございます。indexは商品の名前です。棒グラフで表示しているlistは総販売量です。今回の質問では、大口販売情報(list2)を棒グラフに重ねて描写し、総販売量(=list)(小口と大口の合計)に対してどの程度の大口顧客(一定以上の販売量を持つ単体)が占めてをグラフで判断したかったのです。そのため、実際のデータは(list)と(list2)の合計データは一致しません。listから小口(ある一定以下の販売量)はカットしおり、ある水準以上の販売量(list2)をもつ顧客情報のみを取り出しています。期待する結果は、大口の寄与度を確認し、意思決定に役立てることです。(小口ばかりで成り立っているのか、大口だけなのかを見たいのです。。)また、積み上げ棒グラフも見やすいかなとも思っています。説明不足で申し訳ありませんでした。
tell_k

2018/03/28 18:04

「lise_2」という変数はコード上どこからも使われてないのはなぜなんでしょうか。
sho_shin_sha

2018/03/28 18:07

質問の回答に不備がありました。総販売量ではなく、総売り上げ(総販売量*単価)です。総売り上げに占める大口の割合を瞬時に判断できる状態にしたいと思っています。そのため、小口(ある一定水準以下の売上げ顧客の合計)をlist2には加えておりません。(もしかしたら、積み上げ棒グラフの方が見やすいかもしれませんが、、、各大口の色分けが必要で、プロセスがもう一つ増えますね。。。)
sho_shin_sha

2018/03/28 18:30

list2を軸(index)に対してグラフ表示できなかったので、使われないまま、そのままになっています。。。説明が非常に悪く、申し訳ありません。
guest

回答1

0

ベストアンサー

手数をかけずに実現するのであれば、list_2をpandas.DataFrame()でDataFrameに変換して、そのindexをyindexに置き換えることかと思います。

python

1df=pd.DataFrame(list_2) 2df.index=yindex

あとはこのDataFrameを操作して必要のグラフを作成すればいいと思います。

投稿2018/03/28 21:10

R.Shigemori

総合スコア3376

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問