2011-11-12 4 views
1

matplotlib.pyplot.scatter를 사용하여 간단한 산점도를 그립니다. 그러나, 뭔가 잘못된 것이 나타나고 해결책을 찾을 수 없습니다. 다음은이 산점도를 그리는 코드입니다.분산 형 그림 그리기의 문제

# xActA, yActA, xActQ, yActQ are all lists with same dimensions. 
ax1 = scatter(xActA, yActA, color = 'blue',s = 20, label = 'Answers', linestyle = 'o') 
ax2 = scatter(xActQ, yActQ, color = 'black', s = 20, label = 'Questions', linestyle = 'o') 
ax1.set_label('Answers') 
ax2.set_label('Questions') 
xscale('log') 
yscale('log') 
title('User activity') 
xlabel('Number of posts') 
ylabel('Number of users') 
legend() 
f1.show() 
f1.savefig('figure7_test.png') 

그리고 플롯에는 점들이 포함되어 있지 않습니다. 여기

enter image description here

데이터이다

xActA = [0, 1, 2, 3, 4, 5, 6, 129, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 
      18, 147, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 
      35, 36, 39, 40, 7, 45, 46, 49, 50, 52, 53, 183, 59, 63, 65, 69, 
      70, 72, 73, 55, 77, 78, 84, 85, 43, 215, 88, 100, 94, 131, 167, 
      19, 375, 122, 125, 149] 

    len(xActA) = 70 

    yActA = [1212, 822, 194, 94, 61, 44, 24, 1, 26, 20, 11, 16, 10, 8, 5, 8, 
      5, 5, 3, 1, 4, 4, 5, 3, 2, 3, 4, 3, 1, 2, 2, 3, 2, 1, 2, 2, 2, 2, 
      31, 2, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
      1, 1, 1, 2, 1, 1, 2, 1, 1, 1, 1] 

    len(yActA) = 70 

    xActQ [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 29, 36, 40, 45, 48, 50, 55, 67, 124] 
    len(xActQ) = 34 

    yActQ [204, 242, 150, 50, 49, 27, 5, 9, 4, 2, 6, 3, 2, 8, 4, 5, 1, 3, 3, 1, 3, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] 
    len(yActQ) = 24 

둘째 오류는 다른 데이터 세트를 사용하여 발생된다. 나는 데이터를 확인하고있다 ... 이전의 불분명 한 설명을 유감스럽게 생각한다.

+0

를, 그것은 도움이 될 것입니다 'xRa'와'yRa'의 내용 (또는 내용의 일부)이 무엇인지 보여주는 질문. –

+1

왜 이것에'scatter '를 사용하고 있습니까? 분산 형은 3 차원 또는 4 차원 데이터를 2 차원으로 (색상 및/또는 크기를 변경하여) 그릴 수 있습니다. 방금'음모 '가 필요합니다. 그것 이외에, 당신은 당신이 당신의 이미지에 보여줄 인물을 생산하기 위해 많은 양의 코드를 생략하고있는 것처럼 보입니다. 여러분이 가지고있는 코드 스 니펫 (@lib 스타일은 @David가 이미 지적한 것처럼 'linestyle ='o '부분을 제외하고). 문제의 원인이되는 코드 부분을 생략하고 있습니다. –

+0

감사합니다. 실제로 저는 제가 본 플롯을 깨닫고 있습니다. 그리고 저는 그냥 산란을 사용하고 있다고 생각합니다. 그리고 예, 맞습니다. 범례가 범람을 사용하여 3 대신 2 개의 점으로 표시되기 때문에 시도 후에도 음모가 정확히 동일하게 나타날 수 있습니다. 그러나, 나는 아직도 왜 산란 음모에 아무것도 없는지 궁금하다. – AnneS

답변

2

데이터를 자세히 보면 대부분의 데이터 요소가 플롯 영역 (x = [1e2 : 1e3]; y = [1e2 : 1e4]) 외부에 있음을 알 수 있습니다. 대수 눈금 대신 선형 눈금을 사용하면 눈에 잘 띄지 않는 방식으로 산란 점을 볼 수 있습니다. 그러나 규모를 'symlog'로 변경 한 다음 'xlim'및 'ylim'을 사용하여 x 및 y 제한을 설정하면 완료됩니다. 물론 'scatter'를 실행할 때 마커가 'o'로 설정되어 있는지 확인해야합니다. 전체 코드를 확인하십시오.

from pylab import * 

# The data 
xActA = array([0, 1, 2, 3, 4, 5, 6, 129, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 
    18, 147, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 35, 36, 
    39, 40, 7, 45, 46, 49, 50, 52, 53, 183, 59, 63, 65, 69, 70, 72, 73, 55, 77, 
    78, 84, 85, 43, 215, 88, 100, 94, 131, 167, 19, 375, 122, 125, 149]) 
yActA = array([1212, 822, 194, 94, 61, 44, 24, 1, 26, 20, 11, 16, 10, 8, 5, 8, 
    5, 5, 3, 1, 4, 4, 5, 3, 2, 3, 4, 3, 1, 2, 2, 3, 2, 1, 2, 2, 2, 2, 31, 2, 1, 
    1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 2, 
    1, 1, 1, 1]) 

xActQ = array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 17, 18, 
    19, 20, 21, 22, 23, 24, 25, 29, 36, 40, 45, 48, 50, 55, 67, 124]) 
yActQ = array([204, 242, 150, 50, 49, 27, 5, 9, 4, 2, 6, 3, 2, 8, 4, 5, 1, 3, 
    3, 1, 3, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]) 

# The plots 
close('all') 
f1 = figure() 
ax1 = scatter(xActA, yActA, color='blue', s=20, label='Answers', marker='o') 
ax2 = scatter(xActQ, yActQ, color='black', s=20, label='Questions', marker='o') 
xscale('symlog') 
yscale('symlog') 
xlim([0, 1e3]) 
ylim([0, 1.5e3]) 
title('User activity') 
xlabel('Number of posts') 
ylabel('Number of users') 
legend() 
f1.show() 
f1.savefig('figure7_test.png') 

그리고 코드의 라인이 몇

당신이 깔끔한 그림 제공 : 편집하면 두 번째 문제 (A sequence`와 배열 요소를 설정`의 결과로 하나)에 대한 Results

3

문제는 linestyle='o'입니다. 'o' 지시문은 linestyle이 아닌 이므로 처음 두 줄에서는 linestyle을 으로 바꿉니다.

scatterhere에 대한 전체 마커 목록을 볼 수 있습니다.

+0

답변 해 주셔서 감사합니다. 나는 노력했다. 그리고 그것은 단지 두 번째 실수로 다시 돌아 간다. xRa 및 yRa의 내용을 게시했습니다. 실수를 찾도록 도와 주시겠습니까? :) – AnneS

+1

@AnneS 질문에 추가 한 데이터를 사용하여 질문의 두 번째 부분에 대한 예외를 재현 할 수 없습니다. 여러분의 질문에'scatter '에 대한 호출은'xRa'와'yRa'를 전달하지만'xActA'와'yActA'를 포함하도록 편집했습니다. 변수의 두 세트가 같은가요? –

+0

죄송합니다. 다른 이름을 사용합니다.예,이 두 세트의 변수는 같습니다. – AnneS

관련 문제