সংক্ষিপ্ত অক্ষ লেবেলগুলি প্লট করা বন্ধ করতে জোর করে চাপান - যেমন ggplot2 এ 1e + 00 +


111

Ggplot2 এ আমি অক্ষ লেবেল সংক্ষেপিত হওয়া কীভাবে থামাতে পারি - যেমন 1e+00, 1e+01এক্স অক্ষের সাথে একবার প্লট করা হয়েছিল? আদর্শভাবে, আমি আর কে সত্যিকারের মানগুলি প্রদর্শন করতে বাধ্য করতে চাই যা এই ক্ষেত্রে হবে 1,10

যে কোনও সহায়তা অনেক প্রশংসিত।

উত্তর:


134

আমি মনে করি আপনি এটি সন্ধান করছেন:

require(ggplot2)
df <- data.frame(x=seq(1, 1e9, length.out=100), y=sample(100))
# displays x-axis in scientific notation
p  <- ggplot(data = df, aes(x=x, y=y)) + geom_line() + geom_point()
p

# displays as you require
require(scales)
p + scale_x_continuous(labels = comma)

2
এটি কাজ করে। ধন্যবাদ. আগ্রহের বাইরে, স্কেল প্যাকেজ সহ ggplot2 এ অক্ষগুলির জন্য কী অন্যান্য 'লেবেল' বিকল্প রয়েছে?
জেপিডি

3
দয়া করে এই ggplot2.org পৃষ্ঠাটিও দেখুন , এটি একই ধরণের সমস্যা নিয়ে আমার পক্ষে খুব সহায়ক ছিল।
মার্টা কারাস

64

আপনি কি এরকম কিছু চেষ্টা করেছিলেন:

options(scipen=10000)

ষড়যন্ত্রের আগে?


3
এটি বৈজ্ঞানিক স্বরলিপি ব্যবহারের সিদ্ধান্ত নেওয়ার জন্য উচ্চতর জরিমানা নির্ধারণ করে কাজ করে । এই উত্তরে আরও ব্যাখ্যা: stackoverflow.com/a/18600721/1080804
ecoe

35

@ অরুন কী করেছে তার একটি আপডেট, যেহেতু আমি আজ এটি চেষ্টা করেছি এবং এটি কার্যকর হয়নি কারণ এটি বাস্তবে রূপান্তরিত হয়েছিল

+ scale_x_continuous(labels = scales::comma)

2
@ অরুণের উত্তর যেমন ঠিক তেমন কাজ করা উচিত তবে সম্ভবত আপনি এটিকে অন্তর্ভুক্ত করতে অবহেলা করেছেন require(scales)? এটি commaস্কেল ধারণ করে এমন প্যাকেজটি আমদানি করে । যেমন আপনি আবিষ্কার করেছেন, আপনি প্যাকেজটি আগে উল্লেখ করার পরিবর্তে উল্লেখ করার সময় নির্দিষ্ট করতে পারেন।
সিনকোডেনদা

17

আরও সাধারণ সমাধান হিসাবে আপনি scales::format_formatবৈজ্ঞানিক স্বরলিপি অপসারণ করতে পারেন । এটি আপনাকে আপনার লেবেলগুলি ঠিক কীভাবে প্রদর্শিত হতে চায় তার চারপাশে প্রচুর নিয়ন্ত্রণ দেয়, scales::commaযার বিপরীতে কেবলমাত্র মাত্রার ক্রমের কমা বিচ্ছেদ হয়।

উদাহরণ স্বরূপ:

require(ggplot2)
require(scales)
df <- data.frame(x=seq(1, 1e9, length.out=100), y=sample(100))

# Here we define spaces as the big separator
point <- format_format(big.mark = " ", decimal.mark = ",", scientific = FALSE)

# Plot it
p  <- ggplot(data = df, aes(x=x, y=y)) + geom_line() + geom_point()
p + scale_x_continuous(labels = point)

8

এমন একটি সমাধান রয়েছে যার জন্য আইশের লাইব্রেরি লাগবে না।

আপনি চেষ্টা করতে পারেন:

# To deactivate scientific notation on y-axis:

    p + scale_y_continuous(labels = function(x) format(x, scientific = FALSE))

# To activate scientific notation on y-axis:

    p + scale_y_continuous(labels = function(x) format(x, scientific = TRUE))

# To deactivate scientific notation on x-axis:

    p + scale_x_continuous(labels = function(x) format(x, scientific = FALSE))

# To activate scientific notation on x-axis:

    p + scale_x_continuous(labels = function(x) format(x, scientific = TRUE))

2

আর বৈজ্ঞানিক স্বরলিপি ব্যবহারের জন্য যে জরিমানাটি ব্যবহার করে সেটিকে নির্ধারণের সহজ সাধারণ সমাধানটি কি বেশি নয়?

উদাহরণস্বরূপ scipen()এমন একটি সংখ্যাতে সেট করুন যা আপনি স্বাচ্ছন্দ্য বোধ করছেন।

উদাহরণস্বরূপ, যদি চার্টে আপনার অক্ষটি সর্বোচ্চ 100,000 হওয়ার সম্ভাবনা থাকে তবে সেটিংসটি scipen(200000)নিশ্চিত করবে যে আর (এবং জিজিপ্লট) 200000 এর নীচে সমস্ত সংখ্যার জন্য মানক স্বরলিপি ব্যবহার করবে এবং জিজিপ্লট ফাংশনে কোনও লাইন যুক্ত করার প্রয়োজন হবে না।


0

ভগ্নাংশগুলিও অন্তর্ভুক্ত করার জন্য মূল প্রশ্নটি প্রসারিত করা, যেমন 1, 0.1, 0.01, 0.001 ইত্যাদি এবং অনুসরণীয় জিরোগুলি এড়ানো

p + scale_x_continuous(labels = function(x) sprintf("%g", x))
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.