matplotlibのコマンド形式:パラメータの設定ファイルと設定パラメータ

転送  https://my.oschina.net/swuly302/blog/94805

カスタムmatplotlibの

作成した土曜日2012年12月8日

5.1 matplotlibrcファイル

使用matplotlibのmatplotlibrc [matplotlibのリソース構成]は、我々は、RC、RCや設定パラメータを呼び出すプロファイルからさまざまな属性を定義します。ビューウィンドウのサイズ、およびインチあたりのドット数[解像度]、線幅、色、スタイル、軸、グリッド座標と属性、テキスト、フォント、およびその他の属性:matplotlibのでは、ほぼすべてのデフォルトプロパティの制御することができます。次の三つの場所から順にmatplotlibrcファイルを探すmatplotlibの:

1. matplotlibrc現在の作業ディレクトリは、通常、特定のカスタマイズであなたが他の場所で使用されたくない[カスタマイズ]
.matplotlib / matplotlibrc年2.ユーザーデフォルトのカスタム。ビュー   .matplotlibディレクトリの保管場所
パイソン/ matplotlibの/ MPL-データ/ matplotlibrcの3.インストールの場合Linuxの場合、この:. /Usr/lib/python2.5/site-packagesようなのpythonのインストール。窓の場合、おそらくC:\ pytho2.5 \ libに\のsite-packages。あなたはmatplotlibのをインストールするたびに、このファイルが上書きされます。あなたのカスタム設定を保存したい場合は、あなたの.matplotlibディレクトリにこのファイルを入れてください。

あなたがビューに、次の方法を使用することができ、現在の作業matplotlibrcファイルを取得するには:

>>> import matplotlib
>>> matplotlib.matplotlib_fname()
'/home/foo/.matplotlib/matplotlibrc'

次の例はファイルmatplotlibrcを考えてみましょう

5.2 RCの動的構成

あなたは、PythonやPythonのインタラクティブな環境でのスクリプトが動的にデフォルトのRCの設定を変更することができます。matplotlib.rcParamsと呼ばれる全てのRC構成変数はでmatplotlibのにグローバルに表示されている辞書フォーマットを、記憶されています。rcParamsは、次のような、直接編集することができます。

import matplotlib as mpl
mpl.rcParams['lines.linewidth'] = 2
mpl.rcParams['lines.color'] = 'r'

matplotlibのは、また、RCの設定を変更するために、いくつかの便利な機能を提供します。プロパティ・時間設定を変更するキー・パラメータを使用して、複数のmatplotlib.rc()コマンド:

import matplotlib as mpl
mpl.rc('lines', linewidth=2, color='r')

ここでmatplotlibの規格のデフォルト設定を復元するために()コマンドをmatplotlib.rcdefaults。
値rcParamsを確認することができ、詳細がありmatplotlib.rcsetup表示します。

5.2.1 matplotlibrcファイルの例

### MATPLOTLIBRCフォーマット

#これはmatplotlibの簡単な設定ファイルです-あなたはあなたのシステム/ matplotlibの/ MPL-データ/ matplotlibrc内のsite-packagesから見つけることができます 。
あなたがあなたを変更したい#場合、それはあなたがインストール次の時間をカバーすることに注意してください。あなたがしたい場合は、長い発見、残る
HOME / .matplotlib / matplotlibrc(UNIX / Linux)の中に入れて#ください
#のC :. \ DocumentsとSettings \ yournameの\ .matplotlib(win32のシステム)

#このファイルには最高ですPythonの構文の強調表示のテキストエディタモードのサポートに確認してください。
#改行や尾追加コメントの先頭に空白行やコメントは無視されます。:他の行は、以下の形式従う
#キー:値#オプションノート

R、k個のB、など:あなたはmatplotlibのように色文字列を使用することができ、以下では、色の値である:#色を
、#1 RGBタプルを使用することもできます例えば:(1.0、0.5、0.0)、
#16進数の文字列は、#またはFF00FF FF00FFとして、使用することができます。
#階調値のような、も使用することができる:0.75
#HTMLも法的カラー値を使用することができますように赤、青、darkslategray

####構成を開始

