绘制 2 D 中每两点之间的距离
Plot the distance between every two points in 2 D
如果我有一个包含三列的 table,其中第一列代表每个点的名称,第二列代表数值数据(平均值),最后一列代表(第二列 + 固定数字)。以下是数据的示例:
我想绘制这个table所以我有下图
如果可能的话,我如何使用 Microsoft Excel 或 python 或 R (Bokeh) 绘制它。
好吧,我只知道ggplot2怎么弄,关于R我就在这里回答
这些方法仅在数据框采用您上面提供的格式时才有效。
我将你的列重命名为 Name.of.Method,Mean,Mean.2.2
准备
正在将 csv 数据加载到 R
df <- read.csv('yourdata.csv', sep = ',')
更改列名(如果您不想更改下面的代码,请执行此操作,否则您将需要遍历每个参数以匹配您的列名。
names(df) <- c("Name.of.Method", "Mean", "Mean.2.2")
方法 1 - 使用 geom_segment()
ggplot() +
geom_segment(data=df,aes(x = Mean,
y = Name.of.Method,
xend = Mean.2.2,
yend = Name.of.Method))
所以如你所见,geom_segment 允许我们指定行的结束位置(因此,xend 和 yend)
但是,它看起来与您上面的图像不相似。
线条形状似乎代表误差线。因此ggplot为我们提供了error bar的功能。
方法 2 - 使用 geom_errorbarh()
ggplot(df, aes(y = Name.of.Method, x = Mean)) +
geom_errorbarh(aes(xmin = Mean, xmax = Mean.2.2), linetype = 1, height = .2)
通常我们不会只是为了画一条线而使用这种方法。但是,它的功能符合您的要求。可以看到我们用xmin和ymin来指定行首和行尾。
height输入是调整两端线尾的bar的高度。
我会为此使用 hbar
:
from bokeh.io import show, output_file
from bokeh.plotting import figure
output_file("intervals.html")
names = ["SMB", "DB", "SB", "TB"]
p = figure(y_range=names, plot_height=350)
p.hbar(y=names, left=[4,3,2,1], right=[6.2, 5.2, 4.2, 3.2], height=0.3)
show(p)
但是,如果您真的想要晶须而不是区间条,Whisker 也是一个选项。
如果我有一个包含三列的 table,其中第一列代表每个点的名称,第二列代表数值数据(平均值),最后一列代表(第二列 + 固定数字)。以下是数据的示例:
我想绘制这个table所以我有下图
如果可能的话,我如何使用 Microsoft Excel 或 python 或 R (Bokeh) 绘制它。
好吧,我只知道ggplot2怎么弄,关于R我就在这里回答
这些方法仅在数据框采用您上面提供的格式时才有效。
我将你的列重命名为 Name.of.Method,Mean,Mean.2.2
准备
正在将 csv 数据加载到 R
df <- read.csv('yourdata.csv', sep = ',')
更改列名(如果您不想更改下面的代码,请执行此操作,否则您将需要遍历每个参数以匹配您的列名。
names(df) <- c("Name.of.Method", "Mean", "Mean.2.2")
方法 1 - 使用 geom_segment()
ggplot() +
geom_segment(data=df,aes(x = Mean,
y = Name.of.Method,
xend = Mean.2.2,
yend = Name.of.Method))
所以如你所见,geom_segment 允许我们指定行的结束位置(因此,xend 和 yend)
但是,它看起来与您上面的图像不相似。
线条形状似乎代表误差线。因此ggplot为我们提供了error bar的功能。
方法 2 - 使用 geom_errorbarh()
ggplot(df, aes(y = Name.of.Method, x = Mean)) +
geom_errorbarh(aes(xmin = Mean, xmax = Mean.2.2), linetype = 1, height = .2)
通常我们不会只是为了画一条线而使用这种方法。但是,它的功能符合您的要求。可以看到我们用xmin和ymin来指定行首和行尾。 height输入是调整两端线尾的bar的高度。
我会为此使用 hbar
:
from bokeh.io import show, output_file
from bokeh.plotting import figure
output_file("intervals.html")
names = ["SMB", "DB", "SB", "TB"]
p = figure(y_range=names, plot_height=350)
p.hbar(y=names, left=[4,3,2,1], right=[6.2, 5.2, 4.2, 3.2], height=0.3)
show(p)
但是,如果您真的想要晶须而不是区间条,Whisker 也是一个选项。