मैं नीचे दिए गए कोड का उपयोग करके तीन कॉलम के साथ एक डेटासेट प्लॉट करने की कोशिश कर रहा हूं, लेकिन मुझे अक्ष पर सिर्फ नामों के साथ एक खाली आकृति मिलती है, क्या कोई मुझे बता सकता है कि मैं क्या गलत कर रहा हूं?

#rm(list=ls())
library(data.table)
library(wesanderson)
library(ggplot2)

exa <- fread("sample.csv", sep = "," ,header = T,  stringsAsFactors = FALSE)

pal <- wes_palette("Zissou1", 100, type = "continuous")
sp1<-ggplot(exa, aes(x=x, y=y, fill=z))+
geom_tile(show.legend = T)+
scale_fill_gradientn(colours = pal) + 
  scale_x_discrete(expand = c(0, 0)) +
  scale_y_discrete(expand = c(0, 0)) 
sp1

आंकड़े:

exa <- structure(list(x = c(0.457744, 0.492325, 0.49948, 0.471712, 0.504126, 
0.505528, 0.516318, 0.521419, 0.518354, 0.523001, 0.527301, 0.566585, 
0.411753, 0.427226, 0.446747, 0.43778, 0.432248, 0.444912, 0.462414, 
0.456952, 0.443462, 0.420683, 0.392057), y = c(25.69908, 25.65119, 
25.8332, 23.88982, 22.41502, 22.27553, 23.05898, 24.20714, 25.23666, 
25.35443, 25.78347, 27.20575, 20.94434, 21.62892, 22.61483, 22.49146, 
23.38523, 24.46414, 25.8023, 26.63754, 27.40164, 27.45981, 27.97814
), z = c(29.75408, 29.02752, 28.43744, 27.98952, 27.62504, 27.32658, 
27.04928, 26.77825, 26.53036, 26.28481, 26.04137, 25.80254, 28.5918, 
27.81994, 27.44201, 27.15059, 26.83333, 26.54576, 26.31531, 26.12999, 
25.88431, 25.65788, 25.47488)), class = "data.frame", row.names = c(NA, 
-23L))
0
ndichistan 11 जून 2020, 02:01

1 उत्तर

सबसे बढ़िया उत्तर

ठीक है, जैसा कि दूसरों ने कहा, शायद यह आपके डेटा को टाइल्स में दर्शाने का पसंदीदा तरीका नहीं है, बल्कि geom_point का उपयोग करें। उस स्थिति में, यहाँ कुछ ऐसा है जो काम करता है:

ggplot(exa, aes(x,y,color=z)) +
  geom_point(size=3) +
  scale_color_gradientn(colors = pal)

enter image description here

यदि आप अभी भी टाइलों का उपयोग करना चाहते हैं, जैसा कि अन्य ने उल्लेख किया है, तो आप टाइलें नहीं देख सकते क्योंकि वे बहुत छोटी हैं। आप width= और height= निर्दिष्ट करके उन्हें देखने के लिए बड़ा बना सकते हैं। चूँकि x और y अक्ष के लिए आपके पैमाने भिन्न हैं, यदि आप वर्गाकार-ईश टाइलें चाहते हैं तो आप समान संख्या निर्दिष्ट नहीं कर सकते। उसके लिए, आप अपने लिए ऐसा करने के लिए थोड़ा 'ओ गणित' का उपयोग कर सकते हैं। यहां कुछ ऐसा है जो काम करता है:

w= 0.02 * (max(exa$x)-min(exa$x))
h= 0.02 * (max(exa$y)-min(exa$y))

ggplot(exa, aes(x,y,fill=z)) +
  geom_tile(width=w, height=h) +
  scale_fill_gradientn(colors = pal)

enter image description here

BTW - भूखंड के पहलू अनुपात के कारण वहां की टाइलें अभी भी चौकोर नहीं हैं।

1
chemdork123 11 जून 2020, 23:51