#デフォルトのバックエンド:GTK、GTKAgg、GTKCairo、CocoaAgg、FltkAgg、MacOSXは、QtAggから 
#Qt4Agg、TkAgg、WX、WXAgg、AGG、カイロ、GDK、PS、PDF、SVG、テンプレートを選択します。
もちろん#、あなたは「で、外部のmatplotlibのを所有することができますモジュール:// my_backend」リファレンス・モジュール名(のpythonディレクトリにインストールする必要があります)、
バックエンドを公開する#。
バックエンド:AGG

#あなたがQt4Aggのバックエンドを使用する場合は、PyQt4またはQt4をツールキットにバインドされた新しいPySideを使用する場所を選択することができます。
#backend.qt4:PyQt4#PyQt4 | PySide

有効な値は、「PyQtは」と「PySide」であり、これは使用QT_APIツールセット(ETS)を強化するために、環境変数を上書きすること#注意
QStringの力を設定#「PyQtは」とQVariantは、副作用のバージョンを使用2API

#あなたが使用pyplotとGUIでバックエンドの競合に選択した場合、
あなたは我々が自動的にあなたのための互換性のあるバックエンドを選択しますbackend_fallback真を設定する場合#。
#backend_fallback:真

#interactive:偽
#toolbar:toolbar2#なし| 古典| toolbar2
#timezone:UTC#A pytzタイムゾーンの文字列、例えば米国/ Centralまたはヨーロッパ/パリ

#matplotlibのを、あなたのデータはmatplotlibのフォント、ビットマップ、のような非デフォルトのインストール場所に保存されているというようにされている場合
#datapath:  /ホーム/ jdhunter / mpldata

