2016-02-16 36 views
2

我在Julia中使用“PyPlot”包,并且想要在指定的位置添加网格线。我不太熟悉Python/Matlab使用他们的文档页面来帮助 - 这些命令在Julia中有所不同。我想一个基本的情节,使1间隔两轴网格线:Julia中的网格PyPlot

using PyPlot 
fig=figure("Name") 
grid("on") 
scatter([1,2,3,4],[4,5,6,7]) 

帮助赞赏...

回答

6

PyPlot仅仅是Matplotlib一个接口,所以命令 自定义网格是Matplotlib的命令。以1间隔(对于给定的数据)来配置在两个轴上的网格线

的一种方式是:

using PyPlot 

fig=figure(figsize=[6,3]) 
ax1=subplot(1,1,1) # creates a subplot with just one graphic 

ax1[:xaxis][:set_ticks](collect(1:4)) # configure x ticks from 1 to 4 
ax1[:yaxis][:set_ticks](collect(4:7)) # configure y ticks from 4 to 7 

grid("on") 
scatter([1,2,3,4],[4,5,6,7]) 

此代码是一个IJulia的笔记本内部测试,并且产生以下输出:

Output of plotting scatter 1,2,3,4 x 4,5,6,7

看看Various Julia plotting examples using PyPlot

与朱莉娅版0.4.3

+1

这是非常有帮助!作为进一步的请求,可以删除刻度标记(我想要一个细网格,而且我不想让数轴混杂在一起)......谢谢! – ADMD

+0

当然!要删除刻度标签,您可以使用命令:'ax1 [:xaxis] [:set_ticklabels]([])'和'ax1 [:yaxis] [:set_ticklabels]([])', ,并删除勾号标记:'ax1 [:xaxis] [:set_tick_params](which =“major”,length = 0)'和'ax1 [:yaxis] [:set_tick_params](which =“major”,length = 0)'。我还更新了答案,并提供了PyPlot使用的一些好例子的链接。我希望这会有所帮助:) – Gomiero

+1

辉煌...... – ADMD

2

其中网格线绘制可以通过传递一个阵列到xticks()yticks()功能进行控制的值进行测试。

一个简单的例子:

using PyPlot 
fig=figure("Name") 
grid("on") 

xticks(0:5) 
yticks(3:8) 

scatter([1,2,3,4],[4,5,6,7]) 

如果你希望它是更灵活,你可以计算出基于数据的限制和刻度间隔设置为别的东西。

一个小配置网格的x轴更加动态的方式可以是:

x_data = [1,2,3,4] 
x_tick_interval = 2; 
x_tick_start = minimum(xdata) 
x_tick_end = maximum(xdata) 
xticks(x_tick_start:x_tick_interval:x_tick_end)