r - 当在 R 中插值时,在 ggplot 中对数变换后出现曲线
问题描述
我创建了以下数据框
library(data.table)
require(wrapr)
library(readxl)
library(dplyr)
library(tidyr)
library(ggplot2)
library(plotly)
df <- data.frame("X_Frequency" = c(5, 10, 55, 180, 300, 360, 1000, 2000) ,
"X_Axis" = c(0.009185742, 0.207822221, 0.067542222, 0.002597778,
0.002597778, 0.001454756, 0.001454756 , 0.001454756))
接下来我们使用 ggplot 创建一个图表。我们还变换轴,以便获得对数值
B <- ggplot(data = df,
mapping = aes(x = df$X_Frequency, y = df$X_Axis)) +
geom_line() +
labs(x = "Frequency(Hz)", y="Axis")
B <- ggplotly(B, dynamicTicks = TRUE)
B <- layout(B, yaxis = list(type = "log"))
B <- layout(B, xaxis = list(type = "log"))
B
结果图显示了由直线分隔的各个点。我在点之间添加了插值,如下所示
接下来我们在可用点之间创建一个插值
df$X_Slope2 <- 0### Initiate slope column
for(i in 2:nrow(df)){
df$X_Slope2[i] = (df$X_Axis[i] - df$X_Axis[i-1]) /
(df$X_Frequency[i] - df$X_Frequency[i - 1])
}
df_new <- bind_cols(
df %>%
select(X_Frequency, X_Axis, X_Slope2) %>%
complete(., expand(., X_Frequency = 5:2000))
)
接下来我创建了一个包含所有插值的新数据框
df241 <- df_new %>%
left_join(df) %>%
fill(c(X_Slope2), .direction = 'up') ##fill up slopes
for(i in 1: nrow(df241)){
if(is.na(df241$X_Axis[i]) == T){
df241$X_Axis[i] = df241$X_Slope2[i] *
(df241$X_Frequency[i] - df241$X_Frequency[i-1]) +
df241$X_Axis[i-1]
} else {
df241$X_Axis[i] = df241$X_Axis[i]
}
}
我们现在创建相同的情节
C <- ggplot(data = df241,
mapping = aes(x = df241$X_Frequency, y = df241$X_Axis)) +
geom_line() +
labs(x = "Frequency(Hz)", y="Axis")
C <- ggplotly(C, dynamicTicks = TRUE)
C <- layout(C, yaxis = list(type = "log"))
C <- layout(C, xaxis = list(type = "log"))
C
虽然没有对数变换,两个图都是相同的,但使用对数变换,与没有插值的第一个图相比,第二个图(带有插值)显示曲线而不是直线。
是否可以在没有弯曲性质的情况下生成带有插值的线。该线应与图 B 相同,但将鼠标悬停在图上时应该可以看到插值。请求某人指导我。
解决方案
推荐阅读
- wordpress - API 消耗问题 API 文档不完整或我不理解它的实现
- angular - Angular - NgRx 选择器通知数据更新
- spring-cloud - 为什么多节点配置服务器每次都从同一个节点获取配置
- java - JAVA 将本地时间 (GMT+8) 转换为 UTC 时间
- java - 处理依赖于 Spark 数据集中另一列的逗号分隔列
- javascript - 辅助函数在反应中覆盖映射列表中的先前值
- android-fragments - 如何使用导航组件在单个活动设计中使用偏好?
- python - 如何在 Python 中使用 Pandas 将不同的列组合成一个表
- c# - System.Data.SqlClient.SqlException (0x80131904): System.Net.Security.Native 错误出现在本地主机服务器上,但不在在线服务器上?
- python - Python中是否有任何包可以复制每个PDF页面并在Excel中粘贴为图像?