在matplotlib中,我可以使用pyplot.xscale()或设置轴缩放Axes.set_xscale().这两个函数都接受三种不同的尺度:'linear'| 'log'| 'symlog'.
'log'和之间有什么区别'symlog'?在我做过的简单测试中,它们看起来完全相同.
我知道文档说它们接受不同的参数,但我仍然不明白它们之间的区别.有人可以解释一下吗?如果它有一些示例代码和图形,答案将是最好的!(另外:'symlog'这个名字来自哪里?)
我目前正在使用logscale,以便更有可能绘制我的数据.不过,我的数据也包含零值.我知道这些零值在logscale上不起作用,因为没有定义log(0).
所以,例如,
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot([0,1,2],[10,10,100],marker='o',linestyle='-')
ax.set_yscale('log')
ax.set_xscale('log')
Run Code Online (Sandbox Code Playgroud)
完全省略零值.这种行为可以接受吗?至少应该有某种警告.我只是意外地认出来了.是否还有一种在logscale中绘制零值数据的方法?
谢谢!
PS:我希望这适合stackoverflow.我没有找到matplotlib的邮件列表.
我正在绘制具有渐近尾部的剂量 - 反应曲线.我真的想在显示0的图中包括载体(对照)剂量
0通常计算为.0000000001的剂量 - 这些图中的常见做法.
我真的很喜欢下面的图像显示这个,图像是从pdf中获取的,如何使用该程序绘图:GraphPad:PRISM
旁注:我已经找到了如何使用基本图形,但不使用ggplot2.
关于matlab提出了类似但不同的SE问题:这里
我的R代码如下:
library(ggplot2)
library(scales)
ggplot(df, aes(x=dose,y=probability, group=model))+
geom_ribbon(aes(ymin=Lower,ymax=Upper,x=dose,
fill=model, col=model,alpha=2))+
#Axis log transformation:
annotation_logticks(scaled = TRUE,sides="b") +
scale_x_log10(breaks = 10^(-1:10),
labels = trans_format("log10", math_format(10^.x)))+
#Axes labels:
labs(x="dosage (log scale)", y="response",size=1)
Run Code Online (Sandbox Code Playgroud)
数据:
df<-structure(list(dose = c(1.0000001, 1.04737100217022, 1.09698590648847,1.14895111335032, 1.20337795869652, 1.26038305255123, 1.32008852886009,1.38262230716338, 1.44811836666478, 1.51671703328309, 61.5098612858473,64.4236386159454, 67.4754441930906, 70.6718165392165, 74.0196039119089,77.525978976861, 81.1984541753771, 85.0448978198478, 89.073550951683,93.2930449978201, 97.7124202636365, 102.341145301888, 107.189137199173,112.266782823381, 117.584961077656, 123.155066208544, 128.98903221828,135.099358433491, 141.499136285126, 148.202077356965, 155.222542762819,162.575573915347, 6294.98902185499, 6593.18830115198, 6905.51354792318,7232.63392192496, 7575.25028161186, 7934.09668573241, 8309.9419660568,8703.59137460616, 9115.88830891252, 9547.71611900591, 10000),probability = c(0.000541224108467882, …Run Code Online (Sandbox Code Playgroud)