का उपयोग करके एक पावर वक्र कैसे आकर्षित करें मैं पावर वक्र का पालन करने वाले कुछ डेटा को देखने के लिए ggplot2
का उपयोग करना चाहता हूं। इससे पहले पूछा गया है (Add exp/power trend line to a ggplot) लेकिन उत्तर वास्तव में मदद नहीं करता था।ggplot2
एक चाल एक वक्र बनाने के लिए stat_function()
का उपयोग करना है। हालांकि, मैं stat_function()
और लॉगरिदमिक स्केल के साथ काम करने के लिए अपने पावर वक्र प्राप्त करने में असमर्थ हूं।
मैं अपनी समस्याओं का वर्णन करता हूं।
नमूना डेटा और एक आधार साजिश बनाएँ:
library(ggplot2)
x <- 1:100
pwr <- function(x)x^-2.5
dat <- data.frame(x, y = pwr(x))
p <- ggplot(dat, aes(x = x, y = y)) +
geom_point()
p + stat_function(fun = pwr)
बढ़िया है, चलो एक coord_trans()
का उपयोग कर कुछ logaritmic तराजू जोड़ते हैं। यह पूरी तरह से काम करता है, सिवाय इसके कि मेरी सीधी रेखाएं अब सीधे नहीं हैं (ठीक उसी तरह जैसे दस्तावेज मुझे उम्मीद करने के लिए कहता है)।
p + stat_function(fun = pwr) + coord_trans(x = "log10", y = "log10")
तो, coord_x_log10()
और coord_y_log10()
साथ फिर से प्रयास है, लेकिन इस एक त्रुटि फेंकता है:
p + stat_function(fun = pwr) + scale_x_log10() + scale_y_log10()
Error in seq.default(min, max, by = by) :
'from' cannot be NA, NaN or infinite
यह सबसे तथ्य मैं समायोजित करने के लिए है कि के साथ क्या होने की संभावना है मेरे काम तराजू के प्रभाव को उलटने के लिए, लेकिन मैं इसे काफी समझ नहीं सकता।
मैं केवल logarithmix एक्स पैमाने के साथ यह कर सकते हैं:
p + scale_x_log10() + stat_function(fun = function(x)pwr(10^x))
मैं पता नहीं कैसे अगर मैं scale_y_log10()
जोड़ने y- मानों कन्वर्ट करना होगा।
मुझे शायद कुछ मौलिक याद आ रही है। क्या इस वक्र को साजिश करने का कोई आसान तरीका है?
तो 'ggplot2' हिस्सा एक सौदा ब्रेकर नहीं है, वहाँ एक पैकेज,' poweRlaw', कि यह करता है: https://cran.r-project.org/web /packages/poweRlaw/index.html। – ulfelder
बेवकूफ सवाल: मूल डेटा के साथ 'geom_point()' के अलावा 'geom_line()' करें और 'stat_function' का उपयोग न करें ...? – joran
दो समस्याएं: आपको शून्य/नकारात्मक मानों से बचने के लिए अक्ष सीमा निर्धारित करने की आवश्यकता है। उदा।, 'Scale_x_log10 (सीमा = सी (1, 200)) + scale_y_log10 (सीमा = सी (1e-5, 1)) '। हालांकि, 'stat_function' अक्ष परिवर्तन के साथ मिलकर काम नहीं करता है: http://stackoverflow.com/questions/9382032/ggplot2-scale-x-log10-destroys-doesnt-apply-for-function-plotted-via-stat- मजेदार – Roland