質問: Pythonのmatplotlib/seabornを使って散布図を描きたいのですが、ローマ字の都道府県名がDataframeのindexになっており、それを点としてプロットしたいと考えています。 Rの場合は例えばirisのデータですと、 ``` >plot(iris[,1],iris[,3],type="n") >text(iris[,1],iris[,3]) ``` とすれば出力されますが、matplotlibなどの場合はどのようにすればよいのでしょうか? 調べては見たものの、matplotlibにはオプションが存在しないのか答えに行き着かない状態です。 現在は ``` plt.scatter(x, y) ``` でプロットした散布図の出力はmatplotlibでできている状態です。 よろしくお願いします。 ****追記**** 説明が足らず失礼しました。 プロットした点がただの丸やバツになるのではなく、それぞれの個体がそれぞれの名前になる(例えば北海道のデータを表す点が"hokkaido", 東京のデータを表す点が"tokyo"となる)ようなコードを書きたいです。イメージとしては のページの図12や13でしょうか。 現在はmatplotlibのみで書いていますがseabornでもどちらでも構わないです。 コードは明日アップします。 ****追記**** Rの場合のコードです。 を参考に作成しました。 1列目が県名、2列目が収入、3列目が人口密度です。 ``` library(data.table) new <- fread("new.csv",header=TRUE) plot(new[,2],new[,3],type="n") text(new[,2],new[,3],new.label) colnames(new) <- c("pre","income","mitsudo") library(maptools) new <- as.data.frame(new) plot(new[,2],new[,3],type="n") pointLabel(x=new[,2], y=new[,3], labels=new$pre) ```
回答: `marker`に`mathtext`なる物を指定できます(こういう話ではないかもしれませんが)。 ``` import matplotlib.pyplot as plt x = [1, 2, 3, 4, 5, 6] y = [2**x for x in x] plt.scatter(x, y, marker="$Tokyo$", s=20**2) plt.show() ``` または`scatter`に拘らず、`text`, `annotate`, `plot`といったメソッドを使ってもよいのではないでしょうか。