1D Lines,3D maps

ridge-map的Python项目详细描述


山脊图

Build StatusCoverage Status

山脊图

一个制作山脊图的图书馆…山脊。选择一个位置,得到一个海拔图,并修补它,使一些美丽的东西。深受Zach Cole's beautiful artJake Vanderplas' examples和Joy Division的1979 album "Unknown Pleasures"启发。

使用matplotlibSRTM.pynumpyscikit-image(用于湖泊检测)。

安装

可在PyPI

pip install ridge_map

或者在边缘安装github,使用

pip install git+git://github.com/colcarroll/ridge_map.git

想帮忙吗?

  • 我觉得在湖泊/道路/河流/海洋探测中,我遗漏了一些简单或明显的东西,但我所拥有的东西让我大部分时间都在那里。如果你破解了RidgeMap.preprocessor方法并找到了一些好的东西,我很想听听!
  • 你画了一张很酷的地图吗?打开代码的问题,我会将其添加到示例中。

示例

API允许你下载一次数据,然后自己编辑绘图, 或者允许默认处理器帮助您。

默认情况下,新罕布什尔州

使用所有默认值绘制时,应该会给您一张我最喜欢的山的地图。

fromridge_mapimportRidgeMapRidgeMap().plot_map()

png

下载一次并调整设置

首先下载高程数据以获得具有形状的数组 (num_lines, elevation_pts),然后可以使用预处理器 自动检测湖泊、河流和海洋,并缩放高程。 最后,还可以选择打印样式

rm=RidgeMap((11.098251,47.264786,11.695633,47.453630))values=rm.get_elevation_data(num_lines=150)values=rm.preprocess(values=values,lake_flatness=2,water_ntile=10,vertical_ratio=240)rm.plot_map(values=values,label='Karwendelgebirge',label_y=0.1,label_x=0.55,label_size=40,linewidth=1)

png

用颜色绘制!

如果你在策划一个被烧成橙色的小镇 理性,你可以尊重这个选择。

rm=RidgeMap((-97.794285,30.232226,-97.710171,30.334509))values=rm.get_elevation_data(num_lines=80)rm.plot_map(values=rm.preprocess(values=values,water_ntile=12,vertical_ratio=40),label='Austin\nTexas',label_x=0.75,linewidth=6,line_color='orange')

png

更多颜色的情节!

线条颜色接受一个matplotlib colormap,所以真的可以随便去镇上。

rm=RidgeMap((-123.107300,36.820279,-121.519775,38.210130))values=rm.get_elevation_data(num_lines=150)rm.plot_map(values=rm.preprocess(values=values,lake_flatness=3,water_ntile=50,vertical_ratio=30),label='The Bay\nArea',label_x=0.1,line_color=plt.get_cmap('spring'))

png

使用自定义字体和立面颜色打印!

你可以找到一个好的字体from Google,然后得到ttf文件in the github repo的路径。

如果传递matplotlib colormap,则可以指定kind="elevation"将山的顶部颜色与底部颜色不同。oceangnuplotbone看起来不错。

fromridge_mapimportFontManagerfont=FontManager('https://github.com/google/fonts/blob/master/ofl/uncialantiqua/UncialAntiqua-Regular.ttf?raw=True')rm=RidgeMap((-156.250305,18.890695,-154.714966,20.275080),font=font.prop)values=rm.get_elevation_data(num_lines=100)rm.plot_map(values=rm.preprocess(values=values,lake_flatness=2,water_ntile=10,vertical_ratio=240),label="Hawai'i",label_y=0.85,label_x=0.7,label_size=60,linewidth=2,line_color=plt.get_cmap('ocean'),kind='elevation')

png

如何找到边界框?

我一直在用this website。我找到一个我喜欢的区域,画一个矩形,然后将坐标复制并粘贴到RidgeMap构造函数中。

rm=RidgeMap((-73.509693,41.678682,-73.342838,41.761581))values=rm.get_elevation_data()rm.plot_map(values=rm.preprocess(values=values,lake_flatness=2,water_ntile=2,vertical_ratio=60),label='Kent\nConnecticut',label_y=0.7,label_x=0.65,label_size=40)

