matplotlib の基本 1: プロットプロパティの基本設定 -- xticks(loc,labels) の書式設定 エスケープトークン
2022-02-22 03:56:36
matplotlibのプロットプロパティの基本的な設定。
-
中国語のフォントを太字で表示するように定義する。
plt.rcParams['font.sans-serif'] = ['SimHei'] とする。 -
通常表示でネガティブサインを表示する際に使用します
plt.rcParams['axes.unicode_minus'] = False
# -*- coding: utf-8 -*-
"""
Created on Tue Jul 24 15:11:36 2018
@author: Administrator
"""
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-np.pi, np.pi, 1000) # number of 1000 uniformly distributed endpoint=False
cos_y = np.cos(x) / 2
sin_y = np.sin(x)
# Initial values (x0,y0)
x0 = np.pi * 3 / 4
x1 = -np.pi * 4 / 5
y0_cos = np.cos(x0) / 2
y1_sin = np.sin(x1)
# text content
text_cont = 'This is a test!
# Set the graphical object : window
plt.figure('Figure Object 1', # the name of the figure object is displayed in the top left corner of the window
figsize = (8, 6), # window size
dpi = 120, # resolution
facecolor = 'lightgray', # background color
)
# Set the axis boundaries xlim ylim
plt.xlim(x.min() * 1.1, x.max() * 1.1)
plt.ylim(sin_y.min() * 1.1, sin_y.max() * 1.1)
# Set the title
plt.title('Function Curve', fontsize=14)
# ************************ Coordinate axis scale: start *****************************
# Method 1: Set the scale value i.e. axis scale xticks yticks
plt.xticks([-np.pi, -np.pi / 2, 0, np.pi / 2, np.pi * 3 / 4,
np.pi],
[r'$-\pi$', r'$-\frac{\pi}{2}$', r'$0$',
r'$\frac{\pi}{2}$', r'$\frac{3\pi}{4}$',
r'$\pi$'])
# formatting escapes string first and last r'$... $' (in matplotlib)
# xticks(loc, labels): labels formatting escape r'$-\frac{\pi}{2}$' Note the representation of fractions
# pi needs to be escaped to be displayed as pai. if $-pi$ then -pi is displayed directly
# Without the second [] argument, the scale value is displayed as -3.142, -1.571... etc., instead of -pi
plt.yticks([-1, -0.5, 0.5, 1]) # == ax.set_yticks([-1, -0.5, 0.5, 1])
# Method 2: Set the axis scale
# ax.set_yticks([-1, -0.5, 0.5, 1]) # Equivalent to plt.yticks([-1, -0.5, 0.5, 1])
# ax.set_xticks([-np.pi, -np.pi / 2, 0, np.pi / 2, np.pi * 3 / 4,
# np.pi],[r'$-\pi$', r'$-\frac{\pi}{2}$',r'$0$',
# r'$\frac{\pi}{2}$', r'$\frac{3\pi}{4}$',#r'$\pi$']) # Show -3,-2,-1
# Get the current axis
ax = plt.gca()
# Method 3: coordinate scale locator axis : ax.x[y]axis.set_major[minor]_locator(locator)
# Same function as (plt.xticks , plt.yticks) and (ax.set_xticks and ax.set_yticks)
# ax.yaxis.set_major_locator(plt.MaxNLocator(nbins=5, steps=[1, 3, 5, 7, 9])) # faceting 4 segments of data
# ax.yaxis.set_minor_locator(plt.MultipleLocator(0.5)) # subscale interval
'''Locator type.
'plt.NullLocator()',
MaxNLocator(nbins=5, steps=[1, 3, 5, 7, 9])', # nbin=5: the number of face element boundaries that 4 buckt steps do not know what it means
FixedLocator(locs=[0, 2.5, 5, 7.5, 10])', # Specify the location of the scale value directly
'plt.AutoLocator()', # Automatically assign the scale value position
'plt.IndexLocator(offset=0.5, base=1.5)', # face width (interval) 1.5, start from 0.5
'plt.MultipleLocator()', # Free to customize the interval of the scale
'plt.LinearLocator(numticks=21)', # Linear division into 20 equal parts, 21 ticks
'''plt.LogLocator(base=2, subs=[1.0])'''] # Log locator
'''
# Set the scale parameters for the axes
plt.tick_params(labelsize=10) # NOTE: not fontsize, but labelsize
# ************************ Coordinate axis scale: end *****************************
# Move the axis: set the position of the zero point on the axis ,set_position(tuple) element to tuple
ax.spines['left'].set_position(('data',0)) # data means position is relative to the data coordinate system
ax.yaxis.set_ticks_position('left') # y-axis 'right': the scale value is displayed on the right axis
ax.spines['bottom'].set_position(('data',0))
ax.xaxis.set_ticks_position('bottom') # x-axis top:ticks values are displayed on the top axis
# Hide the top and right borders
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
plt.plot(x, cos_y,
linestyle='-',
linewidth=2,
color='dodgerblue',
label=r'$y=\frac{1}{2}$cos(x)') # r'$. $' does not need quotation marks outside
plt.plot(x, sin_y,
linestyle='-', # line type
linewidth=2, # line width
color='orangered',
label=r'$y=sin(x)$') # label: the content of the legend display
# set legend legend, can be set directly in the plt.plot label property, and then plt.lengend () display
# loc order: "top middle bottom, then left middle right" default top left, shadow default: False
plt.legend(loc='upper left',shadow=False, fontsize=12)
# grid grid parameters
plt.grid(color = 'y', linestyle=':', linewidth=1)
# scatter
plt.scatter([x0, x1],[y0_cos, y1_sin], # coordinates of two points
s = 60, # fontsize
edgecolor='limegreen', # scattered edge color
facecolor='purple', # scatter fill color
zorder=3 # Z-order, layer order
)
# Line segment between two points
plt.plot([x0, x1],[y0_cos, y1_sin],
linestyle='--',
color='limegreen',
alpha=0.4, # transparency 0~1
marker='o', # dot style
markersize=6
)
# Note text for point (x0,y0)
plt.annotate(
r'$\frac{1}{2}cos(\frac{3\pi}{4}) = -\frac{\sqrt{2}}{4}$', # Remark text
xy = (x0, y0_cos), # target position
xycoords = 'data', # Target coordinate system: relative to the data coordinate system
xytext = (-70, -35), # text position, offset, textcoords = 'offset points' relative to target
textcoords = 'offset points', # offset of the coordinate system with respect to the target point as the origin
fontsize = 14,
arrowprops = dict(arrowstyle='->', # arrow style, '-|>' '->'
connectionstyle='arc3, rad=.2') # arrowprops
)
# plt.text: Add text to the axes.
# Add the text s to the axes at location x, y in data coordinates
plt.text(-2,
0.5,
'Content:%s' % text_cont, # text content , can be formatted
fontsize = 10,
ha='center',
va='center',
alpha=0.5,
color = 'r'
)
# Show image
plt.show()
'''
plot(*args, **kwargs)
Plot y versus x as lines and/or markers.
Call signatures:
plot([x], y, [fmt], data=None, **kwargs)
plot([x], y, [fmt], [x2], y2, [fmt2], ... , **kwargs)
'''
<イグ
注:使い方や書式に注意してください。
1. 書式付きエスケープライティングフォーマット
mp.xticks([-np.pi, -np.pi / 2, 0, np.pi / 2, np.pi * 3 / 4,
np.pi],
[r'$-\pi$', r'$-\frac{\pi}{2}$', r'$0$',
r'$\frac{\pi}{2}$', r'$\frac{3\pi}{4}$',
r'$\pi$'])
# 格式化转义 字符串首尾 r'$...$') (matplotlib中)
# xticks(loc, labels): labels 格式化转义方法 r'$-\frac{\pi}{2}$'
# pi需要转义才能显示为字符 pai. 若$-pi$ 则直接显示-pi
# 如果没有第二个[]参数,刻度值显示如-3.142, -1.571...等浮点数,而不是-pi
2. ティックロケータとフォーマット (Tick Locator)
参考リンク
matplotlib コマンドとフォーマット: 目盛軸の一次と二次スケール設定
プライマリースケール変数の定義
xmajorLocator = MultipleLocator(20) #将x主刻度标签设置为20的倍数
xmajorFormatter = FormatStrFormatter('%5.1f') #设置x轴标签文本的格式
ymajorLocator = MultipleLocator(0.5) #将y轴主刻度标签设置为0.5的倍数
ymajorFormatter = FormatStrFormatter('%1.1f') #设置y轴标签文本的格式
メインスケールラベルの位置と、ラベルテキストのフォーマットを設定する
ax.xaxis.set_major_locator(xmajorLocator)
ax.xaxis.set_major_formatter(xmajorFormatter)
ax.yaxis.set_major_locator(ymajorLocator)
ax.yaxis.set_major_formatter(ymajorFormatter)
サブスケールを変更する
xminorLocator = MultipleLocator(5) #将x轴次刻度标签设置为5的倍数
yminorLocator = MultipleLocator(0.1) #将此y轴次刻度标签设置为0.1的倍数
サブスケールラベルの位置を設定、ラベルテキストのフォーマットはなし
ax.xaxis.set_minor_locator(xminorLocator)
ax.yaxis.set_minor_locator(yminorLocator)
軸からスケールを削除する
ax.yaxis.set_major_locator(plt.NullLocator())
ax.xaxis.set_major_formatter(plt.NullFormatter())
日付形式を含むロケータの簡単な説明
ax.xaxis.set_major_locator(md.WeekdayLocator(byweekday=md.MO))
ax.xaxis.set_minor_locator(md.DayLocator())
ax.xaxis.set_major_formatter(md.DateFormatter('%d %b %Y'))
注1:
パイソン
unterstützt nur
:mod:
datetime
:func:
strftime-Formatierung
1900年以上の年について
class DateFormatter(ticker.Formatter):
"""
Tickposition ist Sekunden seit der Epoche. Verwenden Sie einen :func:`strftime`
Format-String.
Python unterstützt nur :mod:`datetime` :func:`strftime` Formatierung
für Jahre größer als 1900. Dank an Andrew Dalke, Dalke
Scientific Software, der den :func:`strftime` Code unten beigesteuert hat
zur Verfügung gestellt hat, um Daten vor diesem Jahr einzubeziehen.
"""
NOTE2:
の要素
.
のいずれかでなければなりません。
MO
,
TU .
,
WE .
,
TH
,
FR
,
SA
,
SU
からの定数:mod:
dateutil.rrule
にインポートされています。
matplotlib.dates
名前空間を使用します。
class WeekdayLocator(RRuleLocator):
"""
Kreuze an, wenn ein bestimmter Wochentag vorkommt.
"""
def __init__(self, byweekday=1, interval=1, tz=None):
"""
Markiert jeden Wochentag in *byweekday*; *byweekday* kann eine Zahl oder
Folge sein.
Die Elemente von *byweekday* müssen eines von MO, TU, WE, TH, FR, SA sein,
SU, die Konstanten aus :mod:`dateutil.rrule`, die in die
die in den Namensraum :mod:`matplotlib.dates` importiert wurden.
*interval* gibt die Anzahl der zu überspringenden Wochen an. Zum Beispiel,
``interval=2`` plottet jede zweite Woche.
"""
注3:
月別日
は
int
または
sequence
. デフォルト
bymonthday=range(1,32)
ロケータ属性のタイプです。
class DayLocator(RRuleLocator):
"""
Setzen Sie Häkchen beim Auftreten eines jeden Tages des Monats. Zum Beispiel,
1, 15, 30.
"""
def __init__(self, bymonthday=None, interval=1, tz=None):
"""
Markiert jeden Tag in *bymonthday*; *bymonthday* kann ein int oder eine
Sequenz sein.
Standardmäßig wird jeder Tag des Monats angekreuzt: ``bymonthday=range(1,32)``
"""
'''locator类型:.
'''plt.NullLocator()''',
'plt.MaxNLocator(nbins=5, steps=[1, 3, 5, 7, 9])', # nbin=5:面元边界个数即4个buckt steps不知道啥意思
'plt.FixedLocator(locs=[0, 2.5, 5, 7.5, 10])', # 直接指定刻度值位置
'plt.AutoLocator()', # 自动分配刻度值位置
'plt.IndexLocator(offset=0.5, base=1.5)', # 面元宽度(间隔)1.5,从0.5开始
'plt.MultipleLocator()', # 可以自由自定刻度间隔
'plt.LinearLocator(numticks=21)', # 线性划分20等分,21个刻度
'plt.LogLocator(base=2, subs=[1.0])'] # 对数定位器
'''
関連
-
[解決済み】twinx と twiny を一緒に使う matplotlib (twinxy のようなもの)
-
TclError: 表示名がない、$DISPLAY環境変数の解決策もない。
-
[解決済み] matplot の各極軸に xv ラインを追加する方法
-
[解決済み] matplotlib で swarm プロットを作成する方法
-
[解決済み] pad_inches=0 と bbox_inches="tight" は、宣言された figsize よりも小さいプロットを作成します。
-
[解決済み] matplotlib でプロットをクリアするために cla()、clf() または close() をいつ使うか?
-
matplotlib のエラーです。TypeError: -でサポートされていないオペランドタイプ: 'str' および 'str'
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
ハートビート・エフェクトのためのHTML+CSS
-
HTML ホテル フォームによるフィルタリング
-
HTML+cssのボックスモデル例(円、半円など)「border-radius」使いやすい
-
HTMLテーブルのテーブル分割とマージ(colspan, rowspan)
-
ランダム・ネームドロッパーを実装するためのhtmlサンプルコード
-
Html階層型ボックスシャドウ効果サンプルコード
-
QQの一時的なダイアログボックスをポップアップし、友人を追加せずにオンラインで話す効果を達成する方法
-
sublime / vscodeショートカットHTMLコード生成の実装
-
HTMLページを縮小した後にスクロールバーを表示するサンプルコード
-
html のリストボックス、テキストフィールド、ファイルフィールドのコード例