2014-09-26 9 views
16

के साथ लॉग-लॉग प्लॉट मैं एक केबर्न संयुक्त ग्रिड ऑब्जेक्ट का उपयोग करके प्रत्येक धुरी से जुड़े केडीई और हिस्टोग्राम के साथ एक लॉगल प्लॉट बनाने की कोशिश कर रहा हूं। यह मुझे बहुत करीब ले जाता है, लेकिन हिस्टोग्राम डिब्बे लॉगस्पेस में अच्छी तरह से अनुवाद नहीं करते हैं। क्या सीमांत अक्षों को फिर से बनाने के बिना आसानी से ऐसा करने का कोई तरीका है?सीबर्न संयुक्तgrid

import seaborn as sns 
import matplotlib.pyplot as plt 
import numpy as np 

data = sns.load_dataset('tips') 
g = sns.JointGrid('total_bill', 'tip', data) 
g.plot_marginals(sns.distplot, hist=True, kde=True, color='blue') 
g.plot_joint(plt.scatter, color='black', edgecolor='black') 
ax = g.ax_joint 
ax.set_xscale('log') 
ax.set_yscale('log') 
g.ax_marg_x.set_xscale('log') 
g.ax_marg_y.set_yscale('log') 

Output of plot

+0

मुझे नहीं लगता है कि तुम क्या आप अब से किसी भी करीब मिल जाएगा है में bins= निर्धारित किया है। यह ऐसा कुछ है जो मुझे लगता है कि 'संयुक्त प्लॉट' को बेहतर तरीके से संभालना चाहिए, लेकिन मैं इसे जोड़ने से सावधान हूं क्योंकि मुझे यकीन नहीं है कि लोग वास्तव में क्या समझेंगे। क्या आप कह सकते हैं कि आप हिस्टोग्राम को किस तरह दिखाना पसंद करेंगे? लॉग स्पेस में लगातार चौड़ाई सलाखों? – mwaskom

+1

हाँ - निरंतर-चौड़ाई वाले बार शानदार होंगे। मुझे पता है कि ax.hist और np.logspace का उपयोग करके इसे कैसे किया जाए, लेकिन समुद्री तट के साथ उपयोग के लिए मुझे लगता है कि मैं आगे बढ़ने जा रहा हूं और डेटाफ्रेम में डेटा लॉग इन करूँगा और उसके बाद धुरी लेबल में 10^x लागू करें एक कामकाज एक तरफ ध्यान दें के रूप में, मैं करने के लिए के रूप में उलझन में हूँ क्यों सिर्फ कुल्हाड़ी = g.ax_joint ax.set_xscale ('लॉग ऑन') ax.set_yscale ('लॉग ऑन') स्वचालित रूप से सीमांत कुल्हाड़ियों निर्धारित नहीं करता है की स्थापना? प्रतिक्रिया के लिए धन्यवाद, यह एक अच्छा पैकेज है! – Koppology

+0

यह आश्चर्यजनक है। उन अक्षों को साझा किया जाता है जब समुद्री तट 'संयुक्त ग्रिड' सेट करता है, इसलिए यह matplotlib में एक असंगतता का सुझाव देता है। – mwaskom

उत्तर

12

लॉग हिस्टोग्राम के लिए मैं आम तौर पर np.logspace() साथ अपने स्वयं के डिब्बे सेट करने के लिए उपयोगी पाते हैं।

mybins=np.logspace(0,np.log(100),100) 

तो बस _marginals

data = sns.load_dataset('tips') 
g = sns.JointGrid('total_bill', 'tip', data,xlim=[1,100],ylim=[0.01,100]) 
g.plot_marginals(sns.distplot, hist=True, kde=True, color='blue',bins=mybins) 
g.plot_joint(plt.scatter, color='black', edgecolor='black') 
ax = g.ax_joint 
ax.set_xscale('log') 
ax.set_yscale('log') 
g.ax_marg_x.set_xscale('log') 
g.ax_marg_y.set_yscale('log') 

enter image description here

संबंधित मुद्दे