使用不同位置的轴标签绘制ggplot中的网格线

时间:2016-04-13 15:55:09

标签: r plot ggplot2 axis-labels

我试图绘制一种叫做曼哈顿情节的东西,这是全基因组关联研究(基因组学)中常见的一种情节。在x轴上是碱基对中的位置,并且在y轴上是-log10(p值),图上的每个点代表特定的遗传多态性(突变)。每种颜色代表不同的染色体。

我有一个名为import numpy as np from scipy import linalg import math #on défini ici les residus def r(x,t,a,n): r = np.ones((1,n)) r[0,:] = a[0] - x0[0]*np.exp(-x0[1]*t) return(np.array(r)) #definition du jacobien def Jr(x,n,t): Jr = np.ones((n,2)) Jr[:,1] = t*x0[0]*np.exp(-x[1]*t) Jr[:,0] = -np.exp(-x[1]*t) return(Jr) def f(x,n): z = 0 t = 0 z = (r(x0,t,a,n))**2 for i in range (n): t = t + z[0][i] h = math.sqrt(t) return(h) #initialisation des variables t = np.array([500,1000,2000,3000,4000,5000,6300],dtype=float) a = np.array([14.5,13.5,12.0,10.8,9.9,8.9,8.0],dtype=float).T x0 = np.array([10,0.0001]) n = np.size(t) R = (x0,t,a,n) X = Jr(x0,n,t) e = 0.00001 k = 0 x = x0 np.dot(-Jr(x0,n,t).T,r(x0,t,a,n)) #while (1/2)*(f(x,n))**2 > e*(1/2)*(f(x0,n))**2: #s = linalg.solve(np.dot(Jr(x,n,t).T,Jr(x,n,t)),np.dot(- Jr(x,n,t).T,r(x,t,a,n))) #x = x + s.T #k = k + 1 #print(x) #print(k) 的数据框,变量data_geno包含沿x轴的位置,x_pos包含p值(用于确定y轴值)和{{ 1}}给出染色体编号(从1到26)。变量p字面上包含每个染色体的最大x轴位置。

从以下代码:

chr

我制作了这样的情节:

Manhattan plot

我想做的就是将x轴标签位置移动到各自点的中间位置(所以我不要依赖传奇),即我希望" 1&#34 ;坐在洋红色点的中间位置和" 2"坐在橙色点等中间... x轴刻度线和网格线位于正确的位置,我希望保留那些。

我已经意识到使用last_bp_vec的解决方案,但这并不起作用,因为它会将每个标签移动相同的数量,并且由于染色体的大小不同,我需要将每个标签移位一个不同的量。

我还在学习使用ggplot和(更一般地说)R,所以如果我做了一些可怕的错误或者有更简单的方法来实现我的目标,请纠正我。 39;我试图这样做!

任何帮助将不胜感激!

感谢。

0 个答案:

没有答案
相关问题