[解決済み] Matplotlib でグリッド間隔を変更し、目盛りラベルを指定する
2022-02-03 16:15:17
質問
グリッドプロットにカウントをプロットしようとしているのですが、どうすればいいかわかりません。
欲しい
-
を、5の間隔で点線グリッドにする。
-
主要なティックラベルを20個おきにしか表示しない。
-
目盛りがプロットの外に出るようにする。
-
これらのグリッドの中に "counts" を持つようにする。
など、重複の可能性があるものをチェックしました。 ここで と こちら が、解明できていません。
これは私のコードです。
import matplotlib.pyplot as plt
from matplotlib.ticker import MultipleLocator, FormatStrFormatter
for key, value in sorted(data.items()):
x = value[0][2]
y = value[0][3]
count = value[0][4]
fig = plt.figure()
ax = fig.add_subplot(111)
ax.annotate(count, xy = (x, y), size = 5)
# overwrites and I only get the last data point
plt.close()
# Without this, I get a "fail to allocate bitmap" error.
plt.suptitle('Number of counts', fontsize = 12)
ax.set_xlabel('x')
ax.set_ylabel('y')
plt.axes().set_aspect('equal')
plt.axis([0, 1000, 0, 1000])
# This gives an interval of 200.
majorLocator = MultipleLocator(20)
majorFormatter = FormatStrFormatter('%d')
minorLocator = MultipleLocator(5)
# I want the minor grid to be 5 and the major grid to be 20.
plt.grid()
filename = 'C:\Users\Owl\Desktop\Plot.png'
plt.savefig(filename, dpi = 150)
plt.close()
こんな感じです。
また、データポイントが上書きされてしまうという問題もありますね。
誰かこの問題を解決してくれる人はいませんか?
解決方法は?
あなたのコードにはいくつかの問題があります。
まず大きなものから。
-
ループの繰り返しごとに、新しい図形と軸を作成している →→→→. 置く
fig = plt.figure
とax = fig.add_subplot(1,1,1)
をループの外に出す。 -
ロケータを使わないでください。関数を呼び出す
ax.set_xticks()
とax.grid()
を、正しいキーワードで表示します。 -
と
plt.axes()
は、新しい軸を再び作成することになります。使用するax.set_aspect('equal')
.
細かいことですが
のようなMATLAB的な構文を混ぜてはいけません。
plt.axis()
と目的語の構文があります。
使用方法
ax.set_xlim(a,b)
と
ax.set_ylim(a,b)
これは、動作する最小限の例であるべきです。
import numpy as np
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
# Major ticks every 20, minor ticks every 5
major_ticks = np.arange(0, 101, 20)
minor_ticks = np.arange(0, 101, 5)
ax.set_xticks(major_ticks)
ax.set_xticks(minor_ticks, minor=True)
ax.set_yticks(major_ticks)
ax.set_yticks(minor_ticks, minor=True)
# And a corresponding grid
ax.grid(which='both')
# Or if you want different settings for the grids:
ax.grid(which='minor', alpha=0.2)
ax.grid(which='major', alpha=0.5)
plt.show()
出力はこうです。
関連
-
Python jiabaライブラリの使用方法について説明
-
Pythonによるjieba分割ライブラリ
-
[解決済み】Python regex AttributeError: 'NoneType' オブジェクトに 'group' 属性がない。
-
[解決済み] builtins.TypeError: strでなければならない、bytesではない
-
[解決済み] Matplotlib のプロット: 軸、凡例、空白を削除する
-
[解決済み] ggplot2 の軸ラベルを回転させ、間隔を空ける
-
[解決済み] matplotlib で x 軸または y 軸の "目盛り頻度" を変更する
-
[解決済み] Matplotlibで目盛りラベルのフォントサイズを小さくする
-
[解決済み】Matplotlibで図のタイトルと軸ラベルのフォントサイズを設定するには?
-
[解決済み] matplotlib のプロットでフォントサイズを変更する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Pythonコンテナのための組み込み汎用関数操作
-
Python 人工知能 人間学習 描画 機械学習モデル作成
-
python implement mysql add delete check change サンプルコード
-
Python interpreted model libraryによる機械学習モデル出力の可視化 Shap
-
FacebookオープンソースワンストップサービスpythonのタイミングツールKats詳細
-
[解決済み】ImportError: sklearn.cross_validation という名前のモジュールがない。
-
[解決済み] _tkinter.TclError: 表示名がなく、$DISPLAY環境変数もない。
-
[解決済み】ImportError: PILという名前のモジュールがない
-
[解決済み】NameError: 名前 'self' が定義されていません。
-
[解決済み】cアンダースコア式`c_`は、具体的に何をするのですか?