###ラインの
詳細については#、プロパティラインを参照してください
#  http://matplotlib.sourceforge.net/api/artist_api.html#module-matplotlib.lines 
#lines.linewidth:1.0#幅
#lines.linwstyle: - #実線
#1 lines.color:ブルー
#1 lines.marker:なしデフォルトマーカー#
#lines.markeredgewidth:タグに0.5#幅近い
#のlines.markersize:6#マーカーサイズ
#lines.dash_joinstyle:マイターマイター#|ラウンド | ベベル
#のlines.dash_capstyle:#バットバット|ラウンド|投影
#1 lines.solid_joinstyle:| |ラウンドベベルマイター#マイターされている
突出|投影#バット|ラウンド:#1 lines.solid_capstyle
なし(トゥルー#アンチエイリアスレンダリング:#lines.antialiasedノッチ)

###ストライプ[パッチ]
#マークは、円形または多角形のような2次元の空間を充填するために使用されるグラフィックオブジェクト、ある
詳細については#、ご覧ください  http://matplotlib.sourceforge.net/api/artist_api.html#module-matplotlib.patches
patch.linewidth#:ポイントで#1.0エッジ幅
ブルーます。#patch.facecolor
#のpatch.edgecolor:ブラック
#はpatch.antialiased:真#アンチエイリアスレンダリング(ギャップなし)

###フォント
# 
#フォント属性は、文章を書きに使用されています。詳細については、以下を参照してくださいhttp://matplotlib.sourceforge.net/api/font_manager_api.html
フォント属性の#6種類のデフォルト値を使用して以下に示す
「セリフ」(のような::タイムズ)#font.familyプロパティには、5つの値を持っています、
(のような:Helvetical)#「サンセリフ」、「筆記体」(例:ツァップ-チャンセリー)
#「ファンタジー」(例:西洋)と「モノスペース」。(例:クーリエ)
#各ファミリは、デフォルトのフォントを持っています優先順位の並びの順降順にリストされている一部のフォント

#のfont.styleプロパティには、三つの値:.ノーマル(またはローマン)、イタリック、または斜め持って 
いない場合、それはイタリック体で使用されます#斜めのスタイルを。

#Font.variantプロパティは、TrueTypeフォントの種類のための2つの値:.ノーマルまたはスモールキャップを持っている
(:ABCDEなど)と「小さい」または現在のフォントサイズフォントサイズを使用する#スケーラブルフォントは、大文字を小文字%約83に相当し

ノーマル、太字、大胆、ライター、100、200、300、...、900である:#font.weight RMS 13プロパティは
、#ノーマルと400

#11 font.stretchプロパティ値:超凝縮、
#エクストラ凝縮、凝縮、SEMI-凝縮、通常は、SEMI-拡張、
。WIDER、狭い%超拡大#拡張、拡大・エクストラ、
#このプロパティは、これまで達成されていません。

#Font.Sizeプロパティは、テキストのフォントサイズのデフォルト設定で、ポイントでは、12ptのは標準値です。

#Font.family:サンセリフ
#font.style:ノーマル
#1 font.variant:ノーマル
#1 font.weight:ミディアム
#1 font.stretch:ノーマル
#注font.sizeは、デフォルトのフォントサイズを制御します。あなたは、目盛りラベル、軸、ラベル、タイトルなどのように指定したテキストのサイズを設定したい場合。
RC軸構成やダニ#を参照してください。XX-小型、X小型、小、中、テキストのサイズは、以下の値を使用して指定でき 
Font.Size規定サイズに#大、X-大、より大きな、XX-大きい、または小さい相対
12.0:#font.size
ビットストリームベラセリフ、新世紀Schoolbookが、世紀SchoolbookがL、ユートピア、ITCブックマン、ブックマン、ニンバスローマNO9 L、のTimes New Roman、タイムズ、パラティーノ、憲章、セリフ:font.serif#
#font.sans-セリフ:ビットストリームベラなき、ルシーダグランデ、MS Pゴシック、ジュネーブ、明晰、ゴシック、ヘルベチカ、アバンギャルド、サンセリフ
#font.cursive:アップルチャンセリー、繊維、ツァップチャンセリー、砂、筆記体
#1 font.fantasy:コミックのSans MS、シカゴ、木炭、インパクト、西、ファンタジー
#1 font.monospace:ビットストリームベラなきモノ、Andaleモノ、ニンバスモノラルL、宅配便新しい、宅配便、固定、ターミナル、モノスペース

###テキスト

#テキスト属性は、文章を書き使用されています。詳細については、以下を参照してください
#  http://matplotlib.sourceforge.net/api/artist_api.html#module-matplotlib.text 
#text.color:ブラック

###ラテックスカスタム
#  ビューhttp://www.scipy.org/Wiki/Cookbook/Matplotlib/UsingTex
#text.usetex:偽#すべてのテキストがラテックスで処理されます。あなたは、設定RCでサポートされている以下のパラメータを設定することができますフォント:
#新しい新世紀Schoolbookが、ブックマン、タイムズ、パラティーノ、
#ツァップチャンセリー、憲章、セリフ、サンセリフ、ヘルベチカ、
#アバンギャルド、宅配便、モノスペース、 

#コンピュータ現代ローマン、
#コンピュータ現代サンセリフ、コンピュータ現代のタイプライター
LaTeXのの\ userpackageコマンドは、他のワードが必要な場合#
#本体を、matplotlibのメーリングリストにご相談ください 

#Text.latex.unicode:ハンドルUnicode文字列へのLaTeXパッケージ "inputenc" 偽#の使用 "UCS" と

#Text.latex.preamble:この機能の#誤って使用すると、エラーが発生する可能性があり、ラテックスをサポートしていません。

#この機能は、あなたが期待するよう、ヘルプ作業していないしていない場合
#LaTeXのプリアンブルのステートメントは、プリアンブルLaTeXのドキュメントに含まれているコンマ区切りのリスト、である
ような#:

#text.latex.preamble:\ USEPACKAGE {BM} \ USEPACKAGE {}オイラー

#このパッケージは、常にロードしながら、このusetexに従います。だから、慎重なパケット衝突すること:色、ジオメトリ、 
#graphicx、type1cm、textcompフォントの設定あなたのAdobeのPostScriptに応じて。 
#フォントをロードすることができます。 
#Text.dvipnghack:正しくアルファチャンネルを扱えない一部のバージョンなし#1 dvipng。
テスト前に検出してリフレッシュするには、trueに設定する#
#noneに設定は、あなたのdvipngのバージョン検出や憶測に基づいて行われます 

#Text.hinting:真#Trueの場合、テキストが、それ以外の場合は、プロンプトテキストではない、プロンプトテキストになります。AGGバックエンドにのみその効果

#Text.antialiased:真#真(デフォルト値)場合は、テキストがアンチエイリアスされます。AGGバックエンドにのみその効果

#以下の設定を使用すると、フォントの数学モデルを選択できるようにする
フォント設定モードにTeXのフォントからそれらをマップ#を。これらの設定は、唯一mathtext.fontsetセットが場合にのみ、「カスタム」に使用されますされています。
#この「カスタム」モードは、今サポートされていない、近い将来に放棄されることに注意してください。
mathtext.cal#:筆記体
#mathtext.rm:セリフ
#mathtext.tt:モノスペース
#mathtext.it:セリフ:斜体
#mathtext.bf:セリフ:太字
#1 mathtext.sf:なき
#mathtext.fontset:#センチ& 'もLT CM&LT '(コンピュータ現代)、'スティックス'
#' stixsans'または'カスタム'
#mathtext.fallback_to_cm:#TRUE TRUE、シンボルからの利用はComputer Modern
A記号はのない一つで見つけることができます#フォント
#[カスタム数式フォント。

#Mathtext.default:それは#数学デフォルトのフォント。任意のLaTeXのフォント名は、いくつかの特殊な法的なフォントを含めることができ

軸###
#のデフォルトの色面とエッジとティック・サイズ
#ティックラベルのデフォルトのフォントサイズなどが挙げられます。
#チェックアウト:
#  http://matplotlib.sourceforge.net/api/axes_api.html#module-matplotlib.axes
#axes.hold:座標軸をクリアするかどうかを真の#は、デフォルトで有効になって
白#座標:#1 axes.facecolor軸の背景色
#1 axes.edgecolor:ブラック#エッジ色軸
1.0#縁幅:#1 axes.linewidth
#axes.grid:グリッド表示するかどうか偽#
大#軸タイトルのフォントサイズ:#1 axes.titlesizeを
#axes.labelsize:媒体#xとyは、フォントサイズ軸
フォントの正常#x軸とy軸の高さ:#1 axes.labelweight
#1 axes.labelcolor:ブラック
#1 axes.axisbelowを:偽位軸グリッド線とティック座標テキスト行または他の要素は、軸の下に示されている
#1 axes.formatter.limits:-7、使用科学表記IF#7 loglO。
範囲が最後の内小さい軸
最後秒以内に最初の#以上
#Axes.formatter.use_locale:偽#trueの場合、ラベルフォーマットのユーザーにチェックを入れますローカル環境に応じました。

例えば、#:分離された場合、小数の分割数としてフランスであろう「」使用

#axes.unicode_minus:真#マイナスUnicodeは、ハイフンの代わりに使用される参照
#  http://en.wikipedia.org/wiki/Plus_and_minus_signs#Character_codes
#axes.color_cycle:B、G、R&LT、C、M単一文字またはフルネーム、またはWebスタイルの16進:、Y、K#がラインカラーサイクル、カラーリストを描画します。

#polaraxes.grid:真#極軸表示グリッド
#1 axes3d.grid:真#3D軸の表示グリッド

###スケール/記号[TICKS]
表示  http://matplotlib.sourceforge.net/api/axis_api.html#matplotlib.axis.Tick
#xtick.major.size:4#フルスケールサイズ
#1 xtick.minor.size :最小スケールサイズ#2
#xtick.major.width:0.5#最大スケール幅
#xtick.minor.width:0.5#最小スケール幅
#xtick.major.pad:規模の4#最大距離は、ラベル
#xtick.minor.padました:最小距離スケールが#4ラベル
#1 xtick.colorを:K#カラースケールは、ラベル
#xtick.labelsize:中程度#ティックラベルフォントサイズ
#1 xtick.direction:#ポイントで:またはアウト

#ytick.major.size:4#フルスケールサイズ
#1 ytick.minor.size:2#最小スケールサイズ
#1 ytick.major.width:0.5#最大スケール幅
#ytick.minor.width:0.5#最小スケール幅
#ytick .major.pad:スケールの4#最大距離は、ラベル
#ytick.minor.pad:4#最小距離目盛ラベル
K#カラースケールラベル#ytick.colorは
媒体#ティックラベルフォントサイズ:#ytick.labelsize
#1 ytick.directionました: #ポイントで:inまたはout

グリッド### [GRIDS]
#grid.color:カラーブラックメッシュ#
#grid.linestyle ::#ポイント
#1 grid.linewidth:0.5#ptの

レジェンド### [レジェンド]
#のlegend.fancybox:角丸、ブロックや肘の使用と#FALSE TRUE使用ボックス
トゥルー:#1 legend.isaxesを
#1 legend.numpoints:レジェンドラインにおけるポイントの2位数
# legend.fontsize:大
#1 legend.pad:#0.0は、放棄された
0.5#エッジフォントサイズのブランクセル#のlegend.borderpad
#1 legend.markerscale:1.0#相対サイズ元対凡例マーカーの

#以下の寸法は、軸の座標での、あります
#legend.labelsep:0.010#は非推奨
フォントサイズのいくつかの画分の使用を示す、凡例#0.5との間の垂直距離:legend.labelspacing位
legend.handlelen位:0.05#は廃止
#1 legend.handlelengthを:2#凡例の間の長さのいくつかの画分のフォントサイズ表記
#1 legend.handleheight:0.7#凡例の間の高さのいくつかの画分のフォントサイズ表記
#1 legend.handletextsepは:0.02#は放棄されていますで
0.8線及び凡例#凡例凡例テキストとの間の距離は、フォントサイズの画分は、いくつかを表します。#legend.handletextpad
#1 legend.axespadが:0.02#は廃止
0.5#エッジ凡例:#1 legend.borderaxespadをいくつかの使用されるフォントサイズフラクションの軸との間のギャップ距離を表し、
#2:#legend.columnspacing 
#legend.shadow:偽
#1 legend.frameonを:真#凡例は、外枠に表示されます。

###ビューウィンドウ[図]
#確認してください  http://matplotlib.sourceforge.net/api/figure_api.html#matplotlib.figure.Figure
#figure.figsize:8、6#ビューウィンドウのサイズ、インチで
#figure。解像度:80#ビューウィンドウのDPI
#1 figure.facecolor:0.75#ビューウィンドウの色、階調値用いて0.75
#figure.edgecolor:色白#ビューウィンドウ側

すべてのサイズのサブパラメータ#ビューウィンドウビュービューウィンドウのサイズいくつかの画分である。
#Figure.subplot.left:0.125位副ビューの一部左
サブビューの0.9#右部分:#1 figure.subplot.right
#figureを。 subplot.bottom下部サブ0.1#図
#1 figure.subplot.top:0.9#上部サブビュー
#1 figure.subplot.wspace:副ビューとの間の0.2#横方向のギャップ間隔
#1 figure.subplot.hspace:0.2#サブビューブランクの間の長手方向の間隔

###画像[IMAGES]
のimage.aspect:| |オートAナンバー等しいが同じでは#です
バイリニア#の使用ヘルプ(imshowを)もっと用:#1 image.interpolation
#のimage.cmap:ジェット#グレー|ジェット等...
# image.lut:256#カラールックアップテーブルサイズ
#のimage.origin:下位上位の#|アッパーの
#のimage.resample:偽

###轮廓图[等高線プロット]
#contour.negative_linestyle:破線#破線| 固体

### AGGレンダリング
###警告:まだ実験、2008年10月10日
#agg.path.chunksize:0#0が無効になっている;約10000から100000の値が速度を上げると、マイクロAGGをするときに、レンダリングに失敗減らすことができます大量のデータを描画するとき。

#それはアーティファクトを生み出すかもしれないが。20,000良い出発点です。

###保存ビューウィンドウ
#path.simplify:真の#は単純なレンダリングを提供するために、目に見えないポイントサイズと速度を除去することで、ファイルを減らすために、Trueで
#のpath.simplify_thresholdを:簡略化プロセスで0.1#、最高点以下の類似度閾値削除されます
#path.snap:にスナップされますすることによって真の#真、軸整列直線パスの
場合はFalseを,.時に最も近いピクセル、一定の基準に#が満たされている
#パスはなることはありませんでスナップ。

#デフォルトパラメータがあるため、ビューウィンドウが表示され、異なるパラメータと異なるの保存されます。以下のような:あなたは、高解像度をしたいですか、ウィンドウの背景が白で表示します。
#savefig.dpi:インチあたり100個の#ビューウィンドウドット
#のsavefig.facecolor:保存する色白#ビューウィンドウ
#savefig.edgecolor:白#ビューウィンドウのエッジの色を保存した際に
、自動#どのようなファイルの拡張子:#1 savefig.extensionを

#cairo.format:PNG#PNG、PS、PDF、SVG

#Tkのバックエンドパラメータ
#tk.window_focus:偽位シェルフォーカス維持 TkAggのために

#psの后端参数
#ps.papersize:手紙#自動、レター、リーガル、レジャー、A0-A10、B0-B10
#ps.useafm:AFMフォントの偽#を使用し、小さなファイルに結果
#1 ps.usedistiller:偽#ことができます:なし、ghostscriptのかxpdfの
#実験:小さいファイルを生成することができます。
#xpdfのは、出版品質のファイルを生産するためのもの
#のが、ghostscriptの、xpdfのとps2eps必要です
#ps.distiller.res:6000#dpiの
#ps.fonttype:3#出力タイプ3(タイプ3)またはType 42(TrueTypeフォント)

#PDF后端参数
#pdf.compression:6#整数0から9まで
#0の場合は無効に圧縮(デバッグするための良い)
#1 pdf.fonttype:3#出力タイプ3(タイプ3)またはタイプ42(TrueTypeフォント)

SVGは、リア#パラメータ
SVGファイルに直接書き込ま真#ラスタデータ:#のsvg.image_inline
#のsvg.image_noscaleを:偽#ラスタデータは、割合SVGにスケーリングされていない
#1 svg.fonttype:「パス」#をSVGに対処する方法フォント
#「なし」:フォントが既にインストールされていると仮定し、SVG通常のビュー
#「パス」:パス内に移植文字-サポートほとんどのSVGレンダラの
#「svgfont」:SVGフォントとして移植文字- -クローム、オペラとSafariでサポートされています

#ドキュメント文字列パラメータ
#docstring.hardcopy = Falseの#あなたはそれを設定するには、ドキュメントのハードコピーを生成する場合

#長いメッセージ記号を設定します。それはあなたが与えることができますどのくらいの情報、実行時にコントロールをmatplotlibの。
レベル#長い情報であってもよい:.サイレント、便利、デバッグは、デバッグ・迷惑な任意のレベルは、その前のレベルが含まれます。
#デバッグのレベルを設定すると、あなたはすべてのデバッグ、有用レベルに関する情報を取得します。
#ご質問、便利セットやデバッグ、およびレポートに添付の出力を提出するメーリングリストを使用している場合。

#fileoが冗長な情報のレポート出力先を教えてください。ファイル名またはsys.stdoutのようなファイルハンドルすることができます。
#あなたは、デフォルトのrcの冗長な情報を上書きすることができ、コマンドラインでロゴ--vervbose-LEVELを使用し、LEVELのような、法的なレベルである: -冗長-役立ちます

#あなたのコード内で冗長な情報のインスタンスにアクセスすることができます。
。#冗長matplotlibのからインポート
#Verbose.level:#サイレントサイレント、便利、デバッグ、デバッグ、迷惑なの一つ
#verbose.fileo:sys.stdoutの#1 Aのログファイル名、またはsys.stderrを持ちsys.stdoutの

ビューウィンドウとと相互作用することによって位キーのキーボードイベント
要件に応じて#、カスタム設定
#キーテーブルそうでない場合は、空にしてください(例:フルスクリーン:「」)

#keymap.fullscreen:#フルスクリーンF
、H、R、家庭用:#keymap.home #の自宅またはリセットニーモニック
#のkeymap.back:左、cは、バックスペース #が前方または後方キーの有効
#のkeymap.forward:右、Vクイックナビゲーション#左
pは#モバイルニーモニック#keymap.pan
#1 keymap.zoom:O#ズームニーモニック
#keymap.save:現在のビューウィンドウ保存S#は
#keymap.grid:グリッド#Gは、現在の軸スイッチ
#1 keymap.yscale:L#y軸スケール(ログ/線形)
#keymap.xscale:L、K#X軸スケール(ログ/線形)
#keymap.all_axes:#すべての軸を開始

#コントロールは、サンプルデータをダウンロードしてください。多くの例が中に発行された多くの追加の文書を削除し、gitのリポジトリmatplotlibの者からダウンロードすることができます。
この場合、#、あなたがFalseとするように設定をexamples.downloadすることができ
、ダウンロードしたい#設定examples.directory:  https://github.com/matplotlib/sample_data 

#examples.download:真#1 Falseがダウンロードメカニズムを無視
#のexamples.directoryを:「」#ダウンロードディレクトリがFalseを見つけるためにした場合

おすすめ

転載: www.cnblogs.com/zb-ml/p/12384315.html