আর-তে কিংবদন্তির আইটেমগুলির মধ্যে দূরত্ব হ্রাস হচ্ছে?


9

আমি প্যাকেজ choropleth()ব্যবহার করে আর-তে সঠিক মানচিত্র তৈরি করার চেষ্টা করছি GISTools। আমি choro.legend()আমার কিংবদন্তি প্রদর্শন করতে ব্যবহার করি। তবে আমি হয় সঠিক লেজেন্ড প্লেসমেন্ট তৈরি করতে পারি না, এবং / অথবা আমি fmtআমার choro.legend()ফাংশনে প্যারামিটারের ভূমিকা বুঝতে পারি না । এটি আমার কাছে মনে হচ্ছে fmtযা আমার কিংবদন্তির রঙ এবং বর্ণনার মধ্যে স্থান হ্রাস করতে পারে।

এখানে চিত্র বর্ণনা লিখুন

আমি choro.legend সহায়তা পৃষ্ঠাটি পেয়েছি যা জানিয়েছে fmtযে "উপরে চোরোপিল্থ শ্রেণির সীমাতে বর্ণিত মানগুলির জন্য সি স্টাইল বিন্যাস"

সুতরাং এটি কেবল আমার ক্লাসের মানগুলির সাথে কাজ করা উচিত, কিংবদন্তি আইটেমগুলির মধ্যেই দূরত্ব দ্বারা নয়?

বা মানুষের এর বোধগম্য অর্থ কী?

আমি কীভাবে আমার choro.legend()আইটেমগুলির মধ্যে দূরত্ব হ্রাস করতে পারি ?

choropleth(my.shp, nc.lI[,1], shading = income.shade)
choro.legend(-12919698, 5314317,income.shade,title='My title',cex=0.8, bty = "n", fmt = "%0.1f")

আমি এটি নিয়ে কিছুটা খনন / পরীক্ষা করেছি। আমি এটি সি-স্টাইলের স্ট্রিং ফর্ম্যাটিং কমান্ডগুলিতে পেয়েছি : stuff.mit.edu/afs/sipb/project/r-project/lib/R/library/base/… । তবে কিংবদন্তী আইটেমগুলির মধ্যে দূরত্বের কোনও প্রভাব আছে বলে মনে হয় না। আমি লক্ষ্য করেছি যে আপনার কোডে কিংবদন্তির শিরোনামটি 'আমার শিরোনাম' তবে আপনার চিত্রটিতে কিংবদন্তির শিরোনাম নেই। এখানে কোন সমস্যা হতে পারে? আমি এটি সন্দেহ কিন্তু এটি সন্ধান করা মূল্যবান।
হাফ

আরও পরিদর্শনে, "% 20.1f" এর মান ব্যবহার করে সত্যই বিস্তৃত কিংবদন্তি তৈরি হয় (আপনার মতো) এবং "% 0.1f" এর মান একসাথে খুব কাছাকাছি কিংবদন্তি আইটেমগুলির সাথে একটি উত্পাদন করে। তবে আপনি "% 0.1f" এর মান ব্যবহার করেন এবং আপনার আইটেমগুলি অনেক দূরে দূরত্বে রয়েছে। কেবলমাত্র আমি যা ভাবতে পারি তা হ'ল সম্ভাব্য সাদা স্থান আপনার মানগুলির সামনে প্যাডিং করবে তবে আমি জানি না যে আপনি এটি কেন রাখবেন।
হাফ

উত্তর:


3

fmtকিংবদন্তি আইটেমগুলির ফাঁক দিয়ে কোনও সম্পর্ক নেই। এর বিশদ বিবরণের জন্য fmtদয়া করে সি-স্টাইলের স্ট্রিং ফর্ম্যাটিং কমান্ডগুলি ব্যবহার করুন দেখুন । Rপার্থক্যগুলি দেখতে কেবল আপনার কনসোলে নিম্নলিখিত কোড স্নিপেট পেস্ট করুন (পাই ~ 3.14):

