我遇到了一个简单的Python程序的问题,该程序用于使用matplotlib
和Basemap
绘制地图。我使用Basemap
网站上的示例代码:
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
m = Basemap(width=12000000,height=9000000,projection='lcc',
resolution=None,lat_1=45.,lat_2=55,lat_0=50,lon_0=-107.)
m.shadedrelief()
plt.show()
程序崩溃了,我收到以下消息:
分割故障(核心倾倒)
非常有趣的是,将近距离的行更改为:
m.etopo()
导致程序绘制地图。我不知道在哪里可以找到错误。是matplotlib吗?是基础吗?是Python吗?我的系统?有人可以帮忙吗?
我的版本:
python 2.7.3
matplotlib:1.3.1
BASEMAP版本:1.0.7
numpy版本:1.6.1
Linux:Ubuntu 12.04/64位
thanx很多!
我是我的情况,在示例中编译和执行IMShow-example文件夹有助于找到错误。
imshow.cpp
#define _USE_MATH_DEFINES
#include <cmath>
#include <iostream>
#include "../matplotlibcpp.h"
using namespace std;
namespace plt = matplotlibcpp;
int main()
{
// Prepare data
int ncols = 500, nrows = 300;
std::vector<float> z(ncols * nrows);
for (int j=0; j<nrows; ++j) {
for (int i=0; i<ncols; ++i) {
z.at(ncols * j + i) = std::sin(std::hypot(i - ncols/2, j - nrows/2));
}
}
const float* zptr = &(z[0]);
const int colors = 1;
plt::title("My matrix");
plt::imshow(zptr, nrows, ncols, colors);
// Show plots
plt::save("imshow.png");
std::cout << "Result saved to 'imshow.png'.n";
}
就我而言,我尝试绘制一些未分配的内存区域。