png

真正平坦的地方呢?

你可能真的需要调整water_ntilelake_flatness来获得正确的水。如果不想标记任何水,可以将其设置为0。

rm=RidgeMap((-71.167374,42.324286,-70.952454,42.402672))values=rm.get_elevation_data(num_lines=50)rm.plot_map(values=rm.preprocess(values=values,lake_flatness=4,water_ntile=30,vertical_ratio=20),label='Cambridge\nand Boston',label_x=0.75,label_size=40,linewidth=1)

png

瓦尔登湖怎么样?

在这张地图的右下角有一个令人愉快的水壶池,在西方的文字和思想中,它看起来非常舒适。

rm=RidgeMap((-71.418858,42.427511,-71.310024,42.481719))values=rm.get_elevation_data(num_lines=100)rm.plot_map(values=rm.preprocess(values=values,water_ntile=15,vertical_ratio=30),label='Concord\nMassachusetts',label_x=0.1,label_size=30)

png

你和其他的matplotlib人物玩得好吗?

当然!如果你真的想把一个风格化的海拔图放在你正在绘制的科学图上,我不会阻止你,而且会让你更容易。只需将ax的参数传递给RidgeMap.plot_map

importnumpyasnpfig,axes=plt.subplots(ncols=2,figsize=(20,5))x=np.linspace(-2,2)y=x*xaxes[0].plot(x,y,'o')rm=RidgeMap()rm.plot_map(label_size=24,background_color=(1,1,1),ax=axes[1])

png

用户示例

注释、更改背景色、自定义文本

此示例显示如何在地图上批注纬度/经度,并更新标签文本的颜色以允许使用深色背景。感谢kratsg的贡献。

importmatplotlibimportmatplotlib.pyplotaspltimportnumpyasnpbgcolor=np.array([65,74,76])/255.scipp=(-122.060510,36.998776)rm=RidgeMap((-122.087116,36.945365,-121.999226,37.023250))scipp_coords=((scipp[0]-rm.longs[0])/(rm.longs[1]-rm.longs[0]),(scipp[1]-rm.lats[0])/(rm.lats[1]-rm.lats[0]))values=rm.get_elevation_data(num_lines=150)ridges=rm.plot_map(values=rm.preprocess(values=values,lake_flatness=1,water_ntile=0,vertical_ratio=240),label='Santa Cruz\nMountains',label_x=0.75,label_y=0.05,label_size=36,kind='elevation',linewidth=1,background_color=bgcolor,line_color=plt.get_cmap('cool'))# Bit of a hack to update the text label colorforchildinridges.get_children():ifisinstance(child,matplotlib.text.Text)and'Santa Cruz'inchild._text:label_artist=childbreaklabel_artist.set_color('white')ridges.text(scipp_coords[0]+0.005,scipp_coords[1]+0.005,'SCIPP',fontproperties=rm.font,size=20,color="white",transform=ridges.transAxes,verticalalignment="bottom",zorder=len(values)+10)ridges.plot(*scipp_coords,'o',color='white',transform=ridges.transAxes,ms=6,zorder=len(values)+10)

png

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Swing JTable在前一行的函数中更改一行的背景色   java Hashmap:当我们放置相同的键时,map是如何工作的   使用java打开完整网页的url   java如何安全地将用户GUI输入数据传递给SwingWorker并使用该数据?   java地理记录器:无法在getFromLocation()中传递LatLng   java netty ChannelInboundHandlerAdapter以约1500字节的速度剪切帧   contextmenu操作后未更新java datatable   将AES加密从Java移植到Objective   Slick2D中的java跳跃难度   FLEX java。主路径反斜杠   做jframe。Java1.6中的setType(Window.Type.POPUP)   java无法生成实体管理器工厂   Java XML分割行间FRC   创建名为“ModelAccess”的bean时发生java错误,自动连线依赖项的注入失败;无法自动连线字段   java会话servlet在下拉菜单jsp上不起作用   java管理与maven相关的新版本和非PO库