sprintf("%f", pi)
sprintf("%.3f", pi)
sprintf("%1.0f", pi)
sprintf("%5.1f", pi)
sprintf("%05.1f", pi)
sprintf("%+f", pi)
sprintf("% f", pi)
sprintf("%-10f", pi) # left justified
sprintf("%e", pi)
sprintf("%E", pi)
sprintf("%g", pi)
sprintf("%g",   1e6 * pi) # -> exponential
sprintf("%.9g", 1e6 * pi) # -> "fixed"
sprintf("%G", 1e-6 * pi)

choro.legend()legend()অভ্যন্তরীণ কল । কিংবদন্তি আইটেমগুলির মধ্যে অনুভূমিক ব্যবধান কমিয়ে আনার জন্য আপনাকে ফাংশনের text.widthপ্যারামিটারটি পরিবর্তন করা উচিত legend()। দুর্ভাগ্যক্রমে বাহ্যিকভাবে choro.legendসেট করার জন্য কোনও পরামিতি সরবরাহ করে না text.widthবরং এটি অভ্যন্তরীণভাবে গণনা করে। আমি একটি space_reductionপ্যারামিটার যুক্ত করেছি choro.legendএবং মূল ফাংশনটি সামান্য পরিবর্তিত করেছি:

choro.legend <- function (px, py, sh, under = "under", over = "over", between = "to", 
          fmt = "%g", cex = 1, space_reduction = 0, ...) 
{
  x = sh$breaks
  lx = length(x)
  if (lx < 3) 
    stop("break vector too short")
  res = character(lx + 1)
  res[1] = paste(under, sprintf(fmt, x[1]))
  for (i in 1:(lx - 1)) res[i + 1] <- paste(sprintf(fmt, x[i]), 
                                            between, sprintf(fmt, x[i + 1]))
  res[lx + 1] <- paste(over, sprintf(fmt, x[lx]))
  maxwidth <- max(strwidth(res)) - space_reduction
  temp <- legend(x = px, y = py, legend = rep(" ", length(res)), 
                 fill = sh$cols, text.width = maxwidth, cex = cex, ...)
  text(temp$rect$left + temp$rect$w, temp$text$y, res, pos = 2, 
       cex = cex)
}

একটি আর স্ক্রিপ্ট ফাইল এবং sourceএটিতে এই স্নিপেট সংরক্ষণ করুন । একটি পুনরুত্পাদনযোগ্য কোড স্নিপেট নিম্নলিখিতগুলির মতো হবে:

library(GISTools)

data(newhaven)
blocks

val <- blocks@data$POP1990
shade <- auto.shading(val)
choropleth(blocks, v= val, shade)
choro.legend(514000, 175000,shade,title='My Legend',cex=.8, bty = "n", fmt = "%0.0f",
             space_reduction=4000)

ধীরে ধীরে হ্রাস / space_reductionকাঙ্ক্ষিত ফলাফল অর্জনের জন্য প্যারামিটার বৃদ্ধি ।

এখানে চিত্র বর্ণনা লিখুন


উপরে উল্লিখিত হিসাবে choro.legnd ফাংশনটি ব্যবহার করার চেষ্টা করেছি, তবে আমি স্থান_আপনার জন্য নির্ধারিত মানটি বিবেচনা না করেই নিম্নলিখিত ত্রুটি বার্তাটি পেয়েছি: কিংবদন্তিতে ত্রুটি (x = px, y = py, কিংবদন্তি = রেপ ("", দৈর্ঘ্য ( পুনরায়)), ভরাট = শ $ কলস,: 'টেক্সট.উইথথ' অবশ্যই সংখ্যাসূচক হতে হবে,> = 0 আমার ফাংশন কলটি দেখতে হবে: choro.legnd (-85.80,45.3, tneffort.shades, শিরোনাম = 'প্রতি বছর ট্র্যাপনেট লিফট') , cex = 0.6, bty = "n", fmt = "% 0.0f", space_reduction = 4000) সমস্যার সমস্যার উত্স কি কেউ সনাক্ত করতে পারে?
ড্যারিল এইচ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.