将水平图上的数字刻度线更改为字母
我正在研究我的地块的一些细节,但我发现了一个我无法绕过的细节。我的关卡上有数字刻度线。现在我希望 y 轴上的刻度线更改为相应的字母。 (即1 = A,5 = E,27 = AA,29 = AC,...)
我已经使用过
scales=list(
y=list(alternating=3,labels=toupper(c(letters[1],letters[5],letters[10],letters[15])))))
但我希望它们根据Y轴上的内容而不是我给出的值进行更改。 有人可以帮我解决这个问题吗?
levelplot(volcano,main="levelplot(volcano)")
I'm working on on some details on my plots and I've found one I can't get around. On my levelplot are numeric tickmarks. Now I want my tickmarks on the y-axis to be changed to the corresponding Letters. (i.e. 1=A, 5=E,27=AA, 29=AC,...)
I've already used
scales=list(
y=list(alternating=3,labels=toupper(c(letters[1],letters[5],letters[10],letters[15])))))
But I want them to change depending on what's on the Y-axis, not from values I'm giving.
Can anybody help me on this one?
levelplot(volcano,main="levelplot(volcano)")
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
不是通用解决方案。使用
pretty
自行计算at
。Not general solution. Use
pretty
to computeat
by self.关于聊天的一些讨论表明
levelplot()
可以很好地处理热图情况(其中一个或两个变量是离散/分类的)。因此,我们只需要将数据转换为正确的格式即可。一种方法是至少将 y 坐标存储为具有适当级别设置的因子。首先,沿着OP的数据模拟一些数据:
这给出了:
expand.grid()
调用的原因是levelplot()
,当通过我即将使用的公式方法需要每个数据点(在本例中为 900 个)有一个Y
和一个X
。然后,可以通过
levelplot()
中的简单公式轻松生成该图:生成以下内容:
Some discussion on chat indicates
levelplot()
handles the heatmap case (where one or both variables are discrete/categorical) just fine. Therefore, we just need to get the data into the correct format. One way to do that is to store at least they
coordinate as a factor with the appropriate levels set.First, simulate some data along the lines of the OP's data:
which gives:
The reason for the
expand.grid()
call is thatlevelplot()
, when used via the formula method, which I am about to make use of, needs aY
and aX
for each data point (900 of them in this case).The plot is then easy to produce via a simple formula in
levelplot()
:which produces this: