ホーム > matplotlibの使い方 > 更新・エラー情報

MacPortsでのXZ Utilsについて(2024/04/01)

2024年3月末にXZ Utilsの脆弱性(CVE-2024-3094)が公表されました。この脆弱性の影響を受けているバージョンでは、XZ Utilsに悪意のあるコードが挿入されており、必要な対処の実施が推奨されています(JPCERT)。MacPortsでは、この脆弱性の影響を受けるバージョン5.6.1に更新されていましたが、3月末に影響を受けないバージョン5.4.6にダウングレードされました(MacPorts XZ Utils)。

XZ Utilsのバージョンは
% strings /opt/local/bin/xz |grep '(XZ Utils)'
で確認可能です。もし脆弱性の影響を受けるバージョン5.6.0か5.6.1が表示された場合には、次のように最新版に更新してください。
% sudo port selfupdate
% sudo port upgrade outdated


cartopyでのlgeosインポートエラー(2023/06/04)

2023年5月のアップデートに伴い、MacPortsでインストールされるshapelyのバージョンが1.8.5から2.0.1になりました。このバージョンでは、cartopyy-0.21.0が内部でインポートしているlgeosが含まれないようになったため、以下のようなImportErrorが発生します(Python3.10の場合のエラーメッセージ例)。このエラーは、cartopyインポート時に不可避な部分で発生しており、shapely-2.0.1のアップデートが適用されてしまった場合には、shapelyのバージョンを1.8.5に戻す必要があります。なお、2023/06/09にMacPortsで更新されたcartopy-0.21.1で一連の不具合が解消されたため、MacPortsで取得できる最新版への更新をお薦めします
>>> import cartopy
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/opt/local/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/cartopy/__init__.py", line 107, in <module>
  import cartopy.crs  # noqa: E402  module-level imports
  File "/opt/local/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/cartopy/crs.py", line 27, in <module>
  import cartopy.trace
  File "lib/cartopy/trace.pyx", line 56, in init cartopy.trace
ImportError: cannot import name lgeos
このエラーは、cartopyのインポート時に内部でインポートされるcartopy.traceでlgeosをインポートできないことを表しています。このlgeosがshapely.geosに含まれていないため、以下でも同じエラーとなります。
>>> from shapely.geos import lgeos
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  ImportError: cannot import name 'lgeos' from 'shapely.geos'  (/opt/local/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/shapely/geos.py)
解決策としては、shapelyのバージョンを次のように1.8.5に戻します。コマンド中のpy310はpythonのバージョンに合わせて読み替えてください。
インストールされているバージョンの確認
% port installed py310-shapely
The following ports are currently installed:
  py310-shapely @1.8.5_1
  py310-shapely @2.0.1_1 (active)
現在のバージョンをdeactivateし、1.8.5_1をactivate
% sudo port deactivate py310-shapely
% sudo port activate py310-shapely @1.8.5_1
確認
% port installed py310-shapely
The following ports are currently installed:
  py310-shapely @1.8.5_1 (active)
  py310-shapely @2.0.1_1


matplotlibのimportエラー(2023/04/09)

MacPortsで導入したPython3.9でmatplotlibをimport(import matplotlib.pyplot)する際に
ModuleNotFoundError: No module named 'importlib_resources'
が出ることがあります。

回避するためには、次のようにimportlib_resourcesを追加します。
% sudo port install py39-importlib-resources


cartopyの地図データ取得時の不具合解消(2021/09/03)

cartopyでは、最初に地図を描く際に地理情報データを取得しています。取得する地理情報データは、Natural Earth地図データでですが、データを提供しているサーバへアクセスできない状態になっていたため、新規ダウンロードが発生する場合にはエラーとなっていました。本日、Natural Earth地図データへのアクセスが再開し、現在は正常に描画できるようになりました。


Basemapで南極大陸を描く際の不具合について(2021/07/31)

Basemap1.2.2で行われた更新後に、一部の図法で南極大陸が描かれないか東半球側にしか描かれない不具合が発生しています。 現在確認しているものは、正距円筒図法、モルワイデ図法、ロビンソン図法、ランベルト正積円筒図法、ミラー図法です。なお、正射投影図法、ランベルト正角円錐図法、極投影図法、正距方位図法については問題なく作図できています。

回避するためには、次のように経度の中心を-180°とします。2023/01現在、東経/西経180°のみ正常に作図できます。
m = Basemap(projection='cyl', lon_0=-180)
(正距円筒図法の場合)


気象庁HP更新に伴うサンプルプログラムの動作確認について(2021/02/24)

本日13時に気象庁ホームページが大幅に更新され、各種リンクが変更となりました。 「気象データ解析のためのmatplotlibの使い⽅」のサンプルプログラムでは、気象庁ホームページのデータをスクレイピングしていることから、ホームページリニューアル後に動作確認を行いました。スクレイピングしているアメダスデータのリンクに変更がないため、現時点でサンプルプログラムが正常に動作することを確認できました。
一方、imshow_sample2.pyに限っては、ひまわりの可視・赤外画像をダウンロードしており、リニューアルに伴うリンク切れにより、現在は正常にダウンロードを行うことができません。
*2021/09/03版時点で地図データ取得時の不具合が解消されました


macOS Big Sur対応について(2020/11/27)

macOS Big Sur対応のMacPortsが11/15に提供開始されました。MacPortsを使いpython3.8の更新をテストしていましたが、現時点で「気象データ解析のためのmatplotlibの使い⽅」のサンプルプログラムの実行に必要な環境が整っていることを確認できました。
なおBasemapは修正が行われていませんので、コードの修正が必要です。また、次のような警告が出ることがあります。
/opt/local/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/pyproj/__init__.py:73: UserWarning: Valid PROJ data directory not found. Either set the path using the environmental variable PROJ_LIB or with `pyproj.datadir.set_data_dir`.
  warnings.warn(str(err))
この場合には、
export PROJ_LIB=/opt/local/lib/proj7/share/proj
を行います。


Basemapをインポートできない不具合の解決方法(2020/07/25)

2020年7月20日頃のアップデートに伴い、MacPortsでインストールされるmatplotlibがバージョン3.2.2から3.3.0になりました。それに伴いmatplotlib.cbookではdedent関数が削除されました。 他方、Basemapはバージョン1.2.1のまま更新されないので、mpl_toolkits.basemapをインポートしようとした際に、存在しないdedent関数を呼び出そうとしてエラーが発生します。このエラーはBasemap使用時に不可避な部分で発生しており、既にアップデートが適用されてしまった場合には、修正を行わないとBasemapが使用できません
以下は、pythonバージョン3.8の場合に出力されるエラーの内容です。バージョン3.6や3.7でも同様のエラーが発生します。
File"/opt/local/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/mpl_toolkits/basemap/__init__.py", line 50, in <module>
from .proj import Proj
File"/opt/local/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/mpl_toolkits/basemap/proj.py", line 6, in <module>
from matplotlib.cbook import dedent
ImportError: cannot import name 'dedent' from 'matplotlib.cbook' (/opt/local/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/matplotlib/cbook/__init__.py)
*Basemapバージョン1.2.2で修正されました


Pandas1.0.0のDataFrameで.ix廃止(2020/02/05)

2020年2月最初のMacPortsで導入されるpandas-1.0.0では、以前のバージョン0.7.3までwarningが出るものの使用できたDataFrameの.ixが廃止されました。
それに伴い、pythonで.ixを使うプログラムを実行すると、次のようなエラーが発生します。
"/opt/local/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/pandas/core/generic.py", line 5273, in __getattr__
  return object.__getattribute__(self, name)
AttributeError: 'DataFrame' object has no attribute 'ix'

*DataFrameで.ixを利用している場合、スクリプト実行時のWarning表示を消すに記載された方法で、.locか.ilocに変更する必要があります。
サンプルプログラムやドキュメントの該当箇所の更新は、しばらくお待ちください。

*2020/02/23版のサンプルプログラムで対応しました


解決法:正射投影図法で北緯45度より北側を中心にした場合の不具合(2020/02/01)

2019年12月10日頃から発生している正射投影図法で北緯45度より北側を中心にした場合の不具合について、GitHubに修正方法が記載されたことを、NOAAの方に教えて頂きました。
Basemap1.2.1のコード(MacPortsで導入したpython3.8の場合、/opt/local/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/mpl_toolkits/basemap/__init__.py)について、1428行目と1429行目の間に次の1行を挿入する修正を行います。パスの3.7の部分はpythonのバージョンによって異なり、バージョン3.6.xなら3.6、バージョン3.7.xなら3.7です。
b = np.where(np.isposinf(np.where(np.isneginf(b),-1.e20,b)),1.e20,b)
*Basemapバージョン1.2.2で修正されました


正射投影図法で北緯45度より北側を中心にした場合の不具合(2019/12/12)

2019年12月10日頃から、Basemapの正射投影図法で作図を行う際に、中心の緯度(lon_0)を北緯45度より北側に指定すると、次のようなエラーでpythonが落ちるようになっています。なお、テストした際のGEOSはバージョン3.8.0、Basemapは1.2.1です(MacPorsで導入される最新版)。
GEOS_ERROR: b'IllegalArgumentException: CGAlgorithmsDD::orientationIndex encountered NaN/Inf numbers'
Segmentation fault: 11
現在のところ、lon_0の範囲を-90から45までにするしか回避方法はありません。

