質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

1回答

563閲覧

エラーの解決方法がわからない

skp_1212

総合スコア0

Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

1グッド

0クリップ

投稿2022/02/09 04:51

コード全文

日本周辺の震源分布を Python / Plotly で3次元表示

データは USGS のサイトからCSV形式でダウンロードしてリネームしたものを読み込んでいる

https://earthquake.usgs.gov/earthquakes/search/

import numpy as np
import plotly.graph_objs as go
import plotly.offline as po
import pandas as pd
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt

#深さごとに色を変えるためのカラーマップ
colormap = plt.cm.jet_r(np.linspace(0, 1, 100))

po.init_notebook_mode(connected=False)
eye=dict(x=0, y=-1.1, z=1)

緯度経度で範囲を指定する

north = 45.595
south = 29.855
east = 147.393
west = 128.32

#データ読み込み
df = pd.read_csv('query.csv')

#データポイントの深さごとに色を決める
z=df['depth']
cd=np.int8(np.floor(z/np.max(z)*99))
cm=colormap[cd]

data=[]
#震源をプロット
data.append(go.Scatter3d(x=df["longitude"], y=df["latitude"], z=-df["depth"], opacity=1 , # x軸,y軸,z軸を指定
mode="markers", marker=dict(size=1.5**(df["mag"]-3.4),color=cm) ,line=dict(width=0.2,color='#a02020')))

#100kmごとに四角の枠を描く
for i in range(7):
data.append(go.Scatter3d(x=[west,west,east,east,west], y=[north,south,south,north,north], z=-i*np.array([100,100,100,100,100]), opacity=0.5,
mode="lines",line=dict(width=2,color='#d0d0d0')))
#深さの目盛りを表示
data.append(go.Scatter3d(x=np.ones(7)*east, y=np.ones(7)*south, z=np.arange(0,-601,-100), opacity=1,
mode="text",text=['0','100','200','300','400','500','600'],textfont=dict(color='#d0d0d0'),textposition='middle center'))

地図の表示

m = Basemap(llcrnrlat=south,urcrnrlat=north, llcrnrlon=west,urcrnrlon=east,resolution='i')
#海岸線の座標データを取り出してplot
for pg in m.coastpolygons:
data.append(go.Scatter3d(x=pg[0], y=pg[1], z=np.array(pg[0])*0, opacity=0.8,
mode="lines",line=dict(width=2,color='#e0e0e0')))

layout = go.Layout(
margin=dict(
l=0,r=0,b=0,t=0
),
scene=dict(aspectmode='manual',aspectratio=dict(x=1,y=1,z=0.25),xaxis=dict(visible=False),yaxis=dict(visible=False),zaxis=dict(visible=False),
camera = dict( up=dict(x=0, y=0, z=1),center=dict(x=0, y=0, z=0),eye=eye) ,hovermode=False),
showlegend=False,
paper_bgcolor='#101040'
)
fig = go.Figure(data=data, layout=layout)
po.iplot(fig)

from PIL import Image
Image.open('earthquake.png')

このようなエラーが出ます。

Traceback (most recent call last):

File "/opt/anaconda3/lib/python3.8/site-packages/IPython/core/interactiveshell.py", line 3437, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)

File "<ipython-input-2-5c7beb7627c9>", line 10, in <module>
from mpl_toolkits.basemap import Basemap

File "/opt/anaconda3/lib/python3.8/site-packages/mpl_toolkits/basemap/init.py", line 25, in <module>
from matplotlib import version as _matplotlib_version

File "/opt/anaconda3/lib/python3.8/site-packages/matplotlib/init.py", line 138, in <module>
from . import cbook, rcsetup

File "/opt/anaconda3/lib/python3.8/site-packages/matplotlib/cbook/init.py", line 89
[docs]class CallbackRegistry(object):
^
SyntaxError: invalid syntax

teratail-boy👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TakaiY

2022/02/09 05:11

エラーが文法ミス(SyntaxError: invalid syntax)で、pythonはインデックスが文法上で重要ですので、ソースコードの挿入方法に沿って(<code>ボタンで出てくる書式で)ソースコードを挿入しなおしてください。
guest

回答1

0

Python3のはずなのに、Python2系のmatplotlibが入っているようです。
正しくインストールすればこういうことは起こりません。

Pyhon3のmatplotlibをcondaコマンドでインストールしなおしてください。

投稿2022/02/09 06:59

ppaul

総合スコア24666

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問