R:用图表包绘制马尔可夫模型(修改图表)
R: Drawing markov model with diagram package (making diagram changes)
我有以下代码使用包 heemod
(用于矩阵)和包 diagram
(用于绘图)绘制转移概率图。以下代码使用我生成的数据生成这样的图表:
library('heemod')
library('diagram')
mat_dim <- define_transition(
state_names = c('State_A', 'State_B', 'State_C'),
.18, .73, .09,
.12, .10, .78,
.58, .08, .33);
plot(mat_dim)
这将创建以下图:
我的问题都是因为我对diagram
包的理解太差,搞不懂这些看似简单的适配...
如何移动 State_B 处的箭头(例如向一侧移动 90 度),使其不与其他箭头重叠?有没有一种简单的方法可以使各州靠得更近?
见?plotmat
。
- 参数
curve
,一个矩阵,用于控制 "non-self" 转换的曲率
- 参数
self.shiftx
和 self.shifty
来控制自转换的位置
- 参数
self.arrpos
控制自箭头的位置
这真不容易。这是我反复试错得到的
curves <- matrix(nrow = 3, ncol = 3, 0.05)
plot(mat_dim,
curve=curves,
self.shiftx = c(0.1,-0.1,0),
self.shifty = c(-0.1,-0.1,0.15),
self.arrpos = c(1,2.1,1))
我有以下代码使用包 heemod
(用于矩阵)和包 diagram
(用于绘图)绘制转移概率图。以下代码使用我生成的数据生成这样的图表:
library('heemod')
library('diagram')
mat_dim <- define_transition(
state_names = c('State_A', 'State_B', 'State_C'),
.18, .73, .09,
.12, .10, .78,
.58, .08, .33);
plot(mat_dim)
这将创建以下图:
我的问题都是因为我对diagram
包的理解太差,搞不懂这些看似简单的适配...
如何移动 State_B 处的箭头(例如向一侧移动 90 度),使其不与其他箭头重叠?有没有一种简单的方法可以使各州靠得更近?
见?plotmat
。
- 参数
curve
,一个矩阵,用于控制 "non-self" 转换的曲率 - 参数
self.shiftx
和self.shifty
来控制自转换的位置 - 参数
self.arrpos
控制自箭头的位置
这真不容易。这是我反复试错得到的
curves <- matrix(nrow = 3, ncol = 3, 0.05)
plot(mat_dim,
curve=curves,
self.shiftx = c(0.1,-0.1,0),
self.shifty = c(-0.1,-0.1,0.15),
self.arrpos = c(1,2.1,1))