*Basemapバージョン1.2.2で修正されました


Basemap1.2.1で一連の不具合解消(2019/11/08)

2019年10月から11月始め頃のMacPorts更新の際に適用されるBasemapのバージョンが、1.2.0から1.2.1へ更新されました。それにより、Basemapで発生していた以下の不具合が解消されています。
2019年4月頃から発生しているepsgファイル読み込みの不具合
2019年8月頃から発生しているtriオプションの問題
現時点の最新版であるmatplotlibバージョン3.1.0+Basemap1.2.1への更新を推奨します。
python3.6では、py36-matplotlib、py36-matplotlib-basemapのパッケージ名、python3.7では、py37-matplotlib、py37-matplotlib-basemapのパッケージ名です。


ログプロットの不具合がmatplotlib3.1.1で解消(2019/08/30)

2019年5月末から6月始め頃のmatplotlibの更新後(バージョン3.1.0)、y軸をログスケールに取りy軸の値を逆転させた場合(例えば、10 hPaを上端、1000 hPaを下端に取る場合)、正しく設定を行なってもy軸の値が逆転しない(10 hPaが下、1000 hPaが上のまま)という問題が発生していました。なお、ログスケールに設定しない場合には問題は発生していません。この問題は、2019年8月末のmatplotlib-3.1.1への更新時に解消されました。バージョン3.1.0で不具合が発生している場合には、バージョン3.1.1へ更新してください。
なおMacPortsによる自動更新(port upgrade outdated)を行った場合には、2019年4月頃から発生しているbasemapの問題Basemapでtriオプション使用不可となる問題が引き続き発生するため、自動更新は推奨されません。


MacPorts更新後のBasemapでtriオプション使用不可(2019/08/22)

最近のMacPortsの更新でqhullライブラリが更新され、Basemapとの不整合が生じています。そのために、MacPortsで更新(port upgrade outdated)を行うと、Basemapのm.contour()やm.contorf()等でtri=Trueとした場合、以下のエラーが発生します。現時点ではエラー回避のための更新がMacPortsから提供されていないため、更新は推奨されません。2019年4月頃から発生しているbasemap問題も引き続き発生します。
QH6249 qh_lib_check: Incorrect qhull library called.  Size of qhT for caller is 2792, but for qhull library is 2896.
QH6256 qhull internal error (qh_lib_check): Cannot continue due to QH6249..  Library 'qhull 7.3.2 (2019.1 2019/06/21)' should use a static qhT (e.g., libqhull.so).  It may be out-of-date.  Exit with 49
*basemap1.2.0で不具合が解消された(2019/11/08)


MacPorts更新後のBasemapエラー(2019/05/23)

2019年4月頃のpyprojの更新(バージョン2.1.3)の際、内部で使用されるprojのバージョンが5から6に更新され、同時にpyproj.pyproj_datadirが廃止されています。その影響で、MacPortsで更新(port upgrade outdated)を行うと、Basemapの読み込み時に以下のエラーが発生します。現時点ではエラー回避のコードがMacPortsから提供されていないため、更新は推奨されません。
Traceback (most recent call last):
  File "ファイル名", line 9, in <module>
  from mpl_toolkits.basemap import Basemap
  File "/opt/local/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/mpl_toolkits/basemap/__init__.py", line 152, in <module>
  epsgf = open(os.path.join(pyproj.pyproj_datadir,'epsg'))
AttributeError: module 'pyproj' has no attribute 'pyproj_datadir'
*basemap1.2.0で不具合が解消された(2019/11/08)


Basemapでimportエラー(2018/12/18)

MacPortを使い2018/10/18現在のmatplotlib最新版(3.0.0)に更新した場合、basemap-1.1.0でmatplotlib.cbook内のis_scalarをimportできない不具合が発生します。
この更新でmatplotlib.cbook内のis_scalarがis_scalar_or_stringに変更されました。一方で、basemap(ver. 1.1.0)の方ではimportする設定が変更されていない不一致があります。バグfixが出るまでは、以下のようにコードを修正することで対応可能です。

ファイル:/opt/local/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/mpl_toolkits/basemap/__init__.py


17行目
# from matplotlib.cbook import is_scalar, dedent
from matplotlib.cbook import is_scalar_or_string, dedent
4987行目
# elif masked and is_scalar(masked):
elif masked and is_scalar_or_string(masked):
basemap1.2.0で不具合が修正された(2019/11/08